[
  "null",
  {
    "type": "record",
    "Aspect": {
      "name": "actionWorkflowInfo",
      "schemaVersion": 3
    },
    "name": "ActionWorkflowInfo",
    "namespace": "com.linkedin.pegasus2avro.actionworkflow",
    "fields": [
      {
        "Searchable": {},
        "type": "string",
        "name": "name",
        "doc": "Display name of the workflow"
      },
      {
        "Searchable": {},
        "type": {
          "type": "enum",
          "symbolDocs": {
            "ACCESS": "Workflow for requesting access to a resource, such as a dataset or data job.\nRequires the `access` field to be populated with specific access parameters.",
            "CUSTOM": "Custom, non-access related workflow. For example, may be used to model workflows like\nasset creation, asset cleanup or deletion, etc."
          },
          "name": "ActionWorkflowCategory",
          "namespace": "com.linkedin.pegasus2avro.actionworkflow",
          "symbols": [
            "ACCESS",
            "CUSTOM"
          ]
        },
        "name": "category",
        "doc": "Top-level category of the workflow, e.g. ACCESS"
      },
      {
        "Searchable": {},
        "type": [
          "null",
          "string"
        ],
        "name": "customCategory",
        "default": null,
        "doc": "Custom category for the workflow, if applicable.\n\nThis is used to group workflows that are not part of the standard types.\nShould be provided when the type is CUSTOM."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Description of the workflow. \nIf this is based on a Form trigger, this will be displayed to users when completing the form. "
      },
      {
        "type": {
          "type": "record",
          "name": "ActionWorkflowTrigger",
          "namespace": "com.linkedin.pegasus2avro.actionworkflow",
          "fields": [
            {
              "Searchable": {
                "fieldName": "triggerType"
              },
              "type": {
                "type": "enum",
                "symbolDocs": {
                  "FORM_SUBMITTED": "The only trigger type currently supported - a workflow request form is submitted successfully. \nThis enables admins to create forms and display them on various entrypoints. \nThe form is also captured in the field \"form\" below. "
                },
                "name": "ActionWorkflowTriggerType",
                "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                "symbols": [
                  "FORM_SUBMITTED"
                ]
              },
              "name": "type",
              "doc": "A type of step / task / node in the Action Workflow. "
            },
            {
              "type": [
                "null",
                {
                  "type": "record",
                  "name": "ActionWorkflowForm",
                  "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                  "fields": [
                    {
                      "type": {
                        "type": "array",
                        "items": {
                          "type": "record",
                          "name": "ActionWorkflowEntrypoint",
                          "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                          "fields": [
                            {
                              "Searchable": {
                                "fieldName": "entrypointType"
                              },
                              "type": {
                                "type": "enum",
                                "symbolDocs": {
                                  "ENTITY_PROFILE": " Visible on the entity profile page. For all valid entity types specified in the parent object. ",
                                  "HOME": " Visible on the home page to all users. "
                                },
                                "name": "ActionWorkflowEntrypointType",
                                "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                                "symbols": [
                                  "HOME",
                                  "ENTITY_PROFILE"
                                ]
                              },
                              "name": "type"
                            },
                            {
                              "type": "string",
                              "name": "label",
                              "doc": " The label for the entry point, which is displayed to users. This should be a user-friendly name that describes the action request. "
                            },
                            {
                              "type": [
                                "null",
                                {
                                  "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": {
                                                          "type": "array",
                                                          "items": "string"
                                                        },
                                                        "name": "values",
                                                        "default": [],
                                                        "doc": "Values to match against the field (one match suffices unless otherwise documented)."
                                                      },
                                                      {
                                                        "type": {
                                                          "type": "enum",
                                                          "symbolDocs": {
                                                            "ANCESTORS_INCL": "Represent the relation: URN field matches any nested parent in addition to the given URN",
                                                            "BETWEEN": "Represent the relation within an inclusive range, e.g. 3 <= ownerCount <= 5. Note that the values in Criterion must have two entries for a lower and upper bound.",
                                                            "CONTAIN": "Represent the relation: String field contains value, e.g. name contains Profile",
                                                            "DESCENDANTS_INCL": "Represent the relation: URN field any nested children in addition to the given URN",
                                                            "END_WITH": "Represent the relation: String field ends with value, e.g. name ends with Event",
                                                            "EQUAL": "Represent the relation: field = value, e.g. platform = hdfs",
                                                            "EXISTS": "Represents the relation: field exists and is non-empty, e.g. owners is not null and != [] (empty)",
                                                            "GREATER_THAN": "Represent the relation greater than, e.g. ownerCount > 5",
                                                            "GREATER_THAN_OR_EQUAL_TO": "Represent the relation greater than or equal to, e.g. ownerCount >= 5",
                                                            "IEQUAL": "Represent the relation: field = value and support case insensitive values, e.g. platform = hdfs",
                                                            "IN": "Represent the relation: String field is one of the array values to, e.g. name in [\"Profile\", \"Event\"]",
                                                            "IS_NULL": "Represent the relation: field is null, e.g. platform is null",
                                                            "LESS_THAN": "Represent the relation less than, e.g. ownerCount < 3",
                                                            "LESS_THAN_OR_EQUAL_TO": "Represent the relation less than or equal to, e.g. ownerCount <= 3",
                                                            "RELATED_INCL": "Represent the relation: URN field matches any nested child or parent in addition to the given URN",
                                                            "START_WITH": "Represent the relation: String field starts with value, e.g. name starts with PageView"
                                                          },
                                                          "name": "Condition",
                                                          "namespace": "com.linkedin.pegasus2avro.metadata.query.filter",
                                                          "symbols": [
                                                            "CONTAIN",
                                                            "END_WITH",
                                                            "EQUAL",
                                                            "IEQUAL",
                                                            "IS_NULL",
                                                            "EXISTS",
                                                            "GREATER_THAN",
                                                            "GREATER_THAN_OR_EQUAL_TO",
                                                            "IN",
                                                            "LESS_THAN",
                                                            "LESS_THAN_OR_EQUAL_TO",
                                                            "BETWEEN",
                                                            "START_WITH",
                                                            "DESCENDANTS_INCL",
                                                            "ANCESTORS_INCL",
                                                            "RELATED_INCL"
                                                          ],
                                                          "doc": "The matching condition in a filter criterion"
                                                        },
                                                        "name": "condition",
                                                        "default": "EQUAL",
                                                        "doc": "The condition for the criterion, e.g. EQUAL, START_WITH"
                                                      },
                                                      {
                                                        "type": "boolean",
                                                        "name": "negated",
                                                        "default": false,
                                                        "doc": "Whether the condition should be negated"
                                                      }
                                                    ],
                                                    "doc": "A criterion for matching a field with given values"
                                                  }
                                                },
                                                "name": "and",
                                                "doc": "A list of and criteria the filter applies to the query"
                                              }
                                            ],
                                            "doc": "A list of criterion and'd together."
                                          }
                                        }
                                      ],
                                      "name": "or",
                                      "default": null,
                                      "doc": "A list of disjunctive criterion for the filter. (or operation to combine filters)"
                                    },
                                    {
                                      "type": [
                                        "null",
                                        {
                                          "type": "array",
                                          "items": "com.linkedin.pegasus2avro.metadata.query.filter.Criterion"
                                        }
                                      ],
                                      "name": "criteria",
                                      "default": null,
                                      "doc": "Deprecated! A list of conjunctive criterion for the filter. If \"or\" field is provided, then this field is ignored."
                                    }
                                  ],
                                  "doc": "The filter for finding a record or a collection of records"
                                }
                              ],
                              "name": "filter",
                              "default": null,
                              "doc": "Optional predicate evaluated against the launching entity's attributes\nto decide whether this entrypoint is visible. When unset, the entrypoint\nis always visible for entities matching the workflow's entityTypes.\n\nOnly meaningful for ENTITY_PROFILE entrypoints \u2014 HOME entrypoints have\nno launching entity. The validator rejects filters referencing entity\nattributes on HOME-only workflows."
                            }
                          ],
                          "doc": "The entry point arguments for the action request workflow form.\n\nThe optional `filter` field, when set, evaluates a Filter against the\nlaunching entity's attributes; the entrypoint is hidden when the filter\nevaluates false. HOME entrypoints have no launching entity, so any filter\nreferencing entity attributes is rejected by the validator."
                        }
                      },
                      "name": "entrypoints",
                      "doc": "Entrypoints for form submission."
                    },
                    {
                      "Searchable": {
                        "/*": {
                          "fieldName": "entityTypes",
                          "fieldType": "URN"
                        }
                      },
                      "Urn": "Urn",
                      "urn_is_array": true,
                      "type": [
                        "null",
                        {
                          "type": "array",
                          "items": "string"
                        }
                      ],
                      "name": "entityTypes",
                      "default": null,
                      "doc": "The valid entity type URNs that can be associated with a Workflow Form.\nIf provided, this will require that an entity of one of the provided types is specified when completing the form.\n\nIf no entity types are provided, the workflow form can be submitted without specifying an entity. In general, this should\nbe populated for workflows of type ACCESS to enable users to request access to a specific entity!\n\nIf specified, the associated action requests for this workflow will contain an URN of the corresponding type inside of\nthe `resource` field.\n\nNote that associating multiple entities with a single Action Request is not yet supported."
                    },
                    {
                      "type": {
                        "type": "array",
                        "items": {
                          "type": "record",
                          "name": "ActionWorkflowField",
                          "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                          "fields": [
                            {
                              "type": "string",
                              "name": "id",
                              "doc": "Workflow-local id for the field"
                            },
                            {
                              "type": "string",
                              "name": "name",
                              "doc": "The display name or label for the field, for rendering"
                            },
                            {
                              "type": [
                                "null",
                                "string"
                              ],
                              "name": "description",
                              "default": null,
                              "doc": "The description for the field, for rendering"
                            },
                            {
                              "java": {
                                "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                              },
                              "Urn": "Urn",
                              "type": "string",
                              "name": "valueType",
                              "doc": "The urn of the value type for the values - reused from structured properties.\nAlso, used for rendering"
                            },
                            {
                              "Urn": "Urn",
                              "urn_is_array": true,
                              "type": [
                                "null",
                                {
                                  "type": "array",
                                  "items": "string"
                                }
                              ],
                              "name": "allowedEntityTypes",
                              "default": null,
                              "doc": "The urns for allowed entity types."
                            },
                            {
                              "type": [
                                "null",
                                {
                                  "type": "array",
                                  "items": {
                                    "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"
                                ]
                              },
                              "name": "cardinality",
                              "doc": "Whether or not multiple values are allowed."
                            },
                            {
                              "type": "boolean",
                              "name": "required",
                              "default": false,
                              "doc": "Whether the field is required or not."
                            },
                            {
                              "type": [
                                "null",
                                "com.linkedin.pegasus2avro.metadata.query.filter.Filter"
                              ],
                              "name": "filterCondition",
                              "default": null,
                              "doc": "Optional inclusion filter. When set, the field is shown only if the\nFilter evaluates true against the form state. See workflow expression\ndocs for the field-reference encoding (`formField:<id>` for form\nfields; plain attribute names for entity attributes).\n\nv2 replacement for the legacy `condition` slot. v2 clients write here.\nv1 clients continue writing the legacy `condition` slot; both slots\nmay coexist on read and the mapper emits both so v1 and v2 clients\neach see a usable predicate."
                            },
                            {
                              "deprecated": "Use `filterCondition` instead. Legacy v1 field-visibility condition; still accepted on writes for v1 client compatibility. Will be removed once v1 clients migrate.",
                              "type": [
                                "null",
                                {
                                  "type": "record",
                                  "name": "ActionWorkflowFieldCondition",
                                  "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                                  "fields": [
                                    {
                                      "type": {
                                        "type": "enum",
                                        "symbolDocs": {
                                          "SINGLE_FIELD_VALUE": "The field should be shown if the value of a previously completed field matches the specified value."
                                        },
                                        "name": "ActionWorkflowFieldConditionType",
                                        "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                                        "symbols": [
                                          "SINGLE_FIELD_VALUE"
                                        ]
                                      },
                                      "name": "type",
                                      "doc": "The type of field condition"
                                    },
                                    {
                                      "type": [
                                        "null",
                                        {
                                          "type": "record",
                                          "name": "ActionWorkflowSingleFieldValueCondition",
                                          "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                                          "fields": [
                                            {
                                              "type": "string",
                                              "name": "field",
                                              "doc": "The id / name of the field that the criterion refers to"
                                            },
                                            {
                                              "type": {
                                                "type": "array",
                                                "items": "string"
                                              },
                                              "name": "values",
                                              "default": [],
                                              "doc": "Values. one of which the intended field should match\nNote, if values is set, the above \"value\" field will be ignored"
                                            },
                                            {
                                              "type": "com.linkedin.pegasus2avro.metadata.query.filter.Condition",
                                              "name": "condition",
                                              "default": "EQUAL",
                                              "doc": "The condition for the criterion, e.g. EQUAL, START_WITH"
                                            },
                                            {
                                              "type": "boolean",
                                              "name": "negated",
                                              "default": false,
                                              "doc": "Whether the condition should be negated"
                                            }
                                          ],
                                          "doc": "A specific type of field condition that checks whether a field should be shown based on the value of a previously completed field."
                                        }
                                      ],
                                      "name": "singleFieldValueCondition",
                                      "default": null,
                                      "doc": "A field value condition. Present if type is FIELD_VALUE."
                                    }
                                  ],
                                  "doc": "A condition that determines whether a form field should be shown in the action workflow.\nThis may evolve in the future to have additional condition types."
                                }
                              ],
                              "name": "condition",
                              "default": null,
                              "doc": "LEGACY: v1 field-visibility condition. Still accepted on writes from\nv1 clients (`UpsertActionWorkflowResolver` routes\n`ActionWorkflowFieldInput.condition` here unchanged).\n\nThe mapper translates this into the v2 Filter shape for GraphQL\noutput when `filterCondition` is unset. Will be removed in a future\nrelease once all v1 clients migrate."
                            },
                            {
                              "type": [
                                "null",
                                {
                                  "type": "record",
                                  "name": "ActionWorkflowFieldValuesSource",
                                  "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                                  "fields": [
                                    {
                                      "type": {
                                        "type": "enum",
                                        "symbolDocs": {
                                          "CURRENT_USER_GROUPS": "Restrict selection to groups the current user is a member of."
                                        },
                                        "name": "ActionWorkflowFieldValuesSourceType",
                                        "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                                        "symbols": [
                                          "CURRENT_USER_GROUPS"
                                        ]
                                      },
                                      "name": "type",
                                      "doc": "The type of values source restriction to apply."
                                    },
                                    {
                                      "type": [
                                        "null",
                                        "string"
                                      ],
                                      "name": "nameRegex",
                                      "default": null,
                                      "doc": "A regex pattern applied to entity names. Only entities whose name matches this pattern will be shown."
                                    }
                                  ],
                                  "doc": "Specifies a dynamic source for field values, restricting the selectable set\nto a scoped subset rather than a general search."
                                }
                              ],
                              "name": "valuesSource",
                              "default": null,
                              "doc": "An optional dynamic source for field values. When specified, restricts\nthe selectable values to those from the specified source instead of showing\na general search."
                            },
                            {
                              "type": [
                                "null",
                                {
                                  "type": "record",
                                  "name": "FieldValidation",
                                  "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                                  "fields": [
                                    {
                                      "type": [
                                        "null",
                                        "string"
                                      ],
                                      "name": "pattern",
                                      "default": null,
                                      "doc": "Java-regex pattern the field's submitted string value must match.\nWhen the field is array-typed, every element must match. When the\nfield is absent or empty, validation is skipped (use `required` on\nthe field itself for presence)."
                                    },
                                    {
                                      "type": [
                                        "null",
                                        "string"
                                      ],
                                      "name": "errorMessage",
                                      "default": null,
                                      "doc": "Author-defined message returned to the client on validation failure.\nWhen absent, the server returns a generic \"Validation failed\" message."
                                    }
                                  ],
                                  "doc": "Submit-time validation rule for an ActionWorkflowField. Each field\ncarries at most one validation rule. Evaluation runs server-side at\nrequest creation time and returns a structured per-field error when\nthe value violates the rule.\n\nv1 supports regex pattern matching only. Length / required / range\nvalidation are tracked as future enhancements."
                                }
                              ],
                              "name": "validation",
                              "default": null,
                              "doc": "Optional submit-time validation rule. When set, the form submission is\nrejected if the field's value violates the rule, with\n`validation.errorMessage` returned to the client.\n\nIndependent of `required` and `cardinality` \u2014 those validate\nstructural presence; this validates semantic content."
                            },
                            {
                              "type": [
                                "null",
                                {
                                  "type": "record",
                                  "name": "DynamicSource",
                                  "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                                  "fields": [
                                    {
                                      "type": {
                                        "type": "array",
                                        "items": {
                                          "type": "record",
                                          "name": "DynamicResolver",
                                          "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                                          "fields": [
                                            {
                                              "type": "string",
                                              "name": "resolver",
                                              "doc": "Resolver identifier. Server-side allowlist + per-entry Java implementation\nin DynamicResolverRegistry. SCREAMING_SNAKE_CASE recipe-name convention.\n\nActor-context (returns CorpUser / CorpGroup / DataHubRole):\n  OWNERS_OF                       (1-hop)\n  DOMAIN_OWNERS_OF                (2-hop forward)\n  DATA_PRODUCT_OWNERS_OF          (2-hop forward)\n  APPLICATION_OWNERS_OF           (2-hop forward)\n  GLOSSARY_TERM_OWNERS_OF         (2-hop forward)\n  TAG_OWNERS_OF                   (2-hop forward)\n  CONTAINER_OWNERS_OF             (2-hop forward)\n\nField-context (returns URNs scoped to allowedEntityTypes):\n  TAGS_OF, APPLICATIONS_OF, DOMAIN_OF, DATA_PRODUCT_OF,\n  GLOSSARY_TERMS_OF, CONTAINER_OF (1-hop forward)\n  SIBLINGS_IN_DOMAIN, SIBLINGS_IN_DATA_PRODUCT,\n  SIBLINGS_IN_APPLICATION         (2-hop reverse)\n\nEach entry has a dedicated Java implementation in the registry.\nValidator allowlists per context (actor vs field)."
                                            },
                                            {
                                              "type": "string",
                                              "name": "source",
                                              "default": "launching",
                                              "doc": "Source of the entity to start from:\n  \"launching\"             \u2014 workflow's launching entity URN\n  \"field:<form-field-id>\" \u2014 URN value of an earlier URN-typed form field\n                             (same prefix convention as Criterion.field\n                              \"formField:<id>\" accepted in round 1)\n\nValidator enforces format, form-field existence, and URN-typing."
                                            }
                                          ],
                                          "doc": "Deferred URN-set resolution. Used in two contexts with the same shape:\n  - ActionWorkflowStepActors.dynamicSource.resolvers\n    (actor recipes return actor URNs)\n  - ActionWorkflowField.dynamicSource.resolvers\n    (field recipes return any-typed URNs scoped to allowedEntityTypes)\n\nResolved at request-creation (actors) or form-render (field options) time."
                                        }
                                      },
                                      "name": "resolvers",
                                      "doc": " Deferred URN-set resolvers. Empty array = no dynamic resolution. "
                                    },
                                    {
                                      "type": [
                                        "null",
                                        "com.linkedin.pegasus2avro.metadata.query.filter.Filter"
                                      ],
                                      "name": "filter",
                                      "default": null,
                                      "doc": "Optional destination-boundary predicate. Pushed down to entitySearchService.\nAbsent = always-true. Literal values only \u2014 no runtime context substitution."
                                    }
                                  ],
                                  "doc": "Resolves to a URN set at workflow-evaluation time. Used by:\n  - steps[N].actors.dynamicSource \u2014 resolves actor URNs for a step\n  - fields[N].dynamicSource       \u2014 resolves picker options for a URN-typed field\n\nComposition: result = (union over resolvers) \u2229 filter\n  - resolvers: each DynamicResolver entry produces a URN set; sets are\n    unioned together\n  - filter: optional Filter applied to the resulting URN set; same Filter\n    shape used by DynamicFormAssignment.filter,\n    AssertionAssignmentRuleFilter.filter, DataHubViewDefinition.filter"
                                }
                              ],
                              "name": "dynamicSource",
                              "default": null,
                              "doc": "Optional dynamic resolver for dropdown options. When set, the field's\noption set is computed at form-fill time by traversing the metadata\ngraph from the origin defined in `dynamicSource.simple.origin`.\n\nCoexists additively with `valuesSource`. Both filters apply when both\nare set."
                            }
                          ],
                          "doc": "A field inside an Action Workflow Form."
                        }
                      },
                      "name": "fields",
                      "doc": "Fields comprising the workflow request. These are the inputs / arguments required to trigger the workflow."
                    },
                    {
                      "type": [
                        "null",
                        {
                          "type": "array",
                          "items": {
                            "type": "enum",
                            "symbolDocs": {
                              "ADDITIONAL_NOTES": "The additional notes free-text field.",
                              "EXPIRATION_DATE": "The expiration date picker. Only rendered for ACCESS category workflows."
                            },
                            "name": "ActionWorkflowDefaultField",
                            "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                            "symbols": [
                              "EXPIRATION_DATE",
                              "ADDITIONAL_NOTES"
                            ],
                            "doc": "Identifies a default field that is automatically rendered in the workflow form UI.\nAdmins can configure workflows to exclude specific default fields via ActionWorkflowForm.excludedDefaultFields."
                          }
                        }
                      ],
                      "name": "excludedDefaultFields",
                      "default": null,
                      "doc": "Default fields that should be excluded from the workflow form UI.\nBy default, all applicable default fields are shown. Adding a value here hides the corresponding field."
                    }
                  ]
                }
              ],
              "name": "form",
              "default": null,
              "doc": "The form definition that will trigger the action workflow when submitted. "
            }
          ],
          "doc": "Defines the conditions on which the action workflow is triggered. \n\nCurrently we have only one trigger type, but we expect this to extend e.g. in the case that change events, proposals,\nor other actions can trigger workflows. \n\nCurrently, the workflow must have exactly 1 trigger condition. We don't expect this to change. "
        },
        "name": "trigger",
        "doc": "The action or event that triggers the workflow. This MUST be stored here, because there is no other\nplace to capture dynamic form state like this. "
      },
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "ActionWorkflowStep",
            "namespace": "com.linkedin.pegasus2avro.actionworkflow",
            "fields": [
              {
                "type": "string",
                "name": "id",
                "doc": "A unique identifier for this step within the workflow.\nThis ID must be unique within the workflow and is used to match values during workflow execution."
              },
              {
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "APPROVAL": "The only step type currently supported - a human review step. \nThis step type requires that an assigned user reviews an action request associated with this workflow. \nreviews the request, approving or denying it (currently the actions supported, may extend later). "
                  },
                  "name": "ActionWorkflowStepType",
                  "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                  "symbols": [
                    "APPROVAL"
                  ]
                },
                "name": "type",
                "doc": "A type of step / task / node in the Action Workflow. "
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "description",
                "default": null,
                "doc": "Optional description shown alongside the step to explain its purpose."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "ActionWorkflowStepActors",
                    "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                    "fields": [
                      {
                        "Urn": "Urn",
                        "urn_is_array": true,
                        "type": {
                          "type": "array",
                          "items": "string"
                        },
                        "name": "users",
                        "doc": "Users statically assigned to perform the review step."
                      },
                      {
                        "Urn": "Urn",
                        "urn_is_array": true,
                        "type": {
                          "type": "array",
                          "items": "string"
                        },
                        "name": "groups",
                        "doc": "Groups statically assigned to perform the review step."
                      },
                      {
                        "Urn": "Urn",
                        "urn_is_array": true,
                        "type": {
                          "type": "array",
                          "items": "string"
                        },
                        "name": "roles",
                        "doc": "Roles statically assigned to perform the review step."
                      },
                      {
                        "deprecated": "Use `dynamicSource.resolvers` (array[DynamicResolver]) instead. Legacy slot kept for v1 client compatibility; resolved at submit time by `StepActorsResolver`.",
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "deprecated": "Use `ActionWorkflowStepActors.dynamicSource.resolvers` (array[DynamicResolver]) instead. Legacy slot kept for v1 client compatibility. `StepActorsResolver.addLegacyAssignmentUrns` resolves the 3 legacy preset values (ENTITY_OWNERS, ENTITY_DOMAIN_OWNERS, ENTITY_DATA_PRODUCT_OWNERS) directly via OwnerService / DomainService / DataProductService at submit time.",
                            "name": "ActionWorkflowStepDynamicAssignment",
                            "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                            "fields": [
                              {
                                "type": {
                                  "type": "enum",
                                  "symbolDocs": {
                                    "ENTITY_DATA_PRODUCT_OWNERS": "Assign the entity data product owners.",
                                    "ENTITY_DOMAIN_OWNERS": "Assign the entity domain owners.",
                                    "ENTITY_OWNERS": "Assign the entity owners."
                                  },
                                  "deprecated": "Use DynamicResolver.resolver string allowlist instead (OWNERS_OF, DOMAIN_OWNERS_OF, DATA_PRODUCT_OWNERS_OF, etc.).",
                                  "name": "ActionWorkflowStepDynamicAssignmentType",
                                  "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                                  "symbols": [
                                    "ENTITY_OWNERS",
                                    "ENTITY_DOMAIN_OWNERS",
                                    "ENTITY_DATA_PRODUCT_OWNERS"
                                  ]
                                },
                                "name": "type",
                                "doc": "A standardized policy for resolving actors dynamically for an access request."
                              },
                              {
                                "Urn": "Urn",
                                "urn_is_array": true,
                                "type": [
                                  "null",
                                  {
                                    "type": "array",
                                    "items": "string"
                                  }
                                ],
                                "name": "ownershipTypeUrns",
                                "default": null,
                                "doc": "Optional: A well defined set of ownership type urns to including in routing."
                              }
                            ]
                          }
                        ],
                        "name": "dynamicAssignment",
                        "default": null,
                        "doc": "@deprecated Use `dynamicSource`. Will be removed in a future release.\nThe LAUNCHING_ENTITY origin combined with relationship traversal in\nDynamicSource expresses every pattern this field supports today.\n\nStill accepted on writes from v1 clients. `StepActorsResolver`\nhandles the three legacy preset values (ENTITY_OWNERS,\nENTITY_DOMAIN_OWNERS, ENTITY_DATA_PRODUCT_OWNERS) at submit time by\ncalling OwnerService / DomainService / DataProductService directly."
                      },
                      {
                        "type": [
                          "null",
                          "com.linkedin.pegasus2avro.actionworkflow.DynamicSource"
                        ],
                        "name": "dynamicSource",
                        "default": null,
                        "doc": "Dynamic resolver for actor URNs. When set, resolved URNs are unioned\nwith `users`, `groups`, `roles`, and (legacy) `dynamicAssignment`\noutputs to form the final actor pool for the step.\n\nResolved at step-advance time using the current form state and\nlaunching entity context."
                      }
                    ],
                    "doc": "A definition of the actors required to review."
                  }
                ],
                "name": "actors",
                "default": null,
                "doc": "A definition of the actors required to execute the step, if there are any.\n\nFor steps of type REQUEST_REVIEW, this field MUST be provided!"
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.metadata.query.filter.Filter"
                ],
                "name": "condition",
                "default": null,
                "doc": "Optional inclusion condition. When set and evaluates false against the\nform state at step-advance time, the step is skipped (auto-pass\nsemantics \u2014 the request advances to the next step). Empty = always run.\n\nThe skip is recorded as a StepDecision with result = SKIPPED in the\nrequest's decisions array."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "enum",
                    "symbolDocs": {
                      "ALL_OF": " Every resolved actor slot must vote ACCEPTED. Slot membership is\n re-resolved at each decision time, so the slot set may differ across\n decisions when dynamicSource resolution is non-deterministic. ",
                      "ANY_OF": " At least one resolved actor slot must vote ACCEPTED. "
                    },
                    "name": "SimpleQuorumKind",
                    "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                    "symbols": [
                      "ANY_OF",
                      "ALL_OF"
                    ],
                    "doc": "The no-payload quorum policy variants. Sibling to NOfMQuorum (which carries\nthe n threshold). The two together form QuorumPolicy via a union typeref."
                  },
                  {
                    "type": "record",
                    "name": "NOfMQuorum",
                    "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                    "fields": [
                      {
                        "type": "int",
                        "name": "n",
                        "doc": " Approval threshold. Validator enforces n >= 1. "
                      }
                    ],
                    "doc": "Quorum policy: at least N distinct resolved actor slots must vote ACCEPTED.\n\nUnion member of QuorumPolicy alongside SimpleQuorumKind. Required n field\n(validator enforces n >= 1) \u2014 invalid combinations like \"N_OF_M with no n\"\nare structurally unrepresentable in this shape."
                  }
                ],
                "name": "quorum",
                "default": null,
                "doc": "Per-step quorum policy. When unset, the step advances on the first ACCEPTED\ndecision (legacy ANY_OF behavior)."
              }
            ],
            "doc": "Defines a single review step in a workflow.\n\nToday, steps are simple. They execute in sequence after the trigger event. \n\nIn the future, we may extend steps to include \"depends on steps\" to form a DAG structure across\nsteps. For now, steps execute in linear sequence after the trigger event -- however the expectation\nis that they COULD run in parallel after the trigger event without a problem in the future.\n\nIf necessary, we'll extend this to represent conditional branching nodes as a step / node in the Workflow, e.g. Conditional Step, Notification Step, Review Step\n\nToday, step state is reflected via a single entity representing the workflow instance: the ActionRequest entity.\nIn the future we'll explore modeling individual step states separately if required."
          }
        },
        "name": "steps",
        "doc": "Definition of the steps / tasks / nodes comprising the workflow definition. This is the part we can aim \nto be able to convert / transform into serialized XML BPMN Format. For now, we model it strongly here. \nIf we can successfully use BPMN for step state, we can deprecate this field in place of the XML serialization. \n\nThis is the part we'll try to build a transpiler to BPMN for execution for. Ultimately, we do need \na representation we can easily convert into the frontend framework for display. This represents the set of \nwell known workflow step types - across tasks, conditionals, notifications, etc - that are officially supported today.\n\nIf necessary, we'll extend this to represent conditional branching nodes as a step / node in the Workflow, e.g. Conditional Step, Notification Step, Review Step"
      },
      {
        "Searchable": {
          "/actor": {
            "fieldName": "createdBy",
            "fieldType": "URN"
          },
          "/time": {
            "fieldName": "createdAt",
            "fieldType": "DATETIME"
          }
        },
        "type": {
          "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 workflow."
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "lastModifiedAt",
            "fieldType": "DATETIME"
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "doc": "Audit stamp capturing the time and actor who last modified the workflow."
      }
    ],
    "doc": "The ActionWorkflowInfo record captures the metadata and configuration of a workflow.\nTODO: In the future, we may store the serialized camunda / flowable workflow instance ID inside.\nWe'll likely also need to add the \"steps\" into here since we'll need that to inform state transitions."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "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",
              "document"
            ],
            "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",
        "share",
        "origin"
      ]
    },
    "name": "DataProductKey",
    "namespace": "com.linkedin.pegasus2avro.dataproduct",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the Data Product."
      }
    ],
    "doc": "Key for a Query"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "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",
          {
            "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)"
      }
    ],
    "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": "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": "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": "glossaryTerms"
    },
    "name": "GlossaryTerms",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "GlossaryTermAssociation",
            "namespace": "com.linkedin.pegasus2avro.common",
            "fields": [
              {
                "Relationship": {
                  "entityTypes": [
                    "glossaryTerm"
                  ],
                  "name": "TermedWith"
                },
                "Searchable": {
                  "addToFilters": true,
                  "fieldName": "glossaryTerms",
                  "fieldType": "URN",
                  "filterNameOverride": "Glossary Term Applied",
                  "hasValuesFieldName": "hasGlossaryTerms",
                  "includeSystemModifiedAt": true,
                  "systemModifiedAtFieldName": "termsModifiedAt"
                },
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.GlossaryTermUrn"
                },
                "Urn": "GlossaryTermUrn",
                "entityTypes": [
                  "glossaryTerm"
                ],
                "type": "string",
                "name": "urn",
                "doc": "Urn of the applied glossary term"
              },
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": [
                  "null",
                  "string"
                ],
                "name": "actor",
                "default": null,
                "doc": "The user URN which will be credited for adding associating this term to the entity"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "context",
                "default": null,
                "doc": "Additional context about the association"
              },
              {
                "Searchable": {
                  "/actor": {
                    "fieldName": "termAttributionActors",
                    "fieldType": "URN",
                    "queryByDefault": false
                  },
                  "/source": {
                    "fieldName": "termAttributionSources",
                    "fieldType": "URN",
                    "queryByDefault": false
                  },
                  "/time": {
                    "fieldName": "termAttributionDates",
                    "fieldType": "DATETIME",
                    "queryByDefault": false
                  }
                },
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "MetadataAttribution",
                    "namespace": "com.linkedin.pegasus2avro.common",
                    "fields": [
                      {
                        "type": "long",
                        "name": "time",
                        "doc": "When this metadata was updated."
                      },
                      {
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "type": "string",
                        "name": "actor",
                        "doc": "The entity (e.g. a member URN) responsible for applying the assocated metadata. This can\neither be a user (in case of UI edits) or the datahub system for automation."
                      },
                      {
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "source",
                        "default": null,
                        "doc": "The DataHub source responsible for applying the associated metadata. This will only be filled out\nwhen a DataHub source is responsible. This includes the specific metadata test urn, the automation urn."
                      },
                      {
                        "type": {
                          "type": "map",
                          "values": "string"
                        },
                        "name": "sourceDetail",
                        "default": {},
                        "doc": "The details associated with why this metadata was applied. For example, this could include\nthe actual regex rule, sql statement, ingestion pipeline ID, etc.\nAlso can include flags like 'propagated'=true or 'inferred'=true."
                      }
                    ],
                    "doc": "Information about who, why, and how this metadata was applied"
                  }
                ],
                "name": "attribution",
                "default": null,
                "doc": "Information about who, why, and how this metadata was applied"
              }
            ],
            "doc": "Properties of an applied 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"
  },
  {
    "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": "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",
                                          "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 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",
                          "com.linkedin.pegasus2avro.common.GlossaryTerms"
                        ],
                        "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": "access"
    },
    "name": "Access",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "RoleAssociation",
              "namespace": "com.linkedin.pegasus2avro.common",
              "fields": [
                {
                  "Relationship": {
                    "entityTypes": [
                      "role"
                    ],
                    "name": "AssociatedWith"
                  },
                  "Searchable": {
                    "fieldName": "roles",
                    "fieldType": "URN",
                    "filterNameOverride": "Role",
                    "hasValuesFieldName": "hasRoles",
                    "queryByDefault": false
                  },
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "entityTypes": [
                    "role"
                  ],
                  "type": "string",
                  "name": "urn",
                  "doc": "Urn of the External Role"
                }
              ],
              "doc": "Properties of an applied Role. For now, just an Urn"
            }
          }
        ],
        "name": "roles",
        "default": null,
        "doc": "List of Roles which needs to be associated"
      }
    ],
    "doc": "Aspect used for associating roles to a dataset or any asset"
  },
  {
    "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": "forms"
    },
    "name": "Forms",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "Searchable": {
          "/*/completedPrompts/*/id": {
            "fieldName": "incompleteFormsCompletedPromptIds",
            "fieldType": "KEYWORD",
            "queryByDefault": false
          },
          "/*/completedPrompts/*/lastModified/time": {
            "fieldName": "incompleteFormsCompletedPromptResponseTimes",
            "fieldType": "DATETIME",
            "queryByDefault": false
          },
          "/*/incompletePrompts/*/id": {
            "fieldName": "incompleteFormsIncompletePromptIds",
            "fieldType": "KEYWORD",
            "queryByDefault": false
          },
          "/*/urn": {
            "fieldName": "incompleteForms",
            "fieldType": "URN",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "FormAssociation",
            "namespace": "com.linkedin.pegasus2avro.common",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "urn",
                "doc": "Urn of the applied form"
              },
              {
                "type": {
                  "type": "array",
                  "items": {
                    "type": "record",
                    "name": "FormPromptAssociation",
                    "namespace": "com.linkedin.pegasus2avro.common",
                    "fields": [
                      {
                        "type": "string",
                        "name": "id",
                        "doc": "The id for the prompt. This must be GLOBALLY UNIQUE."
                      },
                      {
                        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                        "name": "lastModified",
                        "doc": "The last time this prompt was touched for the entity (set, unset)"
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "FormPromptFieldAssociations",
                            "namespace": "com.linkedin.pegasus2avro.common",
                            "fields": [
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "array",
                                    "items": {
                                      "type": "record",
                                      "name": "FieldFormPromptAssociation",
                                      "namespace": "com.linkedin.pegasus2avro.common",
                                      "fields": [
                                        {
                                          "type": "string",
                                          "name": "fieldPath",
                                          "doc": "The field path on a schema field."
                                        },
                                        {
                                          "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                                          "name": "lastModified",
                                          "doc": "The last time this prompt was touched for the field on the entity (set, unset)"
                                        },
                                        {
                                          "type": [
                                            "null",
                                            {
                                              "type": "record",
                                              "name": "FormPromptResponse",
                                              "namespace": "com.linkedin.pegasus2avro.common",
                                              "fields": [
                                                {
                                                  "type": [
                                                    "null",
                                                    {
                                                      "type": "record",
                                                      "name": "StructuredPropertyPromptResponse",
                                                      "namespace": "com.linkedin.pegasus2avro.common",
                                                      "fields": [
                                                        {
                                                          "java": {
                                                            "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                                          },
                                                          "Urn": "Urn",
                                                          "type": "string",
                                                          "name": "propertyUrn",
                                                          "doc": "Which property was applied from this prompt response"
                                                        },
                                                        {
                                                          "type": {
                                                            "type": "array",
                                                            "items": [
                                                              "string",
                                                              "double"
                                                            ]
                                                          },
                                                          "name": "values",
                                                          "doc": "Which values for the given property were applied from this prompt response"
                                                        }
                                                      ]
                                                    }
                                                  ],
                                                  "name": "structuredPropertyResponse",
                                                  "default": null,
                                                  "doc": "Response for a structured property type prompt"
                                                },
                                                {
                                                  "type": [
                                                    "null",
                                                    {
                                                      "type": "record",
                                                      "name": "OwnershipPromptResponse",
                                                      "namespace": "com.linkedin.pegasus2avro.common",
                                                      "fields": [
                                                        {
                                                          "Urn": "Urn",
                                                          "urn_is_array": true,
                                                          "type": {
                                                            "type": "array",
                                                            "items": "string"
                                                          },
                                                          "name": "owners",
                                                          "doc": "The owners applied to an asset from this prompt response"
                                                        },
                                                        {
                                                          "java": {
                                                            "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                                          },
                                                          "Urn": "Urn",
                                                          "type": "string",
                                                          "name": "ownershipTypeUrn",
                                                          "doc": "The type of ownership applied from this prompt response"
                                                        }
                                                      ],
                                                      "doc": "Response for an ownership type prompt"
                                                    }
                                                  ],
                                                  "name": "ownershipResponse",
                                                  "default": null,
                                                  "doc": "Response for an ownership type prompt"
                                                },
                                                {
                                                  "type": [
                                                    "null",
                                                    {
                                                      "type": "record",
                                                      "name": "DocumentationPromptResponse",
                                                      "namespace": "com.linkedin.pegasus2avro.common",
                                                      "fields": [
                                                        {
                                                          "type": "string",
                                                          "name": "documentation",
                                                          "doc": "The documentation provided for this specific response"
                                                        }
                                                      ]
                                                    }
                                                  ],
                                                  "name": "documentationResponse",
                                                  "default": null,
                                                  "doc": "Response for a documentation type prompt"
                                                },
                                                {
                                                  "type": [
                                                    "null",
                                                    {
                                                      "type": "record",
                                                      "name": "GlossaryTermsPromptResponse",
                                                      "namespace": "com.linkedin.pegasus2avro.common",
                                                      "fields": [
                                                        {
                                                          "Urn": "Urn",
                                                          "urn_is_array": true,
                                                          "type": {
                                                            "type": "array",
                                                            "items": "string"
                                                          },
                                                          "name": "glossaryTerms",
                                                          "doc": "The glossaryTerms applied to an asset from this prompt response"
                                                        }
                                                      ],
                                                      "doc": "Response for a glossary terms type prompt"
                                                    }
                                                  ],
                                                  "name": "glossaryTermsResponse",
                                                  "default": null,
                                                  "doc": "Response for a glossary terms type prompt"
                                                },
                                                {
                                                  "type": [
                                                    "null",
                                                    {
                                                      "type": "record",
                                                      "name": "DomainPromptResponse",
                                                      "namespace": "com.linkedin.pegasus2avro.common",
                                                      "fields": [
                                                        {
                                                          "java": {
                                                            "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                                          },
                                                          "Urn": "Urn",
                                                          "type": "string",
                                                          "name": "domain",
                                                          "doc": "The domain applied to an asset from this prompt response"
                                                        }
                                                      ],
                                                      "doc": "Response for a domain type prompt"
                                                    }
                                                  ],
                                                  "name": "domainResponse",
                                                  "default": null,
                                                  "doc": "Response for a domain type prompt"
                                                }
                                              ],
                                              "doc": "A record of what was actually submitted when a user responds to a form prompt"
                                            }
                                          ],
                                          "name": "response",
                                          "default": null,
                                          "doc": "Optional record of what was actually submitted when a user responds to a field-level form prompt.\nThis should be populated going forward."
                                        }
                                      ],
                                      "doc": "Information about the status of a particular prompt for a specific schema field\non an entity."
                                    }
                                  }
                                ],
                                "name": "completedFieldPrompts",
                                "default": null,
                                "doc": "A list of field-level prompt associations that are not yet complete for this form."
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "array",
                                    "items": "com.linkedin.pegasus2avro.common.FieldFormPromptAssociation"
                                  }
                                ],
                                "name": "incompleteFieldPrompts",
                                "default": null,
                                "doc": "A list of field-level prompt associations that are complete for this form."
                              }
                            ],
                            "doc": "Information about the field-level prompt associations on a top-level prompt association."
                          }
                        ],
                        "name": "fieldAssociations",
                        "default": null,
                        "doc": "Optional information about the field-level prompt associations."
                      },
                      {
                        "type": [
                          "null",
                          "com.linkedin.pegasus2avro.common.FormPromptResponse"
                        ],
                        "name": "response",
                        "default": null,
                        "doc": "Optional record of what was actually submitted when a user responds to a form prompt.\nThis should be populated going forward."
                      }
                    ],
                    "doc": "Information about the status of a particular prompt.\nNote that this is where we can add additional information about individual responses:\nactor, timestamp, and the response itself."
                  }
                },
                "name": "incompletePrompts",
                "default": [],
                "doc": "A list of prompts that are not yet complete for this form."
              },
              {
                "type": {
                  "type": "array",
                  "items": "com.linkedin.pegasus2avro.common.FormPromptAssociation"
                },
                "name": "completedPrompts",
                "default": [],
                "doc": "A list of prompts that have been completed for this form."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.common.AuditStamp"
                ],
                "name": "created",
                "default": null,
                "doc": "An audit stamp of when this form association was created"
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.common.AuditStamp"
                ],
                "name": "lastModified",
                "default": null,
                "doc": "An audit stamp of the last time this form association was modified"
              }
            ],
            "doc": "Properties of an applied form."
          }
        },
        "name": "incompleteForms",
        "doc": "All incomplete forms assigned to the entity."
      },
      {
        "Searchable": {
          "/*/completedPrompts/*/id": {
            "fieldName": "completedFormsCompletedPromptIds",
            "fieldType": "KEYWORD",
            "queryByDefault": false
          },
          "/*/completedPrompts/*/lastModified/time": {
            "fieldName": "completedFormsCompletedPromptResponseTimes",
            "fieldType": "DATETIME",
            "queryByDefault": false
          },
          "/*/incompletePrompts/*/id": {
            "fieldName": "completedFormsIncompletePromptIds",
            "fieldType": "KEYWORD",
            "queryByDefault": false
          },
          "/*/urn": {
            "fieldName": "completedForms",
            "fieldType": "URN",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": "com.linkedin.pegasus2avro.common.FormAssociation"
        },
        "name": "completedForms",
        "doc": "All complete forms assigned to the entity."
      },
      {
        "Searchable": {
          "/*/form": {
            "fieldName": "verifiedForms",
            "fieldType": "URN",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "FormVerificationAssociation",
            "namespace": "com.linkedin.pegasus2avro.common",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "form",
                "doc": "The urn of the form that granted this verification."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.common.AuditStamp"
                ],
                "name": "lastModified",
                "default": null,
                "doc": "An audit stamp capturing who and when verification was applied for this form."
              }
            ],
            "doc": "An association between a verification and an entity that has been granted\nvia completion of one or more forms of type 'VERIFICATION'."
          }
        },
        "name": "verifications",
        "default": [],
        "doc": "Verifications that have been applied to the entity via completed forms."
      }
    ],
    "doc": "Forms that are assigned to this entity to be filled out"
  },
  {
    "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": "status",
      "schemaVersion": 3
    },
    "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).\nKept for backward compatibility. When lifecycleState is set, this field is\nautomatically kept in sync: ACTIVE/DRAFT \u2192 false, REMOVED \u2192 true.\nWhen lifecycleStage is set to a stage with hideInSearch=true, this field is\nNOT automatically synced \u2014 the search layer uses lifecycleStage settings directly."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD",
          "queryByDefault": false
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "lifecycleStage",
        "default": null,
        "doc": "The lifecycle stage of the entity, referencing a lifecycleStageType entity.\nWhen null, the entity is in its default active state (visible in search).\nWhen set, the referenced lifecycle stage's settings determine behavior\n(e.g., hideInSearch=true excludes the entity from default search results).\n\nUsers can override default filtering by explicitly filtering on this field."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "lifecycleLastUpdated",
        "default": null,
        "doc": "Attribution for the lifecycle stage transition \u2014 who moved the entity\ninto its current stage and when. Populated automatically by the\nsetLifecycleStage mutation; should be set by any code path that\nwrites the lifecycleStage field."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD",
          "queryByDefault": false
        },
        "type": [
          "null",
          {
            "type": "enum",
            "symbolDocs": {
              "ACTIVE": "Entity is active and visible in default searches and browse.\nEquivalent to Status.removed=false with no lifecycleState set.",
              "DRAFT": "Entity is a draft \u2014 hidden from default searches and browse, but not deleted.\nCan be discovered via explicit lifecycleState=DRAFT filter (e.g., eval queries).\nStatus.removed remains false.",
              "REMOVED": "Entity is soft-deleted. Hidden from all searches.\nEquivalent to Status.removed=true."
            },
            "name": "LifecycleState",
            "namespace": "com.linkedin.pegasus2avro.common",
            "symbols": [
              "ACTIVE",
              "DRAFT",
              "REMOVED"
            ],
            "doc": "The general lifecycle state of a DataHub entity.\nUsed in conjunction with the Status aspect to control entity visibility.\n\nUnlike the binary Status.removed field, LifecycleState supports intermediate\nstates that hide an entity from default searches without permanently deleting it.\n\nWhen lifecycleState is set, Status.removed is always kept in sync:\n  ACTIVE  \u2192 removed=false\n  DRAFT   \u2192 removed=false  (hidden from search, not deleted)\n  REMOVED \u2192 removed=true"
          }
        ],
        "name": "lifecycleState",
        "default": null,
        "doc": "The general lifecycle state of the entity.\nWhen null, Status.removed is the source of truth (legacy behavior).\nWhen set, this field takes precedence and removed is kept in sync.\nUse DRAFT to hide an entity from default searches without soft-deleting it."
      }
    ],
    "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": "displayProperties",
      "schemaVersion": 2
    },
    "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",
                    "PHOSPHOR": "Phosphor Icons (https://phosphoricons.com)."
                  },
                  "name": "IconLibrary",
                  "namespace": "com.linkedin.pegasus2avro.common",
                  "symbols": [
                    "MATERIAL",
                    "PHOSPHOR"
                  ],
                  "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": "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",
                  {
                    "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": "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": "share"
    },
    "name": "Share",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "Searchable": {
          "/*/destination": {
            "fieldName": "shareDestinations",
            "fieldType": "URN",
            "hasValuesFieldName": "hasShareDestinations",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "ShareResult",
            "namespace": "com.linkedin.pegasus2avro.common",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "destination",
                "doc": "Urn of the DataHubConnection related to another Acryl instance"
              },
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": [
                  "null",
                  "string"
                ],
                "name": "implicitShareEntity",
                "default": null,
                "doc": "If this share happened implicitly due to another entity being shared, this field\nwill be populated with that entity urn. Example: if a dataset is shared, its containers\nwill also be shared. The share result for the container will have the dataset urn here."
              },
              {
                "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                "name": "created",
                "doc": "Audit stamp for when the first share request for the given destination occurred."
              },
              {
                "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                "name": "lastAttempt",
                "doc": "When did we get this share result and who requested the share. This will be the time\nthat we try and execute the share on the backend, regardless of success."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "lastAttemptRequestId",
                "default": null,
                "doc": "The request id that generated this share result. This is the id of the request that triggered this share.\nThis is primarily used for debugging purposes."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "ShareConfig",
                    "namespace": "com.linkedin.pegasus2avro.common",
                    "fields": [
                      {
                        "type": [
                          "null",
                          "boolean"
                        ],
                        "name": "enableUpstreamLineage",
                        "default": null,
                        "doc": "Upstream lineage was shared"
                      },
                      {
                        "type": [
                          "null",
                          "boolean"
                        ],
                        "name": "enableDownstreamLineage",
                        "default": null,
                        "doc": "Downstream lineage was shared"
                      }
                    ]
                  }
                ],
                "name": "shareConfig",
                "default": null,
                "doc": "The config for this particular share result"
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.common.AuditStamp"
                ],
                "name": "lastSuccess",
                "default": null,
                "doc": "Audit stamp for the last time a share to this above destination successfully occurred"
              },
              {
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "FAILURE": "The share was a failure",
                    "PARTIAL_SUCCESS": "The share was partially successful. Some, but not all, aspects were shared.",
                    "RUNNING": "The share request is still in progress",
                    "SUCCESS": "The share was successful"
                  },
                  "name": "ShareResultState",
                  "namespace": "com.linkedin.pegasus2avro.common",
                  "symbols": [
                    "RUNNING",
                    "SUCCESS",
                    "PARTIAL_SUCCESS",
                    "FAILURE"
                  ]
                },
                "name": "status",
                "doc": "Status for this share result - whether or not it succeeded"
              },
              {
                "type": [
                  "null",
                  "long"
                ],
                "name": "statusLastUpdated",
                "default": null,
                "doc": "The last time the status was updated. Timestamp in milliseconds since epoch.\nUseful for monitoring if the status is stale."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "message",
                "default": null,
                "doc": "Optional message for this share result. Error messages will be stored here.\nThis message will be presented to the end user, so it should not include stack traces etc."
              }
            ],
            "doc": "Info about the results from sharing metadata for a given entity"
          }
        },
        "name": "lastShareResults",
        "doc": "The last share result for each destination that this entity has been shared with"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.common.ShareResult"
          }
        ],
        "name": "lastUnshareResults",
        "default": null,
        "doc": "The last unshare result for each destination that this entity was\npreviously shared with. A successfully unshared destination should not\nappear in the lastShareResults field."
      }
    ],
    "doc": "Aspect used for keeping track of metadata sharing info"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "anomaliesSummary"
    },
    "name": "AnomaliesSummary",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "Relationship": {
          "/*/urn": {
            "entityTypes": [
              "anomaly"
            ],
            "name": "ActiveAnomalies"
          }
        },
        "Searchable": {
          "/*/lastResultAt": {
            "fieldName": "activeAnomalyResultTimes",
            "fieldType": "DATETIME",
            "queryByDefault": false
          },
          "/*/source": {
            "fieldName": "activeAnomalySources",
            "queryByDefault": false
          },
          "/*/type": {
            "fieldName": "activeAnomalyTypes",
            "fieldType": "KEYWORD",
            "queryByDefault": false
          },
          "/*/urn": {
            "fieldName": "activeAnomalies",
            "fieldType": "URN",
            "hasValuesFieldName": "hasActiveAnomalies",
            "numValuesFieldName": "numActiveAnomalies",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "AnomalySummaryDetails",
            "namespace": "com.linkedin.pegasus2avro.common",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "urn",
                "doc": "The urn of the anomaly"
              },
              {
                "type": "string",
                "name": "type",
                "doc": "The top-level type of an anomaly"
              },
              {
                "type": "long",
                "name": "lastResultAt",
                "doc": "The time at which the last result was produced."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "source",
                "default": null,
                "doc": "The source of the anomaly"
              }
            ],
            "doc": "Summary statistics about anomalies on an entity."
          }
        },
        "name": "activeAnomalyDetails",
        "default": [],
        "doc": "Summary details about the set of active anomalies"
      },
      {
        "Relationship": {
          "/*/urn": {
            "entityTypes": [
              "anomaly"
            ],
            "name": "ResolvedAnomalies"
          }
        },
        "Searchable": {
          "/*/lastResultAt": {
            "fieldName": "resolvedAnomalyResultTimes",
            "fieldType": "DATETIME",
            "queryByDefault": false
          },
          "/*/source": {
            "fieldName": "resolvedAnomalySources",
            "queryByDefault": false
          },
          "/*/type": {
            "fieldName": "resolvedAnomalyTypes",
            "fieldType": "KEYWORD",
            "queryByDefault": false
          },
          "/*/urn": {
            "fieldName": "resolvedAnomalies",
            "fieldType": "URN",
            "hasValuesFieldName": "hasResolvedAnomalies",
            "numValuesFieldName": "numResolvedAnomalies",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": "com.linkedin.pegasus2avro.common.AnomalySummaryDetails"
        },
        "name": "resolvedAnomalyDetails",
        "default": [],
        "doc": "Summary details about the set of resolved anomalies"
      }
    ],
    "doc": "Summary related to entity anomalies"
  },
  {
    "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": "documentation"
    },
    "name": "Documentation",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "lastModified",
        "default": null,
        "doc": "The time and actor that generated or last updated this documentation."
      },
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "DocumentationAssociation",
            "namespace": "com.linkedin.pegasus2avro.common",
            "fields": [
              {
                "type": "string",
                "name": "documentation",
                "doc": "Description of this asset"
              },
              {
                "Searchable": {
                  "/actor": {
                    "fieldName": "documentationAttributionActors",
                    "fieldType": "URN",
                    "queryByDefault": false
                  },
                  "/source": {
                    "fieldName": "documentationAttributionSources",
                    "fieldType": "URN",
                    "queryByDefault": false
                  },
                  "/time": {
                    "fieldName": "documentationAttributionDates",
                    "fieldType": "DATETIME",
                    "queryByDefault": false
                  }
                },
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.common.MetadataAttribution"
                ],
                "name": "attribution",
                "default": null,
                "doc": "Information about who, why, and how this metadata was applied"
              }
            ],
            "doc": "Properties of applied documentation including the attribution of the doc"
          }
        },
        "name": "documentations",
        "doc": "Documentations associated with this asset. We could be receiving docs from different sources"
      }
    ],
    "doc": "Aspect used for storing all applicable documentations on assets.\nThis aspect supports multiple documentations from different sources.\nThere is an implicit assumption that there is only one documentation per\n   source.\nFor example, if there are two documentations from the same source, the\n   latest one will overwrite the previous one.\nIf there are two documentations from different sources, both will be\n   stored.\nFuture evolution considerations:\nThe first entity that uses this aspect is Schema Field. We will expand this\n    aspect to other entities eventually.\nThe values of the documentation are not currently searchable. This will be\n    changed once this aspect develops opinion on which documentation entry is\n    the authoritative one.\nEnsuring that there is only one documentation per source is a business\n    rule that is not enforced by the aspect yet. This will currently be enforced by the\n    application that uses this aspect. We will eventually enforce this rule in\n    the aspect using AspectMutators."
  },
  "com.linkedin.pegasus2avro.common.GlobalTags",
  {
    "type": "record",
    "Aspect": {
      "name": "ownership",
      "schemaVersion": 2
    },
    "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",
                    "aiAgent"
                  ],
                  "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",
                  "aiAgent"
                ],
                "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.)\n\n`aiAgent` is also a valid owner URN \u2014 used with the AGENT_OWNER\nownership type to bind chat conversations (and similar artifacts) to\nthe agent that stewards them. See OwnershipType.AGENT_OWNER for the\nbinding semantics."
              },
              {
                "deprecated": true,
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "AGENT_OWNER": "Set when the owner is an AI agent (`urn:li:aiAgent:...`) that stewards\nthe artifact. Used today to bind chat conversations to the agent that\n\"lives in\" the conversation \u2014 conversations started on an agent's\nnative chat surface get an Ownership aspect with\n`{owner: <aiAgent>, type: AGENT_OWNER}` so they appear only in that\nagent's chat tab and stay out of the global Ask DataHub sidebar.",
                    "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",
                    "AGENT_OWNER",
                    "DEVELOPER",
                    "DATAOWNER",
                    "DELEGATE",
                    "PRODUCER",
                    "CONSUMER",
                    "STAKEHOLDER"
                  ],
                  "doc": "Asset owner types"
                },
                "name": "type",
                "doc": "The type of the ownership"
              },
              {
                "Relationship": {
                  "entityTypes": [
                    "ownershipType"
                  ],
                  "name": "ownershipType"
                },
                "Searchable": {
                  "fieldName": "ownershipTypeUrn",
                  "fieldType": "URN",
                  "queryByDefault": false
                },
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "entityTypes": [
                  "ownershipType"
                ],
                "type": [
                  "null",
                  "string"
                ],
                "name": "typeUrn",
                "default": null,
                "doc": "The type of the ownership\nUrn of type O"
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "OwnershipSource",
                    "namespace": "com.linkedin.pegasus2avro.common",
                    "fields": [
                      {
                        "type": {
                          "type": "enum",
                          "symbolDocs": {
                            "AUDIT": "Auditing system or audit logs",
                            "DATABASE": "Database, e.g. GRANTS table",
                            "FILE_SYSTEM": "File system, e.g. file/directory owner",
                            "ISSUE_TRACKING_SYSTEM": "Issue tracking system, e.g. Jira",
                            "MANUAL": "Manually provided by a user",
                            "OTHER": "Other sources",
                            "SERVICE": "Other ownership-like service, e.g. Nuage, ACL service etc",
                            "SOURCE_CONTROL": "SCM system, e.g. GIT, SVN"
                          },
                          "name": "OwnershipSourceType",
                          "namespace": "com.linkedin.pegasus2avro.common",
                          "symbols": [
                            "AUDIT",
                            "DATABASE",
                            "FILE_SYSTEM",
                            "ISSUE_TRACKING_SYSTEM",
                            "MANUAL",
                            "SERVICE",
                            "SOURCE_CONTROL",
                            "OTHER"
                          ]
                        },
                        "name": "type",
                        "doc": "The type of the source"
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "url",
                        "default": null,
                        "doc": "A reference URL for the source"
                      }
                    ],
                    "doc": "Source/provider of the ownership information"
                  }
                ],
                "name": "source",
                "default": null,
                "doc": "Source information for the ownership"
              },
              {
                "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": "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": "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",
          {
            "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": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "actor",
        "default": null,
        "doc": "Actor who issued this operation."
      },
      {
        "TimeseriesField": {},
        "type": {
          "type": "enum",
          "symbolDocs": {
            "ALTER": "Asset was altered",
            "CREATE": "Asset was created",
            "CUSTOM": "Custom asset operation. If this is set, ensure customOperationType is filled out.",
            "DELETE": "Rows were deleted",
            "DROP": "Asset was dropped",
            "INSERT": "Rows were inserted",
            "UPDATE": "Rows were updated"
          },
          "name": "OperationType",
          "namespace": "com.linkedin.pegasus2avro.common",
          "symbols": [
            "INSERT",
            "UPDATE",
            "DELETE",
            "CREATE",
            "ALTER",
            "DROP",
            "CUSTOM",
            "UNKNOWN"
          ],
          "doc": "Enum to define the operation type when an entity changes."
        },
        "name": "operationType",
        "doc": "Operation type of change."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "string"
        ],
        "name": "customOperationType",
        "default": null,
        "doc": "A custom type of operation. Required if operationType is CUSTOM."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "long"
        ],
        "name": "numAffectedRows",
        "default": null,
        "doc": "How many rows were affected by this operation."
      },
      {
        "Urn": "Urn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "affectedDatasets",
        "default": null,
        "doc": "Which other datasets were affected by this operation."
      },
      {
        "TimeseriesField": {},
        "deprecated": true,
        "type": [
          "null",
          {
            "type": "enum",
            "symbolDocs": {
              "DATA_PLATFORM": "Update was provided by consulting the data platform  itself.",
              "DATA_PROCESS": "Provided by a Data Process"
            },
            "name": "OperationSourceType",
            "namespace": "com.linkedin.pegasus2avro.common",
            "symbols": [
              "DATA_PROCESS",
              "DATA_PLATFORM"
            ],
            "doc": "The source of an operation. Note that this may be superceded by sourceDetails > producerType."
          }
        ],
        "name": "sourceType",
        "default": null,
        "doc": "Source Type - E.g. which process produced this operation. Note that this field will be superseded by the richer information\nprovided inside the \"source\" field (e.g source > producerType)"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "OperationSourceDetails",
            "namespace": "com.linkedin.pegasus2avro.common",
            "fields": [
              {
                "TimeseriesField": {},
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "INGESTION_SOURCE": "Operation was produced during a normal ingestion source run.",
                    "MONITOR": "A running monitor produced the metadata."
                  },
                  "name": "MetadataProducerType",
                  "namespace": "com.linkedin.pegasus2avro.common",
                  "symbols": [
                    "INGESTION_SOURCE",
                    "MONITOR"
                  ],
                  "doc": "The type of the producer of the metadata, e.g. reflective of the process that produced the metadata."
                },
                "name": "producerType",
                "doc": "The specific type of producer for the operation."
              },
              {
                "TimeseriesField": {},
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": [
                  "null",
                  "string"
                ],
                "name": "producerUrn",
                "default": null,
                "doc": "The producer urn for the operation. Only provided is producerType == MONITOR currently,\nwhere it will be set to the monitor urn that sampled the operation. Ideally, this also contains\nthe ingestion source urn if applicable."
              },
              {
                "TimeseriesField": {},
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "AUDIT_LOG": "Operation was identified by inspecting an audit log API",
                    "FIELD_VALUE": "Operation was identified by querying a particular field / column value.",
                    "FILE_METADATA": "Operation was identified by inspecting underlying file system.",
                    "INFORMATION_SCHEMA": "Operation was identified by inspecting an information schema table, or other system metadata table."
                  },
                  "name": "OperationSourceOriginType",
                  "namespace": "com.linkedin.pegasus2avro.common",
                  "symbols": [
                    "FIELD_VALUE",
                    "INFORMATION_SCHEMA",
                    "AUDIT_LOG",
                    "FILE_METADATA"
                  ]
                },
                "name": "originType",
                "doc": "The specific origin of the operation with regards to the source platform."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "FreshnessFieldSpec",
                    "namespace": "com.linkedin.pegasus2avro.assertion",
                    "fields": [
                      {
                        "type": "string",
                        "name": "path",
                        "doc": "The field path"
                      },
                      {
                        "type": "string",
                        "name": "type",
                        "doc": "The DataHub standard schema field type."
                      },
                      {
                        "type": "string",
                        "name": "nativeType",
                        "doc": "The native field type"
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "enum",
                            "symbolDocs": {
                              "HIGH_WATERMARK": "Determine that a change has occurred by inspecting a field which should be tracked as the\n\"high watermark\" for the table. This should be an ascending number or date field.\n\nIf rows with this column have not been added since the previous check\nthen the Freshness Assertion will fail.",
                              "LAST_MODIFIED": "Determine that a change has occurred by inspecting an last modified field which\nrepresents the last time at which a row was changed."
                            },
                            "name": "FreshnessFieldKind",
                            "namespace": "com.linkedin.pegasus2avro.assertion",
                            "symbols": [
                              "LAST_MODIFIED",
                              "HIGH_WATERMARK"
                            ]
                          }
                        ],
                        "name": "kind",
                        "default": null,
                        "doc": "The type of the field being used to verify the Freshness of the asset."
                      }
                    ],
                    "doc": "Lightweight spec used for referencing a particular schema field that is used to compute\na freshness signal or operation.\nTODO: Since this is now leveraged across assertions & metrics / operations, we should consider moving this to a common package."
                  }
                ],
                "name": "field",
                "default": null,
                "doc": "Information about the field / column. May be present when originType is FIELD_VALUE"
              }
            ],
            "doc": "Additional details about the origins of a captured source-platform Operation."
          }
        ],
        "name": "source",
        "default": null,
        "doc": "More detailed information about the source of the operation."
      },
      {
        "type": [
          "null",
          {
            "type": "map",
            "values": "string"
          }
        ],
        "name": "customProperties",
        "default": null,
        "doc": "Custom properties"
      },
      {
        "Searchable": {
          "fieldName": "lastOperationTime",
          "fieldType": "DATETIME"
        },
        "TimeseriesField": {
          "fieldType": "DATETIME"
        },
        "type": "long",
        "name": "lastUpdatedTimestamp",
        "doc": "The time at which the operation occurred. Would be better named 'operationTime'"
      },
      {
        "TimeseriesFieldCollection": {
          "key": "query"
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "queries",
        "default": null,
        "doc": "Which queries were used in this operation."
      }
    ],
    "doc": "Operational info for an entity."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "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": "proposals"
    },
    "name": "Proposals",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldName": "proposedTags",
            "fieldType": "URN",
            "filterNameOverride": "Proposed Tag"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "proposedTags",
        "default": null,
        "doc": "Proposed tags for a given entity"
      },
      {
        "Searchable": {
          "/*": {
            "fieldName": "proposedGlossaryTerms",
            "fieldType": "URN",
            "filterNameOverride": "Proposed Glossary Term"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "proposedGlossaryTerms",
        "default": null,
        "doc": "Proposed glossary terms for a given entity"
      }
    ],
    "doc": "Proposals aspect for proposed tags and glossary terms for an entity.\nThese are secondary indices and ActionRequests remain the source of truth."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "origin"
    },
    "name": "Origin",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "type": {
          "type": "enum",
          "symbolDocs": {
            "EXTERNAL": "The entity is external to DataHub.",
            "NATIVE": "The entity is native to DataHub."
          },
          "name": "OriginType",
          "namespace": "com.linkedin.pegasus2avro.common",
          "symbols": [
            "NATIVE",
            "EXTERNAL"
          ],
          "doc": "Enum to define where an entity originated from."
        },
        "name": "type",
        "doc": "Where an entity originated from. Either NATIVE or EXTERNAL."
      },
      {
        "deprecated": "Use sourceDetails instead",
        "type": [
          "null",
          "string"
        ],
        "name": "externalType",
        "default": null,
        "doc": "Only populated if type is EXTERNAL. The externalType of the entity, such as the name of the identity provider."
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "SourceDetails",
              "namespace": "com.linkedin.pegasus2avro.common",
              "fields": [
                {
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "type": "string",
                  "name": "source",
                  "doc": "Urn of the source of this asset. Could be an ingestion source (e.g. urn:li:dataHubIngestionSource:1234), an acryl\n    platform instance, etc."
                },
                {
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "type": "string",
                  "name": "platform",
                  "doc": "Urn of the platform this asset originated from ie. urn:li:dataPlatform:snowflake for snowflake ingestion\nor urn:li:dataPlatform:acryl for assets synced from another catalog instance."
                },
                {
                  "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                  "name": "lastModified",
                  "doc": "Audit stamp for when this asset was synced"
                },
                {
                  "type": {
                    "type": "enum",
                    "symbolDocs": {
                      "API": "Synced via the API (pushed from clients using the API directly)",
                      "INGEST": "Synced via ingestion recipes",
                      "OTHER": "Synced via some other mechanism (used as a placeholder for incubating\n      future mechanisms)",
                      "SHARE": "Synced via metadata sharing with another Acryl instance"
                    },
                    "name": "SyncMechanism",
                    "namespace": "com.linkedin.pegasus2avro.common",
                    "symbols": [
                      "INGEST",
                      "SHARE",
                      "API",
                      "OTHER"
                    ]
                  },
                  "name": "mechanism",
                  "doc": "The means by which this asset got synchronized"
                },
                {
                  "type": [
                    {
                      "type": "map",
                      "values": "string"
                    },
                    "null"
                  ],
                  "name": "properties",
                  "default": {},
                  "doc": "Additional information related to the origin of this metadata"
                }
              ],
              "doc": "Info about how this asset was brought into DataHub"
            }
          }
        ],
        "name": "sourceDetails",
        "default": null,
        "doc": "Details about the source(s) by which this asset was originated"
      }
    ],
    "doc": "Carries information about where an entity originated from."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "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": "assertionsSummary"
    },
    "name": "AssertionsSummary",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "deprecated": true,
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "failingAssertions",
        "default": [],
        "doc": "Failing assertions for an asset\nDeprecated! Use failingAssertionDetails."
      },
      {
        "deprecated": true,
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "passingAssertions",
        "default": [],
        "doc": "Passing assertions for an asset\nDeprecated! Use passingAssertionDetails."
      },
      {
        "Searchable": {
          "fieldName": "lastAssertionResultAt",
          "fieldType": "DATETIME",
          "queryByDefault": false
        },
        "type": [
          "null",
          "long"
        ],
        "name": "lastAssertionResultAt",
        "default": null,
        "doc": "The last time an assertion was run."
      },
      {
        "Relationship": {
          "/*/urn": {
            "entityTypes": [
              "assertion"
            ],
            "name": "PassingAssertions"
          }
        },
        "Searchable": {
          "/*/lastResultAt": {
            "fieldName": "passingAssertionResultTimes",
            "fieldType": "DATETIME",
            "queryByDefault": false
          },
          "/*/source": {
            "fieldName": "passingAssertionSources",
            "queryByDefault": false
          },
          "/*/type": {
            "fieldName": "passingAssertionTypes",
            "fieldType": "KEYWORD",
            "queryByDefault": false
          },
          "/*/urn": {
            "fieldName": "passingAssertions",
            "fieldType": "URN",
            "hasValuesFieldName": "hasPassingAssertions",
            "numValuesFieldName": "numPassingAssertions",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "AssertionSummaryDetails",
            "namespace": "com.linkedin.pegasus2avro.common",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "urn",
                "doc": "The urn of the assertion"
              },
              {
                "type": "string",
                "name": "type",
                "doc": "The top-level type of an assertion"
              },
              {
                "type": "long",
                "name": "lastResultAt",
                "doc": "The time at which the last result was produced."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "source",
                "default": null,
                "doc": "The source of the assertion"
              }
            ],
            "doc": "Summary statistics about assertions on an entity."
          }
        },
        "name": "passingAssertionDetails",
        "default": [],
        "doc": "Summary details about the set of passing assertions"
      },
      {
        "Relationship": {
          "/*/urn": {
            "entityTypes": [
              "assertion"
            ],
            "name": "FailingAssertions"
          }
        },
        "Searchable": {
          "/*/lastResultAt": {
            "fieldName": "failingAssertionResultTimes",
            "fieldType": "DATETIME",
            "queryByDefault": false
          },
          "/*/source": {
            "fieldName": "failingAssertionSources",
            "queryByDefault": false
          },
          "/*/type": {
            "fieldName": "failingAssertionType",
            "fieldType": "KEYWORD",
            "queryByDefault": false
          },
          "/*/urn": {
            "addHasValuesToFilters": true,
            "fieldName": "failingAssertions",
            "fieldType": "URN",
            "hasValuesFieldName": "hasFailingAssertions",
            "numValuesFieldName": "numFailingAssertions",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": "com.linkedin.pegasus2avro.common.AssertionSummaryDetails"
        },
        "name": "failingAssertionDetails",
        "default": [],
        "doc": "Summary details about the set of failing assertions"
      },
      {
        "Relationship": {
          "/*/urn": {
            "entityTypes": [
              "assertion"
            ],
            "name": "ErroringAssertions"
          }
        },
        "Searchable": {
          "/*/lastResultAt": {
            "fieldName": "erroringAssertionResultTimes",
            "fieldType": "DATETIME"
          },
          "/*/source": {
            "fieldName": "erroringAssertionSources",
            "queryByDefault": false
          },
          "/*/type": {
            "fieldName": "erroringAssertionType",
            "fieldType": "KEYWORD"
          },
          "/*/urn": {
            "fieldName": "erroringAssertions",
            "fieldType": "URN",
            "hasValuesFieldName": "hasErroringAssertions",
            "numValuesFieldName": "numErroringAssertions",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": "com.linkedin.pegasus2avro.common.AssertionSummaryDetails"
        },
        "name": "erroringAssertionDetails",
        "default": [],
        "doc": "Summary details about the set of erroring assertions"
      },
      {
        "Relationship": {
          "/*/urn": {
            "entityTypes": [
              "assertion"
            ],
            "name": "InitializingAssertions"
          }
        },
        "Searchable": {
          "/*/lastResultAt": {
            "fieldName": "initializingAssertionResultTimes",
            "fieldType": "DATETIME",
            "queryByDefault": false
          },
          "/*/source": {
            "fieldName": "initializingAssertionSources",
            "queryByDefault": false
          },
          "/*/type": {
            "fieldName": "initializingAssertionType",
            "fieldType": "KEYWORD",
            "queryByDefault": false
          },
          "/*/urn": {
            "fieldName": "initializingAssertions",
            "fieldType": "URN",
            "hasValuesFieldName": "hasInitializingAssertions",
            "numValuesFieldName": "numInitializingAssertions",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": "com.linkedin.pegasus2avro.common.AssertionSummaryDetails"
        },
        "name": "initializingAssertionDetails",
        "default": [],
        "doc": "Summary details about the set of initializing assertions"
      }
    ],
    "doc": "Summary related to entity assertions"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "siblings",
      "schemaVersion": 3
    },
    "name": "Siblings",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "dataset",
              "corpuser"
            ],
            "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"
      },
      {
        "Searchable": {
          "fieldName": "siblingsPrimary",
          "fieldType": "BOOLEAN"
        },
        "type": "boolean",
        "name": "primary",
        "doc": "If this is the leader entity of the set of siblings"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.MetadataAttribution"
        ],
        "name": "attribution",
        "default": null,
        "doc": "Attribution for who set this sibling assignment and how.\nWhen actor is a human user (source is absent), the automated identity\nresolution script will not override this assignment."
      }
    ],
    "doc": "Siblings information of an entity."
  },
  {
    "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": "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": "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": {
          "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",
        "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": "dataHubPageTemplateProperties",
      "schemaVersion": 2
    },
    "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.",
                  "CONTEXT_DOCUMENTS": "This template applies to the Context Documents landing page.",
                  "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",
                  "CONTEXT_DOCUMENTS"
                ],
                "doc": "The surface area of the product where a page template is deployed."
              },
              "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": "monitorAnomalyEvent",
      "type": "timeseries"
    },
    "name": "MonitorAnomalyEvent",
    "namespace": "com.linkedin.pegasus2avro.anomaly",
    "fields": [
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "enum",
            "symbolDocs": {
              "CONFIRMED": "The anomaly has been confirmed by a human reviewer. This means the anomaly was validated.",
              "REJECTED": "The anomaly has been dismissed, or ignored, by a human reviewer. This means the anomaly should have been ignored."
            },
            "name": "AnomalyReviewState",
            "namespace": "com.linkedin.pegasus2avro.anomaly",
            "symbols": [
              "CONFIRMED",
              "REJECTED"
            ]
          }
        ],
        "name": "state",
        "default": null,
        "doc": "The review of the anomaly, based on human-provided feedback.\nIf this is not present, then the Anomaly has not yet been reviewed."
      },
      {
        "type": {
          "type": "record",
          "name": "AnomalySource",
          "namespace": "com.linkedin.pegasus2avro.anomaly",
          "fields": [
            {
              "type": {
                "type": "enum",
                "symbolDocs": {
                  "INFERRED_ASSERTION_FAILURE": "An assertion has failed, triggering the anomaly report.",
                  "USER_FEEDBACK": "An anomaly was reported by a user."
                },
                "name": "AnomalySourceType",
                "namespace": "com.linkedin.pegasus2avro.anomaly",
                "symbols": [
                  "INFERRED_ASSERTION_FAILURE",
                  "USER_FEEDBACK"
                ]
              },
              "name": "type",
              "doc": "How this feedback was provided."
            },
            {
              "TimeseriesField": {},
              "UrnValidation": {
                "entityTypes": [
                  "assertion"
                ],
                "exist": false,
                "strict": true
              },
              "java": {
                "class": "com.linkedin.pegasus2avro.common.urn.Urn"
              },
              "Urn": "Urn",
              "type": [
                "null",
                "string"
              ],
              "name": "sourceUrn",
              "default": null,
              "doc": "Reference to an URN related to the source of an anomaly.\nFor assertion monitors, this will contain the urn of the source Assertion."
            },
            {
              "TimeseriesField": {},
              "type": [
                "null",
                "long"
              ],
              "name": "sourceEventTimestampMillis",
              "default": null,
              "doc": "The timestamp of the event that triggered the anomaly.\nFor assertion monitors, this will be the timestamp of the assertion run event."
            },
            {
              "type": [
                "null",
                {
                  "type": "record",
                  "name": "AnomalySourceProperties",
                  "namespace": "com.linkedin.pegasus2avro.anomaly",
                  "fields": [
                    {
                      "type": [
                        "null",
                        {
                          "type": "record",
                          "name": "AssertionMetric",
                          "namespace": "com.linkedin.pegasus2avro.assertion",
                          "fields": [
                            {
                              "type": "long",
                              "name": "timestampMs",
                              "doc": "The timestamp associated with the metric sampling time in milliseconds since epoch"
                            },
                            {
                              "type": "float",
                              "name": "value",
                              "doc": "The value of the metric that was sampled"
                            }
                          ]
                        }
                      ],
                      "name": "assertionMetric",
                      "default": null,
                      "doc": "The monitor metric associated with the anomaly, if generated from an assertion monitor (the norm)."
                    },
                    {
                      "type": [
                        "null",
                        {
                          "type": "record",
                          "name": "OperationRange",
                          "namespace": "com.linkedin.pegasus2avro.anomaly",
                          "fields": [
                            {
                              "type": "long",
                              "name": "startTimestampMillis",
                              "doc": "The start timestamp of the operation in milliseconds since epoch."
                            },
                            {
                              "type": "long",
                              "name": "endTimestampMillis",
                              "doc": "The end timestamp of the operation in milliseconds since epoch."
                            }
                          ],
                          "doc": "The time range of the anomalous operation."
                        }
                      ],
                      "name": "operationRange",
                      "default": null,
                      "doc": "The operation range associated with the anomaly, if generated from an assertion monitor (the norm).\nThis is specific to freshness assertions."
                    }
                  ],
                  "doc": "Ad-hoc properties about an anomaly source."
                }
              ],
              "name": "properties",
              "default": null,
              "doc": "Additional properties about the source, for example which metric\nof an assertion generated the anomaly."
            }
          ],
          "doc": "Information about the source of feedback for an anomaly raised on an asset."
        },
        "name": "source",
        "doc": "The source of an anomaly, i.e. how it was generated."
      },
      {
        "TimeseriesField": {},
        "type": "com.linkedin.pegasus2avro.common.TimeStamp",
        "name": "created",
        "doc": "@Deprecated: this matches the timestampMillis field in the TimeseriesAspectBase."
      },
      {
        "TimeseriesField": {},
        "type": "com.linkedin.pegasus2avro.common.TimeStamp",
        "name": "lastUpdated",
        "doc": "The time at which the anomaly was last updated\n@Deprecated: this field is not used as this is an immutable log."
      }
    ],
    "doc": "A feedback log of anomalies detected by a monitor\nNOTE: this is an immutable log. The most recent entry for a given run can be used to determine the state of the anomaly."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "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": "formNotifications"
    },
    "name": "FormNotifications",
    "namespace": "com.linkedin.pegasus2avro.notification",
    "fields": [
      {
        "Searchable": {
          "/*/formUrn": {
            "fieldName": "notificationFormUrn",
            "fieldType": "URN",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "FormNotificationDetails",
            "namespace": "com.linkedin.pegasus2avro.notification",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "formUrn",
                "doc": "The urn of the form that these notification details are on behalf of"
              },
              {
                "type": {
                  "type": "array",
                  "items": {
                    "type": "record",
                    "name": "FormNotificationEntry",
                    "namespace": "com.linkedin.pegasus2avro.notification",
                    "fields": [
                      {
                        "type": "long",
                        "name": "time",
                        "doc": "The time at which this notification was sent in milliseconds"
                      },
                      {
                        "type": "string",
                        "name": "notificationType",
                        "doc": "The notification scenario type for this notification record"
                      }
                    ],
                    "doc": "Info about a specific form notification"
                  }
                },
                "name": "notificationLog",
                "default": [],
                "doc": "The list of details per notification sent on behalf of this form"
              }
            ],
            "doc": "Info about all of the notifications a user has received for a given form"
          }
        },
        "name": "notificationDetails",
        "default": [],
        "doc": "List of details for notifications for each form"
      }
    ],
    "doc": "The history of notifications sent to this actor on behalf of forms"
  },
  {
    "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": "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": "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": {
              "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": "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": "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": "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": "dataContractProperties"
    },
    "name": "DataContractProperties",
    "namespace": "com.linkedin.pegasus2avro.datacontract",
    "fields": [
      {
        "Relationship": {
          "entityTypes": [
            "dataset"
          ],
          "name": "ContractFor"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "entityTypes": [
          "dataset"
        ],
        "type": "string",
        "name": "entity",
        "doc": "The entity that this contract is associated with. Currently, we only support Dataset contracts, but\nin the future we may also support Data Product level contracts."
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "SlaContract",
              "namespace": "com.linkedin.pegasus2avro.datacontract",
              "fields": [
                {
                  "Relationship": {
                    "entityTypes": [
                      "assertion"
                    ],
                    "name": "IncludesSchemaAssertion"
                  },
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "entityTypes": [
                    "assertion"
                  ],
                  "type": "string",
                  "name": "assertion",
                  "doc": "The assertion representing the SLA contract."
                }
              ],
              "doc": "A contract pertaining to the operational SLAs of a physical data asset"
            }
          }
        ],
        "name": "sla",
        "default": null,
        "doc": "An optional set of SLA contracts. If this is a dataset contract, there will only be one."
      },
      {
        "Relationship": {
          "/*/assertion": {
            "entityTypes": [
              "assertion"
            ],
            "name": "IncludesSchemaAssertion"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "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": "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": "dataHubRoleInfo"
    },
    "name": "DataHubRoleInfo",
    "namespace": "com.linkedin.pegasus2avro.policy",
    "fields": [
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "name",
        "doc": "Name of the Role"
      },
      {
        "Searchable": {
          "fieldType": "TEXT"
        },
        "type": "string",
        "name": "description",
        "doc": "Description of the Role"
      },
      {
        "type": "boolean",
        "name": "editable",
        "default": false,
        "doc": "Whether the role should be editable via the UI"
      }
    ],
    "doc": "Information about a DataHub Role."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "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."
  },
  {
    "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": "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": "structuredPropertySettings",
      "schemaVersion": 2
    },
    "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": {
          "fieldType": "BOOLEAN"
        },
        "type": "boolean",
        "name": "isRelationship",
        "default": false,
        "doc": "Whether or not this structured property should be treated as a relationship\nbetween entities, displayed in the Related Terms tab for glossary terms."
      },
      {
        "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": "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": "com.linkedin.pegasus2avro.structured.PropertyValue"
          }
        ],
        "name": "allowedValues",
        "default": null,
        "doc": "A list of allowed values that the property is allowed to take. \nIf this is not specified, then the property can take any value of given type."
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.structured.PropertyCardinality",
          "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"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "deprecated": true,
        "type": [
          {
            "type": "enum",
            "symbolDocs": {
              "DISABLED": "This structured property will not show up in search filters",
              "ENABLED": "This structured property will show up in search filters"
            },
            "name": "StructuredPropertyFilterStatus",
            "namespace": "com.linkedin.pegasus2avro.structured",
            "symbols": [
              "ENABLED",
              "DISABLED"
            ]
          },
          "null"
        ],
        "name": "filterStatus",
        "default": "DISABLED",
        "doc": "The filter status of this structured property - whether it will show up in search filters or not\nDeprecated! Use structuredPropertySettings.showInSearchFilters instead"
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "structuredPropertyKey",
      "keyForEntity": "structuredProperty",
      "entityCategory": "core",
      "entityAspects": [
        "propertyDefinition",
        "structuredPropertySettings",
        "institutionalMemory",
        "status",
        "share",
        "origin"
      ],
      "entityDoc": "Structured Property represents a property meant for extending the core model of a logical entity"
    },
    "name": "StructuredPropertyKey",
    "namespace": "com.linkedin.pegasus2avro.structured",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "The id for a structured proeprty."
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "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": "postInfo",
      "schemaVersion": 3
    },
    "name": "PostInfo",
    "namespace": "com.linkedin.pegasus2avro.post",
    "fields": [
      {
        "Searchable": {},
        "type": {
          "type": "enum",
          "symbolDocs": {
            "AI_OBSERVATION": "AI-generated observation pending SME triage via a POST_ATTACHMENT_PROPOSAL ActionRequest.",
            "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",
            "AI_OBSERVATION"
          ],
          "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",
            "document",
            "actionRequest"
          ],
          "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",
          "document",
          "actionRequest"
        ],
        "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": "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": "com.linkedin.pegasus2avro.versionset.VersioningScheme",
        "name": "versioningScheme",
        "doc": "What versioning scheme is being utilized for the versioned entities sort criterion. Static once set"
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "actionRequestArchived"
    },
    "name": "ActionRequestArchived",
    "namespace": "com.linkedin.pegasus2avro.actionrequest",
    "fields": [
      {
        "Searchable": {
          "fieldType": "BOOLEAN"
        },
        "type": "boolean",
        "name": "archived",
        "default": false,
        "doc": "Status of the action request."
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "doc": "Audit stamp containing who last modified the archival status and when."
      }
    ],
    "doc": "Stores the archival status of an Action Request"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "actionRequestStatus"
    },
    "name": "ActionRequestStatus",
    "namespace": "com.linkedin.pegasus2avro.actionrequest",
    "fields": [
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "status",
        "doc": "Status of the action request. e.g. PENDING / COMPLETED"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "result",
        "default": null,
        "doc": "Optional result of the action request, e.g. APPROVE or DENY in case of request approvals."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "note",
        "default": null,
        "doc": "Optional note associated with the status.\nE.g. if the request is rejected, the reason for rejection. If the request is approved, the reason for approval."
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "lastModified",
            "fieldType": "DATETIME"
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "doc": "Audit stamp containing who last modified the status and when."
      }
    ],
    "doc": "The status of the action request - e.g. accepted, rejected, pending, etc"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "actionRequestInfo",
      "schemaVersion": 7
    },
    "name": "ActionRequestInfo",
    "namespace": "com.linkedin.pegasus2avro.actionrequest",
    "fields": [
      {
        "Searchable": {
          "addToFilters": true,
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "type",
        "doc": "The type of the action request, for example 'TAG_ASSOCIATION', 'WORKFLOW_FORM_REQUEST'"
      },
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldType": "URN"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "assignedUsers",
        "doc": "The users this action request is assigned to.\nBy default, action requests are assigned to Dataset Owners\nand with anyone who has the View Proposals platform privilege."
      },
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldType": "URN"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "assignedGroups",
        "doc": "The groups this action request is assigned to\nBy default, action requests are assigned to Dataset Owners\nand with anyone who has the View Proposals platform privilege."
      },
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldType": "URN"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "assignedRoles",
        "default": null,
        "doc": "The roles this action request is assigned to\nBy default, action requests are assigned any roles that have the View Proposals platform privilege."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "resourceType",
        "default": null,
        "doc": "The resource type that the action is associated with, for example 'dataset'"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "resource",
        "default": null,
        "doc": "The resource identifier that the action is associated with, for example 'urn:li:dataset:...'"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "subResourceType",
        "default": null,
        "doc": "The sub resource type that the action is associated with, for example 'datasetField'"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "subResource",
        "default": null,
        "doc": "The sub-resource identifier that the action is associated with, for example 'fieldName'.\nCurrently, this is only used for Field Paths & schema fields."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "ActionRequestParams",
            "namespace": "com.linkedin.pegasus2avro.actionrequest",
            "fields": [
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "GlossaryTermProposal",
                    "namespace": "com.linkedin.pegasus2avro.actionrequest",
                    "fields": [
                      {
                        "Searchable": {
                          "addToFilters": true,
                          "fieldName": "glossaryTerms"
                        },
                        "deprecated": true,
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "glossaryTerm",
                        "default": null,
                        "doc": "This field is deprecated and will be removed in a future version. Use glossaryTerms instead.\nThe urn of the glossary term being proposed."
                      },
                      {
                        "Searchable": {
                          "/*": {
                            "addToFilters": true,
                            "fieldName": "glossaryTerms"
                          }
                        },
                        "Urn": "Urn",
                        "urn_is_array": true,
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": "string"
                          }
                        ],
                        "name": "glossaryTerms",
                        "default": null,
                        "doc": "The urns of the glossary terms being proposed.\nUse this field over glossaryTerm."
                      }
                    ]
                  }
                ],
                "name": "glossaryTermProposal",
                "default": null,
                "doc": "An optional set of information specific to term proposals.\nTODO: Add validation that ensures that glossaryTerm or glossaryTerms field is provided, but not both."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "TagProposal",
                    "namespace": "com.linkedin.pegasus2avro.actionrequest",
                    "fields": [
                      {
                        "Searchable": {
                          "addToFilters": true,
                          "fieldName": "tags"
                        },
                        "deprecated": true,
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "tag",
                        "default": null,
                        "doc": "This field is deprecated and will be removed in a future version. Use tags instead.\nThe urn of the tag being proposed."
                      },
                      {
                        "Searchable": {
                          "/*": {
                            "addToFilters": true,
                            "fieldName": "tags"
                          }
                        },
                        "Urn": "Urn",
                        "urn_is_array": true,
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": "string"
                          }
                        ],
                        "name": "tags",
                        "default": null,
                        "doc": "The urns of the glossary terms being proposed.\nUse this field over glossaryTerm."
                      }
                    ]
                  }
                ],
                "name": "tagProposal",
                "default": null,
                "doc": "An optional set of information specific to tag proposals.\nTODO: Add validation that ensures that tag or tagUrns field is provided, but not both."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "DomainProposal",
                    "namespace": "com.linkedin.pegasus2avro.actionrequest",
                    "fields": [
                      {
                        "Searchable": {
                          "/*": {
                            "addToFilters": true,
                            "fieldName": "domains"
                          }
                        },
                        "Urn": "Urn",
                        "urn_is_array": true,
                        "type": {
                          "type": "array",
                          "items": "string"
                        },
                        "name": "domains",
                        "doc": "The urns of the domain(s) being proposed. Currently, only 1 domain is supported per asset.\nIf this changes in the future, this data modeling will suffice."
                      }
                    ]
                  }
                ],
                "name": "domainProposal",
                "default": null,
                "doc": "An optional set of information specific to domain proposals."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "OwnerProposal",
                    "namespace": "com.linkedin.pegasus2avro.actionrequest",
                    "fields": [
                      {
                        "Searchable": {
                          "/*/owner": {
                            "addToFilters": true,
                            "fieldName": "owners"
                          },
                          "/*/typeUrn": {
                            "addToFilters": true,
                            "fieldName": "ownershipTypes"
                          }
                        },
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": "com.linkedin.pegasus2avro.common.Owner"
                          }
                        ],
                        "name": "owners",
                        "default": null,
                        "doc": "The urns of the owner(s) being proposed."
                      }
                    ]
                  }
                ],
                "name": "ownerProposal",
                "default": null,
                "doc": "An optional set of information specific to ownership proposals."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "StructuredPropertyProposal",
                    "namespace": "com.linkedin.pegasus2avro.actionrequest",
                    "fields": [
                      {
                        "Searchable": {
                          "/*/propertyUrn": {
                            "addToFilters": true,
                            "fieldName": "structuredPropertyUrns"
                          }
                        },
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": "com.linkedin.pegasus2avro.structured.StructuredPropertyValueAssignment"
                          }
                        ],
                        "name": "structuredPropertyValues",
                        "default": null,
                        "doc": "The urns of the domain(s) being proposed. Currently, only 1 domain is supported per asset.\nIf this changes in the future, the data model will be ready.\nTODO: Decide if indexing the value would also be useful."
                      }
                    ]
                  }
                ],
                "name": "structuredPropertyProposal",
                "default": null,
                "doc": "An optional set of information specific to structured property proposals."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "LifecycleStageProposal",
                    "namespace": "com.linkedin.pegasus2avro.actionrequest",
                    "fields": [
                      {
                        "Searchable": {
                          "addToFilters": true,
                          "fieldName": "lifecycleStage"
                        },
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "lifecycleStage",
                        "default": null,
                        "doc": "The URN of the lifecycle stage being proposed, e.g. urn:li:lifecycleStageType:PUBLISHED.\nNull means \"clear the lifecycle stage\" (revert to no stage)."
                      }
                    ]
                  }
                ],
                "name": "lifecycleStageProposal",
                "default": null,
                "doc": "An optional set of information specific to lifecycle stage proposals."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "CreateGlossaryTermProposal",
                    "namespace": "com.linkedin.pegasus2avro.actionrequest",
                    "fields": [
                      {
                        "type": "string",
                        "name": "name",
                        "doc": "Name of the proposed Glossary Term"
                      },
                      {
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "parentNode",
                        "default": null,
                        "doc": "The urn of the parent node of the Proposed Term"
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "description",
                        "default": null,
                        "doc": "The description of the Proposed Term"
                      }
                    ]
                  }
                ],
                "name": "createGlossaryTermProposal",
                "default": null,
                "doc": "An optional set of information specific to proposals for creating new Glossary Terms."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "CreateGlossaryNodeProposal",
                    "namespace": "com.linkedin.pegasus2avro.actionrequest",
                    "fields": [
                      {
                        "type": "string",
                        "name": "name",
                        "doc": "Name of the proposed Glossary Node"
                      },
                      {
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "parentNode",
                        "default": null,
                        "doc": "The urn of the parent node of the Proposed Node"
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "description",
                        "default": null,
                        "doc": "The description of the Proposed Node"
                      }
                    ]
                  }
                ],
                "name": "createGlossaryNodeProposal",
                "default": null,
                "doc": "An optional set of information specific to proposals for creating new Glossary Nodes."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "DescriptionProposal",
                    "namespace": "com.linkedin.pegasus2avro.actionrequest",
                    "fields": [
                      {
                        "type": "string",
                        "name": "description",
                        "doc": "The text of the description."
                      }
                    ]
                  }
                ],
                "name": "updateDescriptionProposal",
                "default": null,
                "doc": "An optional set of information specific to proposals for updating Descriptions."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "DataContractProposal",
                    "namespace": "com.linkedin.pegasus2avro.actionrequest",
                    "fields": [
                      {
                        "type": [
                          {
                            "type": "enum",
                            "symbolDocs": {
                              "ADD": "Add contracts to existing contract",
                              "OVERWRITE": "Overwrite the contract in its entirety"
                            },
                            "name": "DataContractProposalOperationType",
                            "namespace": "com.linkedin.pegasus2avro.actionrequest",
                            "symbols": [
                              "ADD",
                              "OVERWRITE"
                            ]
                          },
                          "null"
                        ],
                        "name": "type",
                        "default": "OVERWRITE",
                        "doc": "How to apply the Data Contract"
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": "com.linkedin.pegasus2avro.datacontract.SchemaContract"
                          }
                        ],
                        "name": "schema",
                        "default": null,
                        "doc": "An optional set of schema contracts. If this is a dataset contract, there will only be one."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": "com.linkedin.pegasus2avro.datacontract.FreshnessContract"
                          }
                        ],
                        "name": "freshness",
                        "default": null,
                        "doc": "An optional set of Freshness contracts. If this is a dataset contract, there will only be one."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": "com.linkedin.pegasus2avro.datacontract.DataQualityContract"
                          }
                        ],
                        "name": "dataQuality",
                        "default": null,
                        "doc": "An optional set of Data Quality contracts, e.g. table and column level contract constraints."
                      }
                    ]
                  }
                ],
                "name": "dataContractProposal",
                "default": null,
                "doc": "A proposal to create or modify a Data Contract"
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "ActionWorkflowFormRequest",
                    "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                    "fields": [
                      {
                        "Searchable": {
                          "fieldName": "actionWorkflow"
                        },
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "type": "string",
                        "name": "workflow",
                        "doc": "The urn of the associated access request workflow."
                      },
                      {
                        "Searchable": {
                          "fieldName": "workflowCategory"
                        },
                        "type": "com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowCategory",
                        "name": "category",
                        "doc": "The category of the workflow. \nPrimarily used for searching / filtering action requests."
                      },
                      {
                        "Searchable": {
                          "fieldName": "customWorkflowCategory"
                        },
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "customCategory",
                        "default": null,
                        "doc": "The custom category of the workflow, if category is custom.\nPrimarily used for searching / filtering action requests."
                      },
                      {
                        "type": {
                          "type": "array",
                          "items": {
                            "type": "record",
                            "name": "ActionWorkflowFormRequestField",
                            "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                            "fields": [
                              {
                                "type": "string",
                                "name": "id",
                                "doc": "Workflow-local id for the field"
                              },
                              {
                                "type": {
                                  "type": "array",
                                  "items": [
                                    "string",
                                    "double"
                                  ]
                                },
                                "name": "values",
                                "doc": "Value, reused model from structured properties. Empty if no response was provided."
                              }
                            ],
                            "doc": "Simply capture the field id + the value."
                          }
                        },
                        "name": "fields",
                        "doc": "Custom fields provided by the user making the request if the action request is of type FORM_SUBMITTED\nEventually, these may need to become search indexed. For now, not indexed."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "ActionWorkflowRequestAccess",
                            "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                            "fields": [
                              {
                                "Searchable": {
                                  "fieldType": "DATETIME"
                                },
                                "type": [
                                  "null",
                                  "long"
                                ],
                                "name": "expiresAt",
                                "default": null,
                                "doc": "Expiration time for the action request (optional, if part of the template)."
                              }
                            ]
                          }
                        ],
                        "name": "access",
                        "default": null,
                        "doc": "Details specific for access request workflow requests."
                      },
                      {
                        "type": {
                          "type": "record",
                          "name": "ActionWorkflowRequestStepState",
                          "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                          "fields": [
                            {
                              "Searchable": {
                                "fieldName": "workflowStepId"
                              },
                              "type": "string",
                              "name": "stepId",
                              "doc": "The id of the current step in the workflow, which should be of type ACTION_REQUEST_REVIEW."
                            }
                          ]
                        },
                        "name": "stepState",
                        "doc": "State related to steps. This should correspond to a step of type ACTION_REQUEST_REVIEW in the workflow\ndefinition."
                      },
                      {
                        "Searchable": {
                          "/*/decidedBy": {
                            "fieldName": "stepDecisionDecidedBy",
                            "fieldType": "URN",
                            "queryByDefault": false
                          },
                          "/*/result": {
                            "fieldName": "stepDecisionResult",
                            "fieldType": "KEYWORD",
                            "queryByDefault": false
                          }
                        },
                        "type": [
                          {
                            "type": "array",
                            "items": {
                              "type": "record",
                              "name": "StepDecision",
                              "namespace": "com.linkedin.pegasus2avro.actionrequest",
                              "fields": [
                                {
                                  "type": "string",
                                  "name": "stepId",
                                  "doc": "Identifier of the step in the workflow definition."
                                },
                                {
                                  "java": {
                                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                  },
                                  "Urn": "Urn",
                                  "type": [
                                    "null",
                                    "string"
                                  ],
                                  "name": "decidedBy",
                                  "default": null,
                                  "doc": "The actor who decided. Null when result = SKIPPED \u2014 the system, not a\nhuman, decided to skip this step based on the step's condition."
                                },
                                {
                                  "type": {
                                    "type": "enum",
                                    "symbolDocs": {
                                      "ACCEPTED": " The actor approved the step. ",
                                      "CANCELLED": "The requester (or admin) cancelled the request before reaching COMPLETE.\nTerminates the workflow. Distinct from REJECTED for audit clarity.",
                                      "REJECTED": " The actor rejected the step. Terminates the workflow. ",
                                      "SKIPPED": "The system skipped the step because its inclusion condition evaluated\nfalse at advance time. No human action."
                                    },
                                    "name": "StepDecisionResult",
                                    "namespace": "com.linkedin.pegasus2avro.actionrequest",
                                    "symbols": [
                                      "ACCEPTED",
                                      "REJECTED",
                                      "CANCELLED",
                                      "SKIPPED"
                                    ],
                                    "doc": "Outcome of a single step transition in a workflow form request."
                                  },
                                  "name": "result",
                                  "doc": "Outcome of the step."
                                },
                                {
                                  "type": [
                                    "null",
                                    "string"
                                  ],
                                  "name": "note",
                                  "default": null,
                                  "doc": "Optional human-provided note (for ACCEPTED/REJECTED/CANCELLED) or\ntruncated serialized expression that caused the skip (for SKIPPED).\nTruncated to 500 characters."
                                },
                                {
                                  "type": "long",
                                  "name": "timestamp",
                                  "doc": "Epoch milliseconds when the decision was recorded."
                                },
                                {
                                  "java": {
                                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                  },
                                  "Urn": "Urn",
                                  "type": [
                                    "null",
                                    "string"
                                  ],
                                  "name": "satisfiedSlot",
                                  "default": null,
                                  "doc": "The actor slot that this decision satisfied. May be set to:\n  - the deciding user's own URN (the actor was a direct user slot),\n  - a CorpGroup URN (the decider is a group member, and the group is a slot),\n  - a DataHubRole URN (the decider holds the role transitively through groups,\n    and the role is a slot).\n\nACCEPT path: a single accept may produce MULTIPLE StepDecision entries when\none user satisfies multiple slots \u2014 one entry per newly satisfied slot, all\nsharing decidedBy + timestamp. FE callers MUST compute approval progress by\ncounting distinct satisfiedSlot URNs on ACCEPTED decisions for the step, NOT\nby counting `decisions[]`. See access-workflows.md.\n\nREJECT path: at most one StepDecision is emitted, annotated with the\nsingle best-match slot (precedence: direct user > group > role). The\nasymmetry vs ACCEPT is intentional \u2014 rejection halts the request immediately.\n\nUnset when no slot matched (defensive fallback for misconfigured dynamicSource\nor stale entity data) or when the v2 feature flag is OFF."
                                }
                              ],
                              "doc": "A single decision recorded against a step in a workflow form request.\nAppend-only: each transition (ACCEPTED, REJECTED, CANCELLED, SKIPPED)\nappends one StepDecision. The `ActionWorkflowFormRequest.decisions` array\nthat holds these is added in a subsequent task."
                            }
                          },
                          "null"
                        ],
                        "name": "decisions",
                        "default": [],
                        "doc": "Append-only history of step transitions. Each step transition\n(approve, reject, cancel, skip) appends one StepDecision.\n\n@Searchable on decidedBy enables \"all requests Alice has acted on\"\nqueries. @Searchable on result enables filter by outcome."
                      }
                    ],
                    "doc": "A request for an access workflow form to be reviewed.\n\nFor an access workflow of trigger type FORM, this action request currently represents the \"state\" \nof the workflow instance. \n\nIn the future, we may add more features like due dates, escalations, etc.\nIdeally, for now we are keeping these out of here."
                  }
                ],
                "name": "workflowFormRequest",
                "default": null,
                "doc": "An action workflow form request."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "TaskInputParams",
                    "namespace": "com.linkedin.pegasus2avro.actionrequest",
                    "fields": [
                      {
                        "Searchable": {
                          "fieldName": "taskUrn",
                          "fieldType": "KEYWORD",
                          "queryByDefault": false
                        },
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "taskUrn",
                        "default": null,
                        "doc": "The task definition that spawned this input request"
                      },
                      {
                        "Searchable": {
                          "fieldName": "agentUrn",
                          "fieldType": "KEYWORD",
                          "queryByDefault": false
                        },
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "agentUrn",
                        "default": null,
                        "doc": "The agent that requested this input"
                      },
                      {
                        "type": "string",
                        "name": "question",
                        "doc": "The question or prompt the agent is asking the human"
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": {
                              "type": "record",
                              "name": "TaskInputOption",
                              "namespace": "com.linkedin.pegasus2avro.actionrequest",
                              "fields": [
                                {
                                  "type": "string",
                                  "name": "id",
                                  "doc": "Machine-readable identifier for this option"
                                },
                                {
                                  "type": "string",
                                  "name": "label",
                                  "doc": "Human-readable label shown in the UI"
                                },
                                {
                                  "type": [
                                    "null",
                                    "string"
                                  ],
                                  "name": "description",
                                  "default": null,
                                  "doc": "Optional description providing additional context about this option"
                                }
                              ],
                              "doc": "A structured choice option presented to a human when an agent\nrequests input during a task run."
                            }
                          }
                        ],
                        "name": "options",
                        "default": null,
                        "doc": "Structured choices the human can pick from.\nWhen absent, the human provides a freeform text response."
                      },
                      {
                        "type": "boolean",
                        "name": "freeformAllowed",
                        "default": true,
                        "doc": "Whether the human can type a freeform text response\nin addition to (or instead of) the structured options."
                      }
                    ],
                    "doc": "Parameters for an action request of type \"TASK_INPUT\".\n\nCreated when an agent calls request_decision during a task run,\nallowing it to pause and wait for human input before continuing.\n\nThe action request's resource field holds the execution request URN (the task run),\nand assignedUsers/Groups controls who can respond."
                  }
                ],
                "name": "taskInputParams",
                "default": null,
                "doc": "Parameters for a task input request (type = \"TASK_INPUT\").\nCreated when an agent pauses a task run to request human input."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "DocumentsProposal",
                    "namespace": "com.linkedin.pegasus2avro.actionrequest",
                    "fields": [
                      {
                        "Searchable": {
                          "addToFilters": true,
                          "fieldName": "documentProposalType",
                          "fieldType": "KEYWORD"
                        },
                        "type": {
                          "type": "enum",
                          "symbolDocs": {
                            "ANNOTATE": "Proposing that annotations be added to one or more documents.",
                            "CONFLICT": "Alerting that two or more documents have conflicting content,\nrequiring user action to resolve.",
                            "EDIT": "Proposing an edit to the content of one or more documents.",
                            "STATE_CHANGE": "Proposing a lifecycle state change on one or more documents\n(e.g. publish or unpublish)."
                          },
                          "name": "DocumentProposalType",
                          "namespace": "com.linkedin.pegasus2avro.actionrequest",
                          "symbols": [
                            "STATE_CHANGE",
                            "EDIT",
                            "ANNOTATE",
                            "CONFLICT"
                          ],
                          "doc": "The type of change being proposed for a set of context documents."
                        },
                        "name": "proposalType",
                        "doc": "The category of change being proposed."
                      },
                      {
                        "Searchable": {
                          "/*/draftDocument": {
                            "addToFilters": true,
                            "fieldName": "proposedDraftDocuments",
                            "fieldType": "URN"
                          },
                          "/*/targetDocument": {
                            "addToFilters": true,
                            "fieldName": "proposedTargetDocuments",
                            "fieldType": "URN"
                          }
                        },
                        "type": {
                          "type": "array",
                          "items": {
                            "type": "record",
                            "name": "DocumentChange",
                            "namespace": "com.linkedin.pegasus2avro.actionrequest",
                            "fields": [
                              {
                                "Relationship": {
                                  "entityTypes": [
                                    "document"
                                  ],
                                  "name": "ProposedTargetDocument"
                                },
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "Urn": "Urn",
                                "entityTypes": [
                                  "document"
                                ],
                                "type": "string",
                                "name": "targetDocument",
                                "doc": "The base document this change affects."
                              },
                              {
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "Urn": "Urn",
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "targetLifecycleStage",
                                "default": null,
                                "doc": "The desired lifecycle stage after the proposal is accepted.\nA null value simply means that no lifecycle change will happen when\naccepting this proposal."
                              },
                              {
                                "Relationship": {
                                  "entityTypes": [
                                    "document"
                                  ],
                                  "name": "ProposedDraftDocument"
                                },
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "Urn": "Urn",
                                "entityTypes": [
                                  "document"
                                ],
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "draftDocument",
                                "default": null,
                                "doc": "EDIT / ANNOTATE: a draft document containing the staged changes.\nThe draft document's contents represent the proposed edited text. On proposal acceptance,\nthe target document's contents are updated to reflect the draft.\nThe draft document is in a DRAFT lifecycle state and is filtered from normal UI views."
                              }
                            ],
                            "doc": "Represents a proposed change to a single document within a DocumentsProposal."
                          }
                        },
                        "name": "documents",
                        "doc": "The individual document-level proposals. For CONFLICT proposals this will\ncontain two entries \u2014 one per conflicting document. If the proposal is\naccepted, these changes will be brought to their target document."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "rationale",
                        "default": null,
                        "doc": "Human-readable rationale explaining why this proposal was raised.\nPopulated by AI-generated proposals to explain the reasoning."
                      },
                      {
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "proposedLifecycleStage",
                        "default": null,
                        "doc": "For STATE_CHANGE proposals: the lifecycle stage that was originally proposed at creation\ntime. This field is immutable after creation and is used by the UI to display the\noriginal intent (e.g., \"Proposed: Publish\") even if the reviewer later modifies\nDocumentChange.targetLifecycleStage during review."
                      }
                    ],
                    "doc": "Parameters for a proposal affecting one or more context documents.\nUsed as a field within ActionRequestParams.\n\nOn acceptance, each DocumentProposal within this record is applied to its\ntarget document: lifecycle stage is updated, draft content is merged, and\ndraft annotations are appended to the target document's annotations."
                  }
                ],
                "name": "documentsProposal",
                "default": null,
                "doc": "Parameters for a documents proposal (type = \"DOCUMENTS_PROPOSAL\").\nUsed when proposing state changes, edits, annotations, or conflict resolution\nfor one or more context documents."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "PostAttachment",
                    "namespace": "com.linkedin.pegasus2avro.actionrequest",
                    "fields": [
                      {
                        "Relationship": {
                          "entityTypes": [
                            "post"
                          ],
                          "name": "ProposedAttachmentPost"
                        },
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "entityTypes": [
                          "post"
                        ],
                        "type": "string",
                        "name": "postUrn",
                        "doc": "The Post being proposed for attachment. Required at proposal-creation\ntime \u2014 the Post must already exist in GMS."
                      },
                      {
                        "Relationship": {
                          "entityTypes": [
                            "document",
                            "dataset",
                            "chart",
                            "dashboard",
                            "container",
                            "domain",
                            "dataProduct",
                            "glossaryTerm",
                            "glossaryNode"
                          ],
                          "name": "PostAttachmentTarget"
                        },
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "entityTypes": [
                          "document",
                          "dataset",
                          "chart",
                          "dashboard",
                          "container",
                          "domain",
                          "dataProduct",
                          "glossaryTerm",
                          "glossaryNode"
                        ],
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "attachedUrn",
                        "default": null,
                        "doc": "The target URN the SME has decided to attach the Post to. Empty at\nproposal-creation time; populated during SME review (e.g. via\n``updateDocumentProposal``-equivalent mutation) before accept. If\nstill empty on accept, the accept handler is a no-op (the SME chose\nto leave the Post unattached for now)."
                      }
                    ],
                    "doc": "Parameters for a POST_ATTACHMENT_PROPOSAL action request.\nRaised when an agent creates a Post with no target entity yet.\nOn accept the SME picks a target URN; on reject the Post is left unattached.\n\nNAMING NOTE: this reads like \"an attachment exists, propose it\" \u2014 but\nthe inverse is true. The Post is currently *unattached* (target=null);\nthis proposal asks the SME to pick something to attach it to. Contrast\nwith DOCUMENTS_PROPOSAL/ANNOTATE, which already has its target Document\nat proposal-creation time. Rename to UNATTACHED_POST_PROPOSAL was\nconsidered but spans PDL + GraphQL + Java + React + persisted data \u2014\nkept the name, added this note."
                  }
                ],
                "name": "postAttachment",
                "default": null,
                "doc": "Parameters for a post attachment proposal (type = \"POST_ATTACHMENT_PROPOSAL\").\nUsed to propose attaching an existing Post (typically an AI-generated\nobservation) to a target entity. The SME picks the target during\nreview; accept sets ``PostInfo.target`` accordingly."
              }
            ],
            "doc": "Parameters provided with a particular action request. Only one of the fields will be populated,\ndepending on the action request type."
          }
        ],
        "name": "params",
        "default": null,
        "doc": "Parameters specific for a particular Action Request type"
      },
      {
        "Searchable": {
          "fieldType": "COUNT"
        },
        "type": "long",
        "name": "created",
        "doc": "The time at which the request was initially created"
      },
      {
        "Searchable": {
          "fieldType": "URN"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "createdBy",
        "doc": "Who the action request was created by"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "An optional description that can be added to the action request\nto explain the intention behind it."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "dueDate",
        "default": null,
        "doc": "The time at which the request is due"
      },
      {
        "Searchable": {
          "addToFilters": true
        },
        "type": [
          {
            "type": "enum",
            "symbolDocs": {
              "INFERRED": "The Action Request was inferred by an inference pipeline, e.g. DataHub AI.",
              "MANUAL": "The Action Request was created by the user or group via the API or UI"
            },
            "name": "ActionRequestOrigin",
            "namespace": "com.linkedin.pegasus2avro.actionrequest",
            "symbols": [
              "MANUAL",
              "INFERRED"
            ],
            "doc": "The origin type of an Action Request"
          },
          "null"
        ],
        "name": "origin",
        "default": "MANUAL",
        "doc": "The origin of the action request"
      },
      {
        "Searchable": {
          "/confidenceLevel": {
            "addToFilters": true,
            "fieldName": "inferenceConfidenceLevel"
          },
          "/lastInferredAt": {
            "fieldName": "inferenceLastInferredAt"
          }
        },
        "type": [
          "null",
          {
            "type": "record",
            "name": "InferenceMetadata",
            "namespace": "com.linkedin.pegasus2avro.ai",
            "fields": [
              {
                "type": "long",
                "name": "lastInferredAt",
                "doc": "Timestamp of the last inference in milliseconds."
              },
              {
                "type": "int",
                "name": "version",
                "doc": "Monotonically incrementing version number. Once bumped, will re-trigger a new inference."
              },
              {
                "type": [
                  "null",
                  "int"
                ],
                "name": "confidenceLevel",
                "default": null,
                "doc": "Numeric confidence level of the inference that was made.\n\n   0 = Low Confidence\n   1 = Medium Confidence\n   2 = High Confidence"
              }
            ],
            "doc": "Reusable metadata about an individual inference - i.e. a single glossary term, tag, description, etc."
          }
        ],
        "name": "inferenceMetadata",
        "default": null,
        "doc": "Additional inference metadata. Optionally provided if the origin is INFERRED."
      }
    ],
    "doc": "The status of the action request - e.g. accepted, rejected, pending, etc"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "actionRequestEvals"
    },
    "name": "ActionRequestEvals",
    "namespace": "com.linkedin.pegasus2avro.actionrequest",
    "fields": [
      {
        "Relationship": {
          "/*/evalUrn": {
            "entityTypes": [
              "eval"
            ],
            "name": "ActionRequestEval"
          }
        },
        "Searchable": {
          "/*/evalUrn": {
            "fieldName": "evalUrns",
            "fieldType": "URN",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "ActionRequestEvalAssignment",
            "namespace": "com.linkedin.pegasus2avro.actionrequest",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "evalUrn",
                "doc": "The eval entity assigned to this proposal."
              }
            ],
            "doc": "A single eval assigned to an action request (proposal)."
          }
        },
        "name": "evals",
        "doc": "The evals assigned to this proposal."
      }
    ],
    "doc": "Tracks which evals are assigned to an action request (proposal).\nWritten when a user selects evals to run against a proposal's\nproposed document changes. Can be extended later with per-eval\nrun result summaries."
  },
  {
    "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": "datasetDeprecation"
    },
    "Deprecated": true,
    "name": "DatasetDeprecation",
    "namespace": "com.linkedin.pegasus2avro.dataset",
    "fields": [
      {
        "Searchable": {
          "fieldType": "BOOLEAN",
          "weightsPerFieldValue": {
            "true": 0.5
          }
        },
        "type": "boolean",
        "name": "deprecated",
        "doc": "Whether the dataset is deprecated by owner."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "decommissionTime",
        "default": null,
        "doc": "The time user plan to decommission this dataset."
      },
      {
        "type": "string",
        "name": "note",
        "doc": "Additional information about the dataset deprecation plan, such as the wiki, doc, RB."
      },
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "actor",
        "default": null,
        "doc": "The corpuser URN which will be credited for modifying this deprecation content."
      }
    ],
    "doc": "Dataset deprecation status\nDeprecated! This aspect is deprecated in favor of the more-general-purpose 'Deprecation' aspect."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "datasetUpstreamLineage"
    },
    "deprecated": "use UpstreamLineage.fineGrainedLineages instead",
    "name": "DatasetUpstreamLineage",
    "namespace": "com.linkedin.pegasus2avro.dataset",
    "fields": [
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "deprecated": "use FineGrainedLineage instead",
            "name": "DatasetFieldMapping",
            "namespace": "com.linkedin.pegasus2avro.dataset",
            "fields": [
              {
                "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                "name": "created",
                "doc": "Audit stamp containing who reported the field mapping and when"
              },
              {
                "type": [
                  {
                    "type": "enum",
                    "symbolDocs": {
                      "BLACKBOX": "Field transformation expressed as unknown black box function.",
                      "IDENTITY": "Field transformation expressed as Identity function."
                    },
                    "name": "TransformationType",
                    "namespace": "com.linkedin.pegasus2avro.common.fieldtransformer",
                    "symbols": [
                      "BLACKBOX",
                      "IDENTITY"
                    ],
                    "doc": "Type of the transformation involved in generating destination fields from source fields."
                  },
                  {
                    "type": "record",
                    "name": "UDFTransformer",
                    "namespace": "com.linkedin.pegasus2avro.common.fieldtransformer",
                    "fields": [
                      {
                        "type": "string",
                        "name": "udf",
                        "doc": "A UDF mentioning how the source fields got transformed to destination field. This is the FQCN(Fully Qualified Class Name) of the udf."
                      }
                    ],
                    "doc": "Field transformation expressed in UDF"
                  }
                ],
                "name": "transformation",
                "doc": "Transfomration function between the fields involved"
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    "string"
                  ]
                },
                "name": "sourceFields",
                "doc": "Source fields from which the fine grained lineage is derived"
              },
              {
                "deprecated": "use SchemaFieldPath and represent as generic Urn instead",
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.DatasetFieldUrn"
                },
                "Urn": "DatasetFieldUrn",
                "type": "string",
                "name": "destinationField",
                "doc": "Destination field which is derived from source fields"
              }
            ],
            "doc": "Representation of mapping between fields in source dataset to the field in destination dataset"
          }
        },
        "name": "fieldMappings",
        "doc": "Upstream to downstream field level lineage mappings"
      }
    ],
    "doc": "Fine Grained upstream lineage for fields in a dataset"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "schemaFieldProfile",
      "type": "timeseries"
    },
    "name": "SchemaFieldProfile",
    "namespace": "com.linkedin.pegasus2avro.dataset",
    "fields": [
      {
        "type": [
          "null",
          "long"
        ],
        "name": "uniqueCount",
        "default": null,
        "doc": "The count of unique values for the field across the dataset.\nUseful for understanding the diversity of field values."
      },
      {
        "type": [
          "null",
          "float"
        ],
        "name": "uniqueProportion",
        "default": null,
        "doc": "The proportion of unique values over the total number of non-null entries.\nHelps in assessing the uniqueness of the data in the field."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "nullCount",
        "default": null,
        "doc": "The count of null or missing entries for the field.\nImportant for data quality assessments."
      },
      {
        "type": [
          "null",
          "float"
        ],
        "name": "nullProportion",
        "default": null,
        "doc": "The proportion of null entries over the total number of entries in the field.\nUseful for identifying fields with a high rate of missing values."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "min",
        "default": null,
        "doc": "The minimum value in the field for string-representable data types.\nProvides a sense of the lower bound of field values."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "max",
        "default": null,
        "doc": "The maximum value in the field for string-representable data types.\nProvides a sense of the upper bound of field values."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "mean",
        "default": null,
        "doc": "The mean (average) value of the field, represented as a string.\nUseful for numerical fields to understand the central tendency."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "median",
        "default": null,
        "doc": "The median value of the field, represented as a string.\nUseful for understanding the middle value when data is sorted."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "stdev",
        "default": null,
        "doc": "The standard deviation of the field values, represented as a string.\nIndicates the amount of variation or dispersion of field values."
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "Quantile",
              "namespace": "com.linkedin.pegasus2avro.dataset",
              "fields": [
                {
                  "type": "string",
                  "name": "quantile"
                },
                {
                  "type": "string",
                  "name": "value"
                }
              ]
            }
          }
        ],
        "name": "quantiles",
        "default": null,
        "doc": "Only for numerical columns. Sorted list of quantile cutoffs for the field, in ascending order.\nHelps in assessing the diversity of the data in the field.\nExpect both the quantile and the value field to be string-ified floats.\nEx: quantile: \"0.25\", value: \"1.0\" means the 25th percentile of values falls at 1.0"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "Histogram",
            "namespace": "com.linkedin.pegasus2avro.dataset",
            "fields": [
              {
                "type": {
                  "type": "array",
                  "items": "string"
                },
                "name": "boundaries"
              },
              {
                "type": {
                  "type": "array",
                  "items": "float"
                },
                "name": "heights"
              }
            ]
          }
        ],
        "name": "histogram",
        "default": null,
        "doc": "Only for numerical columns. A histogram where a range of values in a numerical column\nare rolled up into bins, with the heights representing the number of values in that bin.\nDivided into k bin boundaries, with k-1 frequencies; first+last frequency values are tail weights\nCurrently unused in the product."
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "ValueFrequency",
              "namespace": "com.linkedin.pegasus2avro.dataset",
              "fields": [
                {
                  "type": "string",
                  "name": "value"
                },
                {
                  "type": "long",
                  "name": "frequency"
                }
              ]
            }
          }
        ],
        "name": "distinctValueFrequencies",
        "default": null,
        "doc": "Volume of each column value for a low-cardinality / categorical field.\nUseful for understanding the distribution of values in the field, and monitoring for changes\nin specific value volumes.\nFor numeric colums, the value will contain a strigified value."
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "sampleValues",
        "default": null,
        "doc": "N randomly sampled values of the column. Useful for showing rough preview of the column."
      },
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "record",
            "name": "DatasetMetricsSourceDetails",
            "namespace": "com.linkedin.pegasus2avro.dataset",
            "fields": [
              {
                "TimeseriesField": {},
                "type": "com.linkedin.pegasus2avro.common.MetadataProducerType",
                "name": "producerType",
                "doc": "The specific type of producer for the operation."
              },
              {
                "TimeseriesField": {},
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": [
                  "null",
                  "string"
                ],
                "name": "producerUrn",
                "default": null,
                "doc": "The producer urn for the operation. Only provided is producerType == MONITOR currently,\nwhere it will be set to the monitor urn that sampled the operation. Ideally, this also contains\nthe ingestion source urn if applicable."
              },
              {
                "TimeseriesField": {},
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "ALL_ROWS_QUERY": "Issue a query to the table to obtain the metric or values across\nall rows.",
                    "AUDIT_LOG": "Operation was identified by inspecting an audit log API",
                    "CHANGED_ROWS_QUERY": "Issue a query to the table to obtain the metric values across\nonly the rows which have changed since the previous evaluation.",
                    "FILE_METADATA": "Operation was identified by inspecting underlying file system.",
                    "INFORMATION_SCHEMA": "Operation was identified by inspecting an information schema table, or other system metadata table."
                  },
                  "name": "DatasetMetricsOriginType",
                  "namespace": "com.linkedin.pegasus2avro.dataset",
                  "symbols": [
                    "ALL_ROWS_QUERY",
                    "CHANGED_ROWS_QUERY",
                    "INFORMATION_SCHEMA",
                    "AUDIT_LOG",
                    "FILE_METADATA"
                  ]
                },
                "name": "originType",
                "doc": "The specific origin of the metric with regards to the source platform."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.assertion.FreshnessFieldSpec"
                ],
                "name": "changedRowsField",
                "default": null,
                "doc": "A field that can be used to filter for the fresh rows since the previous assertion\nevaluation. This should be present when sourceType = CHANGED_ROWS_QUERY.\n\nIf not provided, or the metricSourceType is not QUERY, then the assertion will be evaluated against the\nentire dataset."
              },
              {
                "type": [
                  "null",
                  {
                    "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": "Any additional filters that were applied in a query to retrieve the metric.\nOnly possible to be present if originType is ALL_ROWS_QUERY or CHANGED_ROWS_QUERY."
              }
            ],
            "doc": "Additional details about the origins of a captured source-platform Metric or Metric Set."
          }
        ],
        "name": "source",
        "default": null,
        "doc": "Rich details about the source of the metrics provided in this profile."
      }
    ],
    "doc": "Metrics corresponding to a single schema field.\nNotice that this aspect may be partially completed so the user\nshould filter for existence of the stats they need when querying.\n\nIn the long term, this serves as a replacement for the DatasetFieldProfile object.\nNote that it does not yet support quantiles, histograms, etc, but may evolve to in the future."
  },
  {
    "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",
          "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 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": "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": {
              "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"
      },
      {
        "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": "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": "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": "datasetProfile",
      "type": "timeseries"
    },
    "name": "DatasetProfile",
    "namespace": "com.linkedin.pegasus2avro.dataset",
    "fields": [
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      },
      {
        "Searchable": {
          "fieldType": "COUNT",
          "hasValuesFieldName": "hasRowCount"
        },
        "TimeseriesField": {},
        "type": [
          "null",
          "long"
        ],
        "name": "rowCount",
        "default": null,
        "doc": "The total number of rows"
      },
      {
        "Searchable": {
          "fieldType": "COUNT",
          "hasValuesFieldName": "hasColumnCount"
        },
        "TimeseriesField": {},
        "type": [
          "null",
          "long"
        ],
        "name": "columnCount",
        "default": null,
        "doc": "The total number of columns (or schema fields)"
      },
      {
        "Searchable": {
          "fieldType": "COUNT",
          "hasValuesFieldName": "hasSizeInBytes"
        },
        "TimeseriesField": {},
        "type": [
          "null",
          "long"
        ],
        "name": "sizeInBytes",
        "default": null,
        "doc": "Storage size in bytes"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "DatasetFieldProfile",
              "namespace": "com.linkedin.pegasus2avro.dataset",
              "fields": [
                {
                  "type": [
                    "null",
                    "long"
                  ],
                  "name": "uniqueCount",
                  "default": null,
                  "doc": "The count of unique values for the field across the dataset.\nUseful for understanding the diversity of field values."
                },
                {
                  "type": [
                    "null",
                    "float"
                  ],
                  "name": "uniqueProportion",
                  "default": null,
                  "doc": "The proportion of unique values over the total number of non-null entries.\nHelps in assessing the uniqueness of the data in the field."
                },
                {
                  "type": [
                    "null",
                    "long"
                  ],
                  "name": "nullCount",
                  "default": null,
                  "doc": "The count of null or missing entries for the field.\nImportant for data quality assessments."
                },
                {
                  "type": [
                    "null",
                    "float"
                  ],
                  "name": "nullProportion",
                  "default": null,
                  "doc": "The proportion of null entries over the total number of entries in the field.\nUseful for identifying fields with a high rate of missing values."
                },
                {
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "min",
                  "default": null,
                  "doc": "The minimum value in the field for string-representable data types.\nProvides a sense of the lower bound of field values."
                },
                {
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "max",
                  "default": null,
                  "doc": "The maximum value in the field for string-representable data types.\nProvides a sense of the upper bound of field values."
                },
                {
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "mean",
                  "default": null,
                  "doc": "The mean (average) value of the field, represented as a string.\nUseful for numerical fields to understand the central tendency."
                },
                {
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "median",
                  "default": null,
                  "doc": "The median value of the field, represented as a string.\nUseful for understanding the middle value when data is sorted."
                },
                {
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "stdev",
                  "default": null,
                  "doc": "The standard deviation of the field values, represented as a string.\nIndicates the amount of variation or dispersion of field values."
                },
                {
                  "type": [
                    "null",
                    {
                      "type": "array",
                      "items": "com.linkedin.pegasus2avro.dataset.Quantile"
                    }
                  ],
                  "name": "quantiles",
                  "default": null,
                  "doc": "Only for numerical columns. Sorted list of quantile cutoffs for the field, in ascending order.\nHelps in assessing the diversity of the data in the field.\nExpect both the quantile and the value field to be string-ified floats.\nEx: quantile: \"0.25\", value: \"1.0\" means the 25th percentile of values falls at 1.0"
                },
                {
                  "type": [
                    "null",
                    "com.linkedin.pegasus2avro.dataset.Histogram"
                  ],
                  "name": "histogram",
                  "default": null,
                  "doc": "Only for numerical columns. A histogram where a range of values in a numerical column\nare rolled up into bins, with the heights representing the number of values in that bin.\nDivided into k bin boundaries, with k-1 frequencies; first+last frequency values are tail weights\nCurrently unused in the product."
                },
                {
                  "type": [
                    "null",
                    {
                      "type": "array",
                      "items": "com.linkedin.pegasus2avro.dataset.ValueFrequency"
                    }
                  ],
                  "name": "distinctValueFrequencies",
                  "default": null,
                  "doc": "Volume of each column value for a low-cardinality / categorical field.\nUseful for understanding the distribution of values in the field, and monitoring for changes\nin specific value volumes.\nFor numeric colums, the value will contain a strigified value."
                },
                {
                  "type": [
                    "null",
                    {
                      "type": "array",
                      "items": "string"
                    }
                  ],
                  "name": "sampleValues",
                  "default": null,
                  "doc": "N randomly sampled values of the column. Useful for showing rough preview of the column."
                },
                {
                  "type": "string",
                  "name": "fieldPath",
                  "doc": "The standard path to the field"
                }
              ],
              "doc": "Stats corresponding to fields in a dataset"
            }
          }
        ],
        "name": "fieldProfiles",
        "default": null,
        "doc": "Profiles for each column (or schema field). Notice that we are moving away from\nusing this model and moving toward DatasetFieldProfiles attached to the dataset\nfield urn directly. This field is kept for backward compatibility."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.dataset.DatasetMetricsSourceDetails"
        ],
        "name": "source",
        "default": null,
        "doc": "Rich details about the source of the metrics provided in this profile."
      }
    ],
    "doc": "Metrics corresponding to datasets.\n\nNotice that this aspect may be partially completed so the user\nshould filter for existence of the stats they need when querying."
  },
  {
    "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": "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": "evalInfo"
    },
    "name": "EvalInfo",
    "namespace": "com.linkedin.pegasus2avro.eval",
    "fields": [
      {
        "Relationship": {
          "entityTypes": [
            "aiAgent"
          ],
          "name": "EvalAgent"
        },
        "Searchable": {
          "fieldName": "agent",
          "fieldType": "URN"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "entityTypes": [
          "aiAgent"
        ],
        "type": [
          "null",
          "string"
        ],
        "name": "agent",
        "default": null,
        "doc": "The agent this eval runs against. When absent, the eval targets the\ndefault Ask DataHub base agent. Used as the primary grouping key\n(\"all evals for agent X\")."
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "name",
        "doc": "Display name for this eval"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Human-readable description of what this eval verifies"
      },
      {
        "type": "string",
        "name": "question",
        "doc": "The golden question / prompt sent to the agent under test"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "referenceOutput",
        "default": null,
        "doc": "Optional golden / expected answer for reference-based judging.\nWhen provided, the judge can compare the actual response against this\nfor correctness, not just style or completeness."
      },
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "EvalCondition",
            "namespace": "com.linkedin.pegasus2avro.eval",
            "fields": [
              {
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "LLM_JUDGE": "An LLM judge evaluates whether the agent's response satisfies\nwritten guidelines (e.g. \"must reference the revenue table\")."
                  },
                  "name": "EvalConditionType",
                  "namespace": "com.linkedin.pegasus2avro.eval",
                  "symbols": [
                    "LLM_JUDGE"
                  ],
                  "doc": "The type of condition used to judge an eval response.\nAll conditions on an eval must pass for the eval to pass (logical AND).\n\nEach value maps to an optional sub-record on EvalCondition that holds\nthe type-specific configuration."
                },
                "name": "type",
                "doc": "The type of this condition, which determines how it is judged."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "EvalLlmJudgeCondition",
                    "namespace": "com.linkedin.pegasus2avro.eval",
                    "fields": [
                      {
                        "type": "string",
                        "name": "guidelines",
                        "doc": "Natural-language criteria the LLM judge uses to evaluate the\nagent's response (e.g. \"must reference the revenue table and\naggregate by quarter\")."
                      }
                    ],
                    "doc": "Configuration for an LLM-judged condition. The judge evaluates the\nagent's response against these natural-language guidelines and\ndetermines pass/fail."
                  }
                ],
                "name": "llmJudge",
                "default": null,
                "doc": "LLM judge condition \u2014 populated when type is LLM_JUDGE."
              }
            ],
            "doc": "A single condition that must be satisfied for an eval to pass.\nAll conditions on an eval are evaluated with AND semantics.\n\nThe type enum is the discriminator; exactly one of the per-type\nsub-records should be populated (matching the type value)."
          }
        },
        "name": "conditions",
        "doc": "Conditions that must ALL pass for this eval to pass.\nEach condition has a type discriminator and a matching sub-record\nwith type-specific configuration."
      },
      {
        "Searchable": {
          "/type": {
            "fieldName": "executorType",
            "fieldType": "KEYWORD",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "record",
          "name": "EvalExecutor",
          "namespace": "com.linkedin.pegasus2avro.eval",
          "fields": [
            {
              "type": {
                "type": "enum",
                "symbolDocs": {
                  "EXTERNAL": "Run externally; results reported back to DataHub via reportEvalResult.",
                  "NATIVE": "Run and judged by DataHub natively."
                },
                "name": "EvalExecutorType",
                "namespace": "com.linkedin.pegasus2avro.eval",
                "symbols": [
                  "NATIVE",
                  "EXTERNAL"
                ],
                "doc": "Who executes and judges this eval."
              },
              "name": "type",
              "doc": "Whether this eval is run natively by DataHub or externally."
            }
          ],
          "doc": "Describes who executes and judges this eval. The type field is required;\nadditional fields (e.g. endpoint, config) can be added as the executor\nmodel evolves."
        },
        "name": "executor",
        "doc": "Who executes and judges this eval. Contains a type (NATIVE or EXTERNAL)\nand can be extended with executor-specific config in the future."
      },
      {
        "Searchable": {
          "addToFilters": true,
          "fieldName": "origin",
          "fieldType": "KEYWORD"
        },
        "type": {
          "type": "enum",
          "symbolDocs": {
            "CONTEXT_HUB": "Created via the Context Hub experience for validating\ntext-to-SQL and document-grounded answers.",
            "CUSTOM_AGENT": "Created via the Custom Agent builder for validating\na user-built agent's behavior."
          },
          "name": "EvalOrigin",
          "namespace": "com.linkedin.pegasus2avro.eval",
          "symbols": [
            "CONTEXT_HUB",
            "CUSTOM_AGENT"
          ],
          "doc": "The product area that created this eval. Used for filtering and\ndetermining scheduling behavior (e.g. CONTEXT_HUB evals are\nauto-scheduled on a daily cron)."
        },
        "name": "origin",
        "doc": "Which product area created this eval. Determines scheduling behavior\n(CONTEXT_HUB evals are auto-scheduled daily) and UI filtering."
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "createdAt",
            "fieldType": "DATETIME",
            "queryByDefault": false
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "doc": "When this eval was created"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "lastModifiedAt",
            "fieldType": "DATETIME",
            "queryByDefault": false
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "doc": "When this eval was last modified"
      }
    ],
    "doc": "Core definition of an Eval \u2014 a golden question paired with conditions\nthat the agent's response must satisfy.\n\nEvals always run against a specific agent. When agent is absent, the\neval runs against the default Ask DataHub base agent. Grouping and\nlisting is by agent.\n\nAll conditions must pass for the eval to pass (logical AND)."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "evalDocumentReferences"
    },
    "name": "EvalDocumentReferences",
    "namespace": "com.linkedin.pegasus2avro.eval",
    "fields": [
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "document"
            ],
            "name": "EvalReferencesDocument"
          }
        },
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldName": "referencedDocuments",
            "fieldType": "URN",
            "queryByDefault": false
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "referencedDocuments",
        "doc": "Documents the agent referenced during the most recent non-proposal run."
      }
    ],
    "doc": "Documents whose contents the eval's agent retrieved during its most\nrecent passing non-proposal run, or \u2014 for evals that have never passed\nyet \u2014 the URNs from the first non-proposal run that retrieved any docs.\n\nAuto-populated by the eval executor on non-proposal runs:\n  - PASS  \u2192 UPSERT (authoritative replace, including with empty list)\n  - FAIL/ERROR with URNs \u2192 CREATE (cold-start only; no-op if exists)\n  - FAIL/ERROR without URNs \u2192 no-op (no signal)\n  - Proposal-mode runs (actionRequestUrn set) \u2192 no-op\n\nThe cold-start path ensures a brand-new eval whose first run fails is\nstill surfaced in reverse-doc-search until it eventually passes; the\nskip-on-FAIL path ensures a flaky failure on an established eval does\nnot wipe its curated association list.\n\nStored as a dedicated aspect (not a field on EvalInfo) so executor\nwritebacks don't race with user edits to the eval definition."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "evalRunSummary"
    },
    "name": "EvalRunSummary",
    "namespace": "com.linkedin.pegasus2avro.eval",
    "fields": [
      {
        "Searchable": {
          "fieldName": "lastFailedAtMillis",
          "fieldType": "DATETIME"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "lastFailedAtMillis",
        "default": null,
        "doc": "Timestamp of the last failing run (epoch ms UTC)."
      },
      {
        "Searchable": {
          "fieldName": "lastErroredAtMillis",
          "fieldType": "DATETIME"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "lastErroredAtMillis",
        "default": null,
        "doc": "Timestamp of the last errored run (epoch ms UTC)."
      },
      {
        "Searchable": {
          "fieldName": "lastPassedAtMillis",
          "fieldType": "DATETIME"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "lastPassedAtMillis",
        "default": null,
        "doc": "Timestamp of the last passing run (epoch ms UTC)."
      },
      {
        "Searchable": {
          "addToFilters": true,
          "fieldName": "evalStatus",
          "fieldType": "KEYWORD"
        },
        "type": [
          "null",
          {
            "type": "enum",
            "name": "EvalStatus",
            "namespace": "com.linkedin.pegasus2avro.eval",
            "symbols": [
              "PASSING",
              "FAILING",
              "ERROR",
              "INIT"
            ],
            "doc": "Derived latest status for an eval, computed from run events."
          }
        ],
        "name": "evalStatus",
        "default": null,
        "doc": "Current derived status."
      }
    ],
    "doc": "Derived aspect tracking the latest eval run status.\nEnables fast UI lookups without scanning the full timeseries."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "evalRunEvent",
      "schemaVersion": 3,
      "type": "timeseries"
    },
    "name": "EvalRunEvent",
    "namespace": "com.linkedin.pegasus2avro.eval",
    "fields": [
      {
        "Searchable": {
          "fieldName": "lastCompletedTime",
          "fieldType": "DATETIME"
        },
        "type": "long",
        "name": "timestampMillis",
        "doc": "When this eval run completed (epoch ms UTC)."
      },
      {
        "TimeseriesField": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "evalUrn",
        "doc": "The eval entity that was run."
      },
      {
        "TimeseriesField": {},
        "type": {
          "type": "enum",
          "symbolDocs": {
            "COMPLETE": "The eval run completed (pass, fail, or error in result).",
            "QUEUED": "The eval has been accepted for execution and is waiting to be picked up\nby an executor. Emitted by the GMS-side execution request creator.",
            "RUNNING": "An executor has picked up the eval and started processing it. Emitted\nby the executor immediately before invoking the agent under test."
          },
          "name": "EvalRunStatus",
          "namespace": "com.linkedin.pegasus2avro.eval",
          "symbols": [
            "QUEUED",
            "RUNNING",
            "COMPLETE"
          ],
          "doc": "The lifecycle status of an eval run.\n\nEmitted as separate timeseries EvalRunEvent records:\nQUEUED -> RUNNING -> COMPLETE. Aggregations over results\n(pass/fail/error counts) should filter to COMPLETE-only events."
        },
        "name": "status",
        "doc": "Lifecycle status of this run event."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "EvalResult",
            "namespace": "com.linkedin.pegasus2avro.eval",
            "fields": [
              {
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "ERROR": "An error occurred during evaluation (e.g. agent unreachable, judge failure).",
                    "FAIL": "One or more conditions failed.",
                    "PASS": "All conditions passed."
                  },
                  "name": "EvalResultType",
                  "namespace": "com.linkedin.pegasus2avro.eval",
                  "symbols": [
                    "PASS",
                    "FAIL",
                    "ERROR"
                  ],
                  "doc": "The verdict of an eval run."
                },
                "name": "type",
                "doc": "Overall verdict: PASS only if every condition passed."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "actualResponse",
                "default": null,
                "doc": "The actual response text produced by the agent."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": {
                      "type": "record",
                      "name": "EvalConditionResult",
                      "namespace": "com.linkedin.pegasus2avro.eval",
                      "fields": [
                        {
                          "type": "com.linkedin.pegasus2avro.eval.EvalCondition",
                          "name": "condition",
                          "doc": "The condition that was evaluated (snapshot at run time)."
                        },
                        {
                          "type": "boolean",
                          "name": "passed",
                          "doc": "Whether this individual condition passed."
                        },
                        {
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "reasoning",
                          "default": null,
                          "doc": "Judge reasoning for this condition's verdict."
                        }
                      ],
                      "doc": "The result of evaluating a single condition within an eval run."
                    }
                  }
                ],
                "name": "conditionResults",
                "default": null,
                "doc": "Per-condition results with individual pass/fail and judge reasoning."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "judgeModel",
                "default": null,
                "doc": "The LLM model used as the judge for this run.\nCaptured at execution time for reproducibility."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "judgeReasoning",
                "default": null,
                "doc": "Overall judge reasoning or summary."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "error",
                "default": null,
                "doc": "Error details if the result type is ERROR."
              }
            ],
            "doc": "The result of running an eval: overall verdict plus per-condition breakdown."
          }
        ],
        "name": "result",
        "default": null,
        "doc": "The evaluation result, present when status is COMPLETE."
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.eval.EvalCondition"
          }
        ],
        "name": "conditionsSnapshot",
        "default": null,
        "doc": "Snapshot of the conditions at run time.\nPrevents silent semantic drift when eval definitions are edited."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "string"
        ],
        "name": "runId",
        "default": null,
        "doc": "UUID grouping all eval run events from a single task execution.\nEnables batch-level reporting (\"how did the suite perform last night?\")."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "enum",
            "symbolDocs": {
              "ONLINE": "Triggered by a real production conversation (future).",
              "ON_DEMAND": "Triggered manually / on demand via the API.",
              "SCHEDULED": "Triggered by a scheduled Task (cron)."
            },
            "name": "EvalRunMode",
            "namespace": "com.linkedin.pegasus2avro.eval",
            "symbols": [
              "SCHEDULED",
              "ON_DEMAND",
              "ONLINE"
            ],
            "doc": "How an eval run was triggered."
          }
        ],
        "name": "runMode",
        "default": null,
        "doc": "How this run was triggered."
      },
      {
        "TimeseriesField": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "actionRequestUrn",
        "default": null,
        "doc": "The action request (e.g. Context Hub proposal) that triggered this eval run.\nWhen present, this run is a \"what-if\" evaluation against a proposed change,\nenabling delta comparison with the latest scheduled production baseline."
      },
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "sourceRunUrn",
        "default": null,
        "doc": "For ONLINE runs: the production conversation/run that triggered this eval."
      },
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "agentRunUrn",
        "default": null,
        "doc": "The agent run / conversation turn URN, for trace-level judging."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "traceRef",
        "default": null,
        "doc": "Opaque reference to an external trace store (e.g. LangSmith trace ID)."
      },
      {
        "type": [
          "null",
          {
            "type": "map",
            "values": "string"
          }
        ],
        "name": "runtimeContext",
        "default": null,
        "doc": "Arbitrary key-value pairs for extensible runtime context."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "Optional custom message ID for deduplication."
      }
    ],
    "doc": "A timeseries event recording the result of running an individual eval.\n\nEach event is an immutable record: conditions and judge config are\nsnapshotted at execution time so historical results remain meaningful\neven if the eval definition is later modified."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "entityInferenceMetadata"
    },
    "name": "EntityInferenceMetadata",
    "namespace": "com.linkedin.pegasus2avro.ai",
    "fields": [
      {
        "Searchable": {
          "/lastInferredAt": {
            "fieldName": "glossaryTermsLastInferredAt",
            "queryByDefault": false
          },
          "/version": {
            "fieldName": "glossaryTermsVersion",
            "queryByDefault": false
          }
        },
        "type": [
          "null",
          {
            "type": "record",
            "name": "InferenceGroupMetadata",
            "namespace": "com.linkedin.pegasus2avro.ai",
            "fields": [
              {
                "type": "long",
                "name": "lastInferredAt",
                "doc": "Timestamp of the last inference in milliseconds."
              },
              {
                "type": "int",
                "name": "version",
                "doc": "Monotonically incrementing version number. Once bumped, will re-trigger a new inference."
              }
            ],
            "doc": "Reusable metadata about a group of inferences of the same type."
          }
        ],
        "name": "glossaryTermsInference",
        "default": null,
        "doc": "Information about a group of inferences made for Glossary Terms."
      }
    ],
    "doc": "AI Inference Metadata for a specific entity."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "aiInferenceMetadata"
    },
    "name": "AiInferenceMetadata",
    "namespace": "com.linkedin.pegasus2avro.ai",
    "fields": [
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "GlossaryTermsInferenceMetadata",
            "namespace": "com.linkedin.pegasus2avro.ai",
            "fields": [
              {
                "Searchable": {
                  "fieldName": "glossaryTermsLastInferredAt"
                },
                "type": "long",
                "name": "lastInferredAt",
                "doc": "Timestamp of the last inference in milliseconds."
              },
              {
                "Searchable": {
                  "fieldName": "glossaryTermsVersion"
                },
                "type": "long",
                "name": "version",
                "doc": "Monotonically incrementing version number. Once bumped, will re-trigger a new inference."
              }
            ]
          }
        ],
        "name": "glossaryTermsInference",
        "default": null,
        "doc": "Information about a glossary terms inference."
      }
    ],
    "doc": "AI Inference Metadata of various types."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dynamicFormAssignment",
      "schemaVersion": 2
    },
    "name": "DynamicFormAssignment",
    "namespace": "com.linkedin.pegasus2avro.form",
    "fields": [
      {
        "type": "com.linkedin.pegasus2avro.metadata.query.filter.Filter",
        "name": "filter",
        "doc": "The filter applied when assigning this form to entities. Entities that match this filter\nwill have this form applied to them. Right now this filter only supports filtering by\nplatform, entity type, container, and domain through the UI."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "json",
        "default": null,
        "doc": "The stringified json representing the logical predicate built in the UI to select assets.\nThis predicate is turned into orFilters to send through graphql since graphql doesn't support\narbitrary nesting. This string is used to restore the UI for this logical predicate."
      }
    ],
    "doc": "Information about how a form is assigned to entities dynamically. Provide a filter to\nmatch a set of entities instead of explicitly applying a form to specific entities."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "formSettings"
    },
    "name": "FormSettings",
    "namespace": "com.linkedin.pegasus2avro.form",
    "fields": [
      {
        "type": {
          "type": "record",
          "name": "FormNotificationSettings",
          "namespace": "com.linkedin.pegasus2avro.form",
          "fields": [
            {
              "Searchable": {
                "fieldType": "BOOLEAN"
              },
              "type": "boolean",
              "name": "notifyAssigneesOnPublish",
              "default": false,
              "doc": "Whether to notify the assignees of the form when it is published."
            }
          ]
        },
        "name": "notificationSettings",
        "doc": "Notification settings for a form"
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "formAssignmentStatus"
    },
    "name": "FormAssignmentStatus",
    "namespace": "com.linkedin.pegasus2avro.form",
    "fields": [
      {
        "type": {
          "type": "enum",
          "symbolDocs": {
            "COMPLETE": "Assets assignment is complete",
            "IN_PROGRESS": "Assets are currently being assigned"
          },
          "name": "AssignmentStatus",
          "namespace": "com.linkedin.pegasus2avro.form",
          "symbols": [
            "IN_PROGRESS",
            "COMPLETE"
          ]
        },
        "name": "status",
        "doc": "Notification settings for a form"
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "timestamp",
        "default": null,
        "doc": "Timestamp this aspect was last updated at"
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "formInfo"
    },
    "name": "FormInfo",
    "namespace": "com.linkedin.pegasus2avro.form",
    "fields": [
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "name",
        "doc": "Display name of the form"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Description of the form"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": {
          "type": "enum",
          "symbolDocs": {
            "COMPLETION": "A form simply used for collecting metadata fields for an entity.",
            "VERIFICATION": "This form is used for \"verifying\" that entities comply with a policy via presence of a specific set of metadata fields."
          },
          "name": "FormType",
          "namespace": "com.linkedin.pegasus2avro.form",
          "symbols": [
            "COMPLETION",
            "VERIFICATION"
          ]
        },
        "name": "type",
        "default": "COMPLETION",
        "doc": "The type of this form"
      },
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "FormPrompt",
            "namespace": "com.linkedin.pegasus2avro.form",
            "fields": [
              {
                "Searchable": {
                  "fieldName": "promptId",
                  "fieldType": "KEYWORD",
                  "queryByDefault": false
                },
                "type": "string",
                "name": "id",
                "doc": "The unique id for this prompt. This must be GLOBALLY unique."
              },
              {
                "type": "string",
                "name": "title",
                "doc": "The title of this prompt"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "description",
                "default": null,
                "doc": "The description of this prompt"
              },
              {
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "DOCUMENTATION": "This prompt is meant to apply documentation to an entity",
                    "DOMAIN": "This prompt is meant to apply a domain to an entity",
                    "FIELDS_DOCUMENTATION": "This prompt is meant to apply documentation to a schema field entity",
                    "FIELDS_GLOSSARY_TERMS": "This prompt is meant to apply glossary terms to a schema field entity",
                    "FIELDS_STRUCTURED_PROPERTY": "This prompt is meant to apply a structured property to a schema field entity",
                    "GLOSSARY_TERMS": "This prompt is meant to apply glossary terms to an entity",
                    "OWNERSHIP": "This prompt is meant to apply ownership to an entity",
                    "STRUCTURED_PROPERTY": "This prompt is meant to apply a structured property to an entity"
                  },
                  "name": "FormPromptType",
                  "namespace": "com.linkedin.pegasus2avro.form",
                  "symbols": [
                    "STRUCTURED_PROPERTY",
                    "FIELDS_STRUCTURED_PROPERTY",
                    "OWNERSHIP",
                    "DOCUMENTATION",
                    "FIELDS_DOCUMENTATION",
                    "GLOSSARY_TERMS",
                    "FIELDS_GLOSSARY_TERMS",
                    "DOMAIN"
                  ]
                },
                "name": "type",
                "doc": "The type of prompt"
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "StructuredPropertyParams",
                    "namespace": "com.linkedin.pegasus2avro.form",
                    "fields": [
                      {
                        "Searchable": {
                          "fieldName": "structuredPropertyPromptUrns",
                          "fieldType": "URN"
                        },
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "type": "string",
                        "name": "urn",
                        "doc": "The structured property that is required on this entity"
                      }
                    ]
                  }
                ],
                "name": "structuredPropertyParams",
                "default": null,
                "doc": "An optional set of information specific to structured properties prompts.\nThis should be filled out if the prompt is type STRUCTURED_PROPERTY or FIELDS_STRUCTURED_PROPERTY."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "OwnershipParams",
                    "namespace": "com.linkedin.pegasus2avro.form",
                    "fields": [
                      {
                        "type": {
                          "type": "enum",
                          "symbolDocs": {
                            "MULTIPLE": "The prompt accepts multiple values as a response",
                            "SINGLE": "The prompt accepts a singular value as a response"
                          },
                          "name": "PromptCardinality",
                          "namespace": "com.linkedin.pegasus2avro.form",
                          "symbols": [
                            "SINGLE",
                            "MULTIPLE"
                          ],
                          "doc": "The cardinality of the prompt."
                        },
                        "name": "cardinality",
                        "default": "MULTIPLE",
                        "doc": "Whether one or multiple owners are accepted as a response."
                      },
                      {
                        "Relationship": {
                          "/*": {
                            "entityTypes": [
                              "corpuser",
                              "corpGroup"
                            ],
                            "name": "allowedOwnerOn"
                          }
                        },
                        "Urn": "Urn",
                        "urn_is_array": true,
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": "string"
                          }
                        ],
                        "name": "allowedOwners",
                        "default": null,
                        "doc": "An optional list of allowed owners to choose from"
                      },
                      {
                        "Relationship": {
                          "/*": {
                            "entityTypes": [
                              "ownershipType"
                            ],
                            "name": "allowedOwnershipTypeOn"
                          }
                        },
                        "Urn": "Urn",
                        "urn_is_array": true,
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": "string"
                          }
                        ],
                        "name": "allowedOwnershipTypes",
                        "default": null,
                        "doc": "An optional list of ownership type urns to choose from. If this is empty, all types will be allowed.\nIf only one type is provided, the user will be required to set that type when responding."
                      }
                    ],
                    "doc": "Information specific to glossary terms prompts."
                  }
                ],
                "name": "ownershipParams",
                "default": null,
                "doc": "An optional set of information specific to ownership prompts.\nThis should be filled out if the prompt is type OWNERSHIP."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "GlossaryTermsParams",
                    "namespace": "com.linkedin.pegasus2avro.form",
                    "fields": [
                      {
                        "type": "com.linkedin.pegasus2avro.form.PromptCardinality",
                        "name": "cardinality",
                        "default": "MULTIPLE",
                        "doc": "Whether one or multiple terms are accepted as a response."
                      },
                      {
                        "Relationship": {
                          "/*": {
                            "entityTypes": [
                              "glossaryTerm"
                            ],
                            "name": "allowedTermOn"
                          }
                        },
                        "Urn": "Urn",
                        "urn_is_array": true,
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": "string"
                          }
                        ],
                        "name": "allowedTerms",
                        "default": null,
                        "doc": "An optional list of allowed glossary terms to choose from"
                      },
                      {
                        "Relationship": {
                          "/*": {
                            "entityTypes": [
                              "glossaryNode"
                            ],
                            "name": "allowedTermGroupOn"
                          }
                        },
                        "Urn": "Urn",
                        "urn_is_array": true,
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": "string"
                          }
                        ],
                        "name": "allowedTermGroups",
                        "default": null,
                        "doc": "An optional list of glossary term groups where a selection set of terms are underneath.\nRight now this is not recursive. Provided a term group, we will display its direct children as options."
                      }
                    ],
                    "doc": "Information specific to glossary terms prompts."
                  }
                ],
                "name": "glossaryTermsParams",
                "default": null,
                "doc": "An optional set of information specific to glossary terms prompts.\nThis should be filled out if the prompt is type GLOSSARY_TERMS or FIELDS_GLOSSARY_TERM."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "DomainParams",
                    "namespace": "com.linkedin.pegasus2avro.form",
                    "fields": [
                      {
                        "Relationship": {
                          "/*": {
                            "entityTypes": [
                              "domain"
                            ],
                            "name": "allowedDomainOn"
                          }
                        },
                        "Urn": "Urn",
                        "urn_is_array": true,
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": "string"
                          }
                        ],
                        "name": "allowedDomains",
                        "default": null,
                        "doc": "An optional list of allowed domains to choose from"
                      }
                    ],
                    "doc": "Information specific to glossary terms prompts."
                  }
                ],
                "name": "domainParams",
                "default": null,
                "doc": "An optional set of information specific to domain prompts.\nThis should be filled out if the prompt is type DOMAIN."
              },
              {
                "type": "boolean",
                "name": "required",
                "default": false,
                "doc": "Whether the prompt is required to be completed, in order for the form to be marked as complete."
              }
            ],
            "doc": "A prompt to present to the user to encourage filling out metadata"
          }
        },
        "name": "prompts",
        "default": [],
        "doc": "List of prompts to present to the user to encourage filling out metadata"
      },
      {
        "type": {
          "type": "record",
          "name": "FormActorAssignment",
          "namespace": "com.linkedin.pegasus2avro.form",
          "fields": [
            {
              "Searchable": {
                "fieldName": "isOwnershipForm",
                "fieldType": "BOOLEAN"
              },
              "type": "boolean",
              "name": "owners",
              "default": true,
              "doc": "Whether the form should be assigned to the owners of assets that it is applied to.\nThis is the default."
            },
            {
              "Searchable": {
                "/*": {
                  "fieldName": "assignedGroups",
                  "fieldType": "URN"
                }
              },
              "Urn": "Urn",
              "urn_is_array": true,
              "type": [
                "null",
                {
                  "type": "array",
                  "items": "string"
                }
              ],
              "name": "groups",
              "default": null,
              "doc": "Optional: Specific set of groups that are targeted by this form assignment."
            },
            {
              "Searchable": {
                "/*": {
                  "fieldName": "assignedUsers",
                  "fieldType": "URN"
                }
              },
              "Urn": "Urn",
              "urn_is_array": true,
              "type": [
                "null",
                {
                  "type": "array",
                  "items": "string"
                }
              ],
              "name": "users",
              "default": null,
              "doc": "Optional: Specific set of users that are targeted by this form assignment."
            }
          ]
        },
        "name": "actors",
        "default": {
          "groups": null,
          "owners": true,
          "users": null
        },
        "doc": "Who the form is assigned to, e.g. who should see the form when visiting the entity page or governance center"
      },
      {
        "Searchable": {
          "/state": {
            "fieldName": "formStatus",
            "fieldType": "KEYWORD"
          }
        },
        "type": {
          "type": "record",
          "name": "FormStatus",
          "namespace": "com.linkedin.pegasus2avro.form",
          "fields": [
            {
              "Searchable": {
                "fieldType": "KEYWORD"
              },
              "type": {
                "type": "enum",
                "symbolDocs": {
                  "DRAFT": "This form is in draft state and is not viewable by any users",
                  "PUBLISHED": "This form is published and viewable by users to fill it out",
                  "UNPUBLISHED": "This form is unpublished and is not viewable by users"
                },
                "name": "FormState",
                "namespace": "com.linkedin.pegasus2avro.form",
                "symbols": [
                  "DRAFT",
                  "PUBLISHED",
                  "UNPUBLISHED"
                ]
              },
              "name": "state",
              "doc": "The state of this form. Draft means no users are prompted to fill it out yet and unpublished is hidden.\nPublished forms are out in the world for users to see. Setting default to PUBLISHED for old data."
            },
            {
              "type": [
                "null",
                "com.linkedin.pegasus2avro.common.AuditStamp"
              ],
              "name": "lastModified",
              "default": null,
              "doc": "Audit stamp containing who last modified the form state and when."
            }
          ],
          "doc": "Information about the state of a form"
        },
        "name": "status",
        "default": {
          "state": "PUBLISHED",
          "lastModified": null
        },
        "doc": "Information about the state and status of this form"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "createdTime",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "created",
        "default": null,
        "doc": "Created Audit stamp"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "lastModified",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "lastModified",
        "default": null,
        "doc": "Last Modified Audit stamp"
      }
    ],
    "doc": "Information about a form to help with filling out metadata on entities."
  },
  {
    "type": "record",
    "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",
          {
            "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",
                  "long"
                ],
                "name": "schemaVersion",
                "default": null,
                "doc": "Schema version of the aspect data model. Used to determine aspects that need migrations.\nDefaults to 1 when not present as a baseline. Incremented when an aspect is modified."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.common.AuditStamp"
                ],
                "name": "aspectCreated",
                "default": null,
                "doc": "When the aspect was initially created and who created it, detected by version 0 -> 1 change"
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.common.AuditStamp"
                ],
                "name": "aspectModified",
                "default": null,
                "doc": "When the aspect was last modified and the actor that performed the modification"
              }
            ],
            "doc": "Metadata associated with each metadata change that is processed by the system"
          }
        ],
        "name": "systemMetadata",
        "default": null,
        "doc": "System properties that one might want to attach to an event"
      },
      {
        "type": [
          "null",
          {
            "type": "map",
            "values": "string"
          }
        ],
        "name": "headers",
        "default": null,
        "doc": "Headers - intended to mimic http headers"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.mxe.GenericAspect"
        ],
        "name": "previousAspectValue",
        "default": null,
        "doc": "The previous value of the aspect that has changed."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.mxe.SystemMetadata"
        ],
        "name": "previousSystemMetadata",
        "default": null,
        "doc": "The previous value of the system metadata field that has changed."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "created",
        "default": null,
        "doc": "An audit stamp detailing who and when the aspect was changed by. Required for all intents and purposes."
      }
    ],
    "doc": "Kafka event for capturing update made to an entity's metadata."
  },
  "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",
    "name": "MetadataChangeEvent",
    "namespace": "com.linkedin.pegasus2avro.mxe",
    "fields": [
      {
        "type": [
          "null",
          "com.linkedin.events.KafkaAuditHeader"
        ],
        "name": "auditHeader",
        "default": null,
        "doc": "Kafka audit header. See go/kafkaauditheader for more info."
      },
      {
        "type": [
          {
            "type": "record",
            "Entity": {
              "keyAspect": "actionRequestKey",
              "name": "actionRequest"
            },
            "name": "ActionRequestSnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "actionRequestKey"
                      },
                      "name": "ActionRequestKey",
                      "namespace": "com.linkedin.pegasus2avro.metadata.key",
                      "fields": [
                        {
                          "type": "string",
                          "name": "id"
                        }
                      ],
                      "doc": "Key for an ActionRequest"
                    },
                    "com.linkedin.pegasus2avro.actionrequest.ActionRequestStatus",
                    "com.linkedin.pegasus2avro.actionrequest.ActionRequestInfo"
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the Action Request."
              }
            ]
          },
          {
            "type": "record",
            "Entity": {
              "keyAspect": "chartKey",
              "name": "chart"
            },
            "name": "ChartSnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.ChartUrn"
                },
                "Urn": "ChartUrn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "chartKey"
                      },
                      "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": "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": {
                            "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 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",
                            {
                              "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 chart"
                        },
                        {
                          "type": [
                            "null",
                            "long"
                          ],
                          "name": "lastRefreshed",
                          "default": null,
                          "doc": "The time when this chart last refreshed"
                        }
                      ],
                      "doc": "Information about a chart"
                    },
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "chartQuery"
                      },
                      "name": "ChartQuery",
                      "namespace": "com.linkedin.pegasus2avro.chart",
                      "fields": [
                        {
                          "type": "string",
                          "name": "rawQuery",
                          "doc": "Raw query to build a chart from input datasets"
                        },
                        {
                          "Searchable": {
                            "addToFilters": true,
                            "fieldName": "queryType",
                            "fieldType": "KEYWORD",
                            "filterNameOverride": "Query Type"
                          },
                          "type": {
                            "type": "enum",
                            "symbolDocs": {
                              "LOOKML": "LookML queries",
                              "SQL": "SQL type queries"
                            },
                            "name": "ChartQueryType",
                            "namespace": "com.linkedin.pegasus2avro.chart",
                            "symbols": [
                              "LOOKML",
                              "SQL"
                            ]
                          },
                          "name": "type",
                          "doc": "Chart query type"
                        }
                      ],
                      "doc": "Information for chart query which is used for getting data of the chart"
                    },
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "editableChartProperties"
                      },
                      "name": "EditableChartProperties",
                      "namespace": "com.linkedin.pegasus2avro.chart",
                      "fields": [
                        {
                          "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                          "name": "created",
                          "default": {
                            "actor": "urn:li:corpuser:unknown",
                            "impersonator": null,
                            "time": 0,
                            "message": null
                          },
                          "doc": "An AuditStamp corresponding to the creation of this resource/association/sub-resource. A value of 0 for time indicates missing data."
                        },
                        {
                          "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                          "name": "lastModified",
                          "default": {
                            "actor": "urn:li:corpuser:unknown",
                            "impersonator": null,
                            "time": 0,
                            "message": null
                          },
                          "doc": "An AuditStamp corresponding to the last modification of this resource/association/sub-resource. If no modification has happened since creation, lastModified should be the same as created. A value of 0 for time indicates missing data."
                        },
                        {
                          "type": [
                            "null",
                            "com.linkedin.pegasus2avro.common.AuditStamp"
                          ],
                          "name": "deleted",
                          "default": null,
                          "doc": "An AuditStamp corresponding to the deletion of this resource/association/sub-resource. Logically, deleted MUST have a later timestamp than creation. It may or may not have the same time as lastModified depending upon the resource/association/sub-resource semantics."
                        },
                        {
                          "Searchable": {
                            "fieldName": "editedDescription",
                            "fieldType": "TEXT",
                            "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"
                    },
                    "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": [
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "corpGroupKey"
                      },
                      "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": {
                        "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"
                    },
                    "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": [
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "corpUserKey"
                      },
                      "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": {
                        "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."
                        },
                        {
                          "Searchable": {
                            "fieldType": "BOOLEAN",
                            "queryByDefault": false
                          },
                          "type": [
                            "null",
                            "boolean"
                          ],
                          "name": "isSupportUser",
                          "default": null,
                          "doc": "Whether the corpUser is a support user authenticated through the support OIDC flow."
                        }
                      ],
                      "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": {
                        "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."
                    },
                    "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": [
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "dashboardKey"
                      },
                      "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": "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": "com.linkedin.pegasus2avro.common.Edge"
                            }
                          ],
                          "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": "com.linkedin.pegasus2avro.common.ChangeAuditStamps",
                          "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",
                            "com.linkedin.pegasus2avro.common.AccessLevel"
                          ],
                          "name": "access",
                          "default": null,
                          "doc": "Access level for the dashboard"
                        },
                        {
                          "Searchable": {
                            "queryByDefault": false
                          },
                          "type": [
                            "null",
                            "long"
                          ],
                          "name": "lastRefreshed",
                          "default": null,
                          "doc": "The time when this dashboard last refreshed"
                        },
                        {
                          "Searchable": {
                            "queryByDefault": false
                          },
                          "java": {
                            "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                          },
                          "Urn": "Urn",
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "lastRefreshedBy",
                          "default": null,
                          "doc": "The actor who last refreshed this dashboard"
                        }
                      ],
                      "doc": "Information about a dashboard"
                    },
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "editableDashboardProperties"
                      },
                      "name": "EditableDashboardProperties",
                      "namespace": "com.linkedin.pegasus2avro.dashboard",
                      "fields": [
                        {
                          "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                          "name": "created",
                          "default": {
                            "actor": "urn:li:corpuser:unknown",
                            "impersonator": null,
                            "time": 0,
                            "message": null
                          },
                          "doc": "An AuditStamp corresponding to the creation of this resource/association/sub-resource. A value of 0 for time indicates missing data."
                        },
                        {
                          "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                          "name": "lastModified",
                          "default": {
                            "actor": "urn:li:corpuser:unknown",
                            "impersonator": null,
                            "time": 0,
                            "message": null
                          },
                          "doc": "An AuditStamp corresponding to the last modification of this resource/association/sub-resource. If no modification has happened since creation, lastModified should be the same as created. A value of 0 for time indicates missing data."
                        },
                        {
                          "type": [
                            "null",
                            "com.linkedin.pegasus2avro.common.AuditStamp"
                          ],
                          "name": "deleted",
                          "default": null,
                          "doc": "An AuditStamp corresponding to the deletion of this resource/association/sub-resource. Logically, deleted MUST have a later timestamp than creation. It may or may not have the same time as lastModified depending upon the resource/association/sub-resource semantics."
                        },
                        {
                          "Searchable": {
                            "fieldName": "editedDescription",
                            "fieldType": "TEXT",
                            "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"
                    },
                    "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": [
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "dataFlowKey"
                      },
                      "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": "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": "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"
                    },
                    "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": [
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "dataJobKey"
                      },
                      "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": "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": "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": "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"
                    },
                    "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": [
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "datasetKey"
                      },
                      "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"
                    },
                    "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",
                    {
                      "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"
                    },
                    {
                      "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",
                                      "queryByDefault": false
                                    },
                                    "/tags/*/tag": {
                                      "boostScore": 0.5,
                                      "fieldName": "editedFieldTags",
                                      "fieldType": "URN"
                                    }
                                  },
                                  "type": [
                                    "null",
                                    "com.linkedin.pegasus2avro.common.GlobalTags"
                                  ],
                                  "name": "globalTags",
                                  "default": null,
                                  "doc": "Tags associated with the field"
                                },
                                {
                                  "Relationship": {
                                    "/terms/*/urn": {
                                      "entityTypes": [
                                        "glossaryTerm"
                                      ],
                                      "name": "EditableSchemaFieldWithGlossaryTerm"
                                    }
                                  },
                                  "Searchable": {
                                    "/terms/*/attribution/actor": {
                                      "fieldName": "editedFieldTermAttributionActors",
                                      "fieldType": "URN",
                                      "queryByDefault": false
                                    },
                                    "/terms/*/attribution/source": {
                                      "fieldName": "editedFieldTermAttributionSources",
                                      "fieldType": "URN",
                                      "queryByDefault": false
                                    },
                                    "/terms/*/attribution/time": {
                                      "fieldName": "editedFieldTermAttributionDates",
                                      "fieldType": "DATETIME",
                                      "queryByDefault": false
                                    },
                                    "/terms/*/urn": {
                                      "boostScore": 0.5,
                                      "fieldName": "editedFieldGlossaryTerms",
                                      "fieldType": "URN",
                                      "includeSystemModifiedAt": true,
                                      "systemModifiedAtFieldName": "schemaFieldTermsModifiedAt"
                                    }
                                  },
                                  "type": [
                                    "null",
                                    "com.linkedin.pegasus2avro.common.GlossaryTerms"
                                  ],
                                  "name": "glossaryTerms",
                                  "default": null,
                                  "doc": "Glossary terms associated with the field"
                                }
                              ],
                              "doc": "SchemaField to describe metadata related to dataset schema."
                            }
                          },
                          "name": "editableSchemaFieldInfo",
                          "doc": "Client provided a list of fields from document schema."
                        }
                      ],
                      "doc": "EditableSchemaMetadata stores editable changes made to schema metadata. This separates changes made from\ningestion pipelines and edits in the UI to avoid accidental overwrites of user-provided data by ingestion pipelines."
                    },
                    "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": [
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "dataProcessKey"
                      },
                      "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"
                    },
                    "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": [
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "dataPlatformKey"
                      },
                      "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": "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"
                    }
                  ]
                },
                "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": [
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "mlModelKey"
                      },
                      "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"
                    },
                    "com.linkedin.pegasus2avro.common.Ownership",
                    {
                      "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": {
                                "type": "record",
                                "Aspect": {
                                  "name": "mlHyperParam"
                                },
                                "name": "MLHyperParam",
                                "namespace": "com.linkedin.pegasus2avro.ml.metadata",
                                "fields": [
                                  {
                                    "type": "string",
                                    "name": "name",
                                    "doc": "Name of the MLHyperParam"
                                  },
                                  {
                                    "type": [
                                      "null",
                                      "string"
                                    ],
                                    "name": "description",
                                    "default": null,
                                    "doc": "Documentation of the MLHyperParam"
                                  },
                                  {
                                    "type": [
                                      "null",
                                      "string"
                                    ],
                                    "name": "value",
                                    "default": null,
                                    "doc": "The value of the MLHyperParam"
                                  },
                                  {
                                    "type": [
                                      "null",
                                      "long"
                                    ],
                                    "name": "createdAt",
                                    "default": null,
                                    "doc": "Date when the MLHyperParam was developed"
                                  }
                                ],
                                "doc": "Properties associated with an ML Hyper Param"
                              }
                            }
                          ],
                          "name": "hyperParams",
                          "default": null,
                          "doc": "Hyperparameters of the MLModel"
                        },
                        {
                          "type": [
                            "null",
                            {
                              "type": "array",
                              "items": {
                                "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 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": "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": "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": "mlModelEvaluationData"
                      },
                      "name": "EvaluationData",
                      "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": "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": "mlModelTrainingData"
                      },
                      "name": "TrainingData",
                      "namespace": "com.linkedin.pegasus2avro.ml.metadata",
                      "fields": [
                        {
                          "type": {
                            "type": "array",
                            "items": "com.linkedin.pegasus2avro.ml.metadata.BaseData"
                          },
                          "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": "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": "mlModelEthicalConsiderations"
                      },
                      "name": "EthicalConsiderations",
                      "namespace": "com.linkedin.pegasus2avro.ml.metadata",
                      "fields": [
                        {
                          "type": [
                            "null",
                            {
                              "type": "array",
                              "items": "string"
                            }
                          ],
                          "name": "data",
                          "default": null,
                          "doc": "Does the MLModel use any sensitive data (e.g., protected classes)?"
                        },
                        {
                          "type": [
                            "null",
                            {
                              "type": "array",
                              "items": "string"
                            }
                          ],
                          "name": "humanLife",
                          "default": null,
                          "doc": " Is the MLModel intended to inform decisions about matters central to human life or flourishing - e.g., health or safety? Or could it be used in such a way?"
                        },
                        {
                          "type": [
                            "null",
                            {
                              "type": "array",
                              "items": "string"
                            }
                          ],
                          "name": "mitigations",
                          "default": null,
                          "doc": "What risk mitigation strategies were used during MLModel development?"
                        },
                        {
                          "type": [
                            "null",
                            {
                              "type": "array",
                              "items": "string"
                            }
                          ],
                          "name": "risksAndHarms",
                          "default": null,
                          "doc": "What risks may be present in MLModel usage? Try to identify the potential recipients, likelihood, and magnitude of harms. If these cannot be determined, note that they were considered but remain unknown."
                        },
                        {
                          "type": [
                            "null",
                            {
                              "type": "array",
                              "items": "string"
                            }
                          ],
                          "name": "useCases",
                          "default": null,
                          "doc": "Are there any known MLModel use cases that are especially fraught? This may connect directly to the intended use section"
                        }
                      ],
                      "doc": "This section is intended to demonstrate the ethical considerations that went into MLModel development, surfacing ethical challenges and solutions to stakeholders."
                    },
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "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?"
                    },
                    "com.linkedin.pegasus2avro.common.InstitutionalMemory",
                    {
                      "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"
                    },
                    "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": [
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "mlPrimaryKeyKey"
                      },
                      "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": "mlPrimaryKeyProperties"
                      },
                      "name": "MLPrimaryKeyProperties",
                      "namespace": "com.linkedin.pegasus2avro.ml.metadata",
                      "fields": [
                        {
                          "Searchable": {
                            "/*": {
                              "fieldType": "TEXT",
                              "queryByDefault": true
                            }
                          },
                          "type": {
                            "type": "map",
                            "values": "string"
                          },
                          "name": "customProperties",
                          "default": {},
                          "doc": "Custom property bag."
                        },
                        {
                          "Searchable": {
                            "fieldType": "TEXT",
                            "hasValuesFieldName": "hasDescription"
                          },
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "description",
                          "default": null,
                          "doc": "Documentation of the MLPrimaryKey"
                        },
                        {
                          "type": [
                            "null",
                            {
                              "type": "enum",
                              "symbolDocs": {
                                "AUDIO": "Audio Data",
                                "BINARY": "Binary data is discrete data that can be in only one of two categories - either yes or no, 1 or 0, off or on, etc",
                                "BYTE": "Bytes data are binary-encoded values that can represent complex objects.",
                                "CONTINUOUS": "Continuous data are made of uncountable values, often the result of a measurement such as height, weight, age etc.",
                                "COUNT": "Count data is discrete whole number data - no negative numbers here.\nCount data often has many small values, such as zero and one.",
                                "IMAGE": "Image Data",
                                "INTERVAL": "Interval data has equal spaces between the numbers and does not represent a temporal pattern.\nExamples include percentages, temperatures, and income.",
                                "MAP": "Mapping Data Type ex: dict, map",
                                "NOMINAL": "Nominal data is made of discrete values with no numerical relationship between the different categories - mean and median are meaningless.\nAnimal species is one example. For example, pig is not higher than bird and lower than fish.",
                                "ORDINAL": "Ordinal data are discrete integers that can be ranked or sorted.\nFor example, the distance between first and second may not be the same as the distance between second and third.",
                                "SEQUENCE": "Sequence Data Type ex: list, tuple, range",
                                "SET": "Set Data Type ex: set, frozenset",
                                "TEXT": "Text Data",
                                "TIME": "Time data is a cyclical, repeating continuous form of data.\nThe relevant time features can be any period- daily, weekly, monthly, annual, etc.",
                                "UNKNOWN": "Unknown data are data that we don't know the type for.",
                                "USELESS": "Useless data is unique, discrete data with no potential relationship with the outcome variable.\nA useless feature has high cardinality. An example would be bank account numbers that were generated randomly.",
                                "VIDEO": "Video Data"
                              },
                              "name": "MLFeatureDataType",
                              "namespace": "com.linkedin.pegasus2avro.common",
                              "symbols": [
                                "USELESS",
                                "NOMINAL",
                                "ORDINAL",
                                "BINARY",
                                "COUNT",
                                "TIME",
                                "INTERVAL",
                                "IMAGE",
                                "VIDEO",
                                "AUDIO",
                                "TEXT",
                                "MAP",
                                "SEQUENCE",
                                "SET",
                                "CONTINUOUS",
                                "BYTE",
                                "UNKNOWN"
                              ],
                              "doc": "MLFeature Data Type"
                            }
                          ],
                          "name": "dataType",
                          "default": null,
                          "doc": "Data Type of the MLPrimaryKey"
                        },
                        {
                          "type": [
                            "null",
                            "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"
                    },
                    "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": [
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "mlFeatureKey"
                      },
                      "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": "mlFeatureProperties"
                      },
                      "name": "MLFeatureProperties",
                      "namespace": "com.linkedin.pegasus2avro.ml.metadata",
                      "fields": [
                        {
                          "Searchable": {
                            "/*": {
                              "fieldType": "TEXT",
                              "queryByDefault": true
                            }
                          },
                          "type": {
                            "type": "map",
                            "values": "string"
                          },
                          "name": "customProperties",
                          "default": {},
                          "doc": "Custom property bag."
                        },
                        {
                          "Searchable": {
                            "fieldType": "TEXT",
                            "hasValuesFieldName": "hasDescription"
                          },
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "description",
                          "default": null,
                          "doc": "Documentation of the MLFeature"
                        },
                        {
                          "type": [
                            "null",
                            "com.linkedin.pegasus2avro.common.MLFeatureDataType"
                          ],
                          "name": "dataType",
                          "default": null,
                          "doc": "Data Type of the MLFeature"
                        },
                        {
                          "type": [
                            "null",
                            "com.linkedin.pegasus2avro.common.VersionTag"
                          ],
                          "name": "version",
                          "default": null,
                          "doc": "Version of the MLFeature"
                        },
                        {
                          "Relationship": {
                            "/*": {
                              "entityTypes": [
                                "dataset"
                              ],
                              "isLineage": true,
                              "name": "DerivedFrom"
                            }
                          },
                          "Urn": "Urn",
                          "urn_is_array": true,
                          "type": [
                            "null",
                            {
                              "type": "array",
                              "items": "string"
                            }
                          ],
                          "name": "sources",
                          "default": null,
                          "doc": "Source of the MLFeature"
                        }
                      ],
                      "doc": "Properties associated with a MLFeature"
                    },
                    "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": [
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "mlFeatureTableKey"
                      },
                      "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": "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"
                    },
                    "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": [
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "mlModelDeploymentKey"
                      },
                      "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": "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"
                    },
                    "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": [
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "mlModelGroupKey"
                      },
                      "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": "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"
                    },
                    "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": [
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "tagKey"
                      },
                      "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"
                    },
                    "com.linkedin.pegasus2avro.common.Ownership",
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "tagProperties"
                      },
                      "name": "TagProperties",
                      "namespace": "com.linkedin.pegasus2avro.tag",
                      "fields": [
                        {
                          "Searchable": {
                            "boostScore": 10.0,
                            "enableAutocomplete": true,
                            "fieldNameAliases": [
                              "_entityName"
                            ],
                            "fieldType": "WORD_GRAM",
                            "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"
                    },
                    "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": [
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "glossaryTermKey"
                      },
                      "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": "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": {
                            "fieldType": "TEXT",
                            "searchTier": 2
                          },
                          "type": "string",
                          "name": "definition",
                          "doc": "Definition of business term."
                        },
                        {
                          "Relationship": {
                            "entityTypes": [
                              "glossaryNode"
                            ],
                            "name": "IsPartOf"
                          },
                          "Searchable": {
                            "fieldName": "parentNode",
                            "fieldType": "URN",
                            "hasValuesFieldName": "hasParentNode"
                          },
                          "java": {
                            "class": "com.linkedin.pegasus2avro.common.urn.GlossaryNodeUrn"
                          },
                          "Urn": "GlossaryNodeUrn",
                          "entityTypes": [
                            "glossaryNode"
                          ],
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "parentNode",
                          "default": null,
                          "doc": "Parent node of the glossary term"
                        },
                        {
                          "Searchable": {
                            "fieldType": "KEYWORD"
                          },
                          "type": "string",
                          "name": "termSource",
                          "doc": "Source of the Business Term (INTERNAL or EXTERNAL) with default value as INTERNAL"
                        },
                        {
                          "Searchable": {
                            "fieldType": "KEYWORD"
                          },
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "sourceRef",
                          "default": null,
                          "doc": "External Reference to the business-term"
                        },
                        {
                          "java": {
                            "class": "com.linkedin.pegasus2avro.common.url.Url",
                            "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
                          },
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "sourceUrl",
                          "default": null,
                          "doc": "The abstracted URL such as https://spec.edmcouncil.org/fibo/ontology/FBC/FinancialInstruments/FinancialInstruments/CashInstrument."
                        },
                        {
                          "deprecated": true,
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "rawSchema",
                          "default": null,
                          "doc": "Schema definition of the glossary term"
                        }
                      ],
                      "doc": "Properties associated with a GlossaryTerm"
                    },
                    "com.linkedin.pegasus2avro.common.Ownership",
                    "com.linkedin.pegasus2avro.common.Status",
                    "com.linkedin.pegasus2avro.common.BrowsePaths",
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "glossaryRelatedTerms",
                        "schemaVersion": 3
                      },
                      "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"
                        },
                        {
                          "Relationship": {
                            "/*": {
                              "entityTypes": [
                                "glossaryTerm"
                              ],
                              "name": "IsSynonymOf"
                            }
                          },
                          "Searchable": {
                            "/*": {
                              "fieldName": "synonymOf",
                              "fieldType": "URN",
                              "queryByDefault": false
                            }
                          },
                          "Urn": "GlossaryTermUrn",
                          "urn_is_array": true,
                          "type": [
                            "null",
                            {
                              "type": "array",
                              "items": "string"
                            }
                          ],
                          "name": "synonymOf",
                          "default": null,
                          "doc": "Synonym relationship \u2014 bidirectional by convention (displayed with both OUTGOING and INCOMING)"
                        },
                        {
                          "Relationship": {
                            "/*": {
                              "entityTypes": [
                                "glossaryTerm"
                              ],
                              "name": "IsAntonymOf"
                            }
                          },
                          "Searchable": {
                            "/*": {
                              "fieldName": "antonymOf",
                              "fieldType": "URN",
                              "queryByDefault": false
                            }
                          },
                          "Urn": "GlossaryTermUrn",
                          "urn_is_array": true,
                          "type": [
                            "null",
                            {
                              "type": "array",
                              "items": "string"
                            }
                          ],
                          "name": "antonymOf",
                          "default": null,
                          "doc": "Antonym relationship \u2014 bidirectional by convention (displayed with both OUTGOING and INCOMING)"
                        },
                        {
                          "Relationship": {
                            "/*": {
                              "entityTypes": [
                                "glossaryTerm"
                              ],
                              "name": "TranslatesTo"
                            }
                          },
                          "Searchable": {
                            "/*": {
                              "fieldName": "translatesTo",
                              "fieldType": "URN",
                              "queryByDefault": false
                            }
                          },
                          "Urn": "GlossaryTermUrn",
                          "urn_is_array": true,
                          "type": [
                            "null",
                            {
                              "type": "array",
                              "items": "string"
                            }
                          ],
                          "name": "translatesTo",
                          "default": null,
                          "doc": "Translation relationship \u2014 directional (Translates To vs Translated From)"
                        }
                      ],
                      "doc": "Has A / Is A lineage information about a glossary Term reporting the lineage"
                    },
                    "com.linkedin.pegasus2avro.common.VersionProperties"
                  ]
                },
                "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": [
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "glossaryNodeKey"
                      },
                      "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": "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": {
                            "fieldType": "TEXT",
                            "searchTier": 2
                          },
                          "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"
                    },
                    "com.linkedin.pegasus2avro.common.Ownership",
                    "com.linkedin.pegasus2avro.common.Status",
                    "com.linkedin.pegasus2avro.common.VersionProperties"
                  ]
                },
                "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": [
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "dataHubPolicyKey"
                      },
                      "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"
                    },
                    "com.linkedin.pegasus2avro.policy.DataHubPolicyInfo"
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the DataHub access policy."
              }
            ],
            "doc": "A metadata snapshot for DataHub Access Policy data."
          },
          {
            "type": "record",
            "Entity": {
              "keyAspect": "schemaFieldKey",
              "name": "schemaField"
            },
            "name": "SchemaFieldSnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "schemaFieldKey"
                      },
                      "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"
                    }
                  ]
                },
                "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": [
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "dataHubRetentionKey"
                      },
                      "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": "dataHubRetentionConfig"
                      },
                      "name": "DataHubRetentionConfig",
                      "namespace": "com.linkedin.pegasus2avro.retention",
                      "fields": [
                        {
                          "type": {
                            "type": "record",
                            "name": "Retention",
                            "namespace": "com.linkedin.pegasus2avro.retention",
                            "fields": [
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "record",
                                    "name": "VersionBasedRetention",
                                    "namespace": "com.linkedin.pegasus2avro.retention",
                                    "fields": [
                                      {
                                        "type": "int",
                                        "name": "maxVersions"
                                      }
                                    ],
                                    "doc": "Keep max N latest records"
                                  }
                                ],
                                "name": "version",
                                "default": null
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "record",
                                    "name": "TimeBasedRetention",
                                    "namespace": "com.linkedin.pegasus2avro.retention",
                                    "fields": [
                                      {
                                        "type": "int",
                                        "name": "maxAgeInSeconds"
                                      }
                                    ],
                                    "doc": "Keep records that are less than X seconds old"
                                  }
                                ],
                                "name": "time",
                                "default": null
                              }
                            ],
                            "doc": "Base class that encapsulates different retention policies.\nOnly one of the fields should be set"
                          },
                          "name": "retention"
                        }
                      ]
                    }
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the DataHub access policy."
              }
            ],
            "doc": "A metadata snapshot for DataHub Access Policy data."
          }
        ],
        "name": "proposedSnapshot",
        "doc": "Snapshot of the proposed metadata change. Include only the aspects affected by the change in the snapshot."
      },
      {
        "type": [
          "null"
        ],
        "name": "proposedDelta",
        "default": null,
        "doc": "Delta of the proposed metadata partial update."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.mxe.SystemMetadata"
        ],
        "name": "systemMetadata",
        "default": null,
        "doc": "Metadata around how the snapshot was ingested"
      }
    ],
    "doc": "Kafka event for proposing a metadata change for an entity. A corresponding MetadataAuditEvent is emitted when the change is accepted and committed, otherwise a FailedMetadataChangeEvent will be emitted instead."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubRemoteExecutorPoolGlobalConfig"
    },
    "name": "RemoteExecutorPoolGlobalConfig",
    "namespace": "com.linkedin.pegasus2avro.executorglobalconfig",
    "fields": [
      {
        "type": "string",
        "name": "defaultExecutorPoolId",
        "doc": "The default pool to use for tasks that require remote executors.\nReferences 'id' in com.linkedin.pegasus2avro.metadata.key.RemoteExecutorPoolKey"
      }
    ],
    "doc": "Global singleton storing configs for remote executor pools."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "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": "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. "
  },
  "com.linkedin.pegasus2avro.dashboard.DashboardInfo",
  "com.linkedin.pegasus2avro.dashboard.EditableDashboardProperties",
  "com.linkedin.pegasus2avro.metadata.key.DataFlowKey",
  {
    "type": "record",
    "Aspect": {
      "name": "testKey",
      "keyForEntity": "test",
      "entityCategory": "core",
      "entityAspects": [
        "testInfo",
        "status",
        "batchTestRunEvent"
      ],
      "entityDoc": "A DataHub test"
    },
    "name": "TestKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "Unique id for the test"
      }
    ],
    "doc": "Key for a Test"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "monitorKey",
      "keyForEntity": "monitor",
      "entityCategory": "core",
      "entityAspects": [
        "monitorInfo",
        "monitorBootstrapStatus",
        "monitorTimeseriesState",
        "monitorAnomalyEvent",
        "status"
      ]
    },
    "name": "MonitorKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Relationship": {
          "entityTypes": [
            "dataset"
          ],
          "name": "Monitors"
        },
        "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 being monitored"
      },
      {
        "type": "string",
        "name": "id",
        "doc": "Unique id for the monitor."
      }
    ],
    "doc": "Key for a Monitor"
  },
  {
    "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": "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"
  },
  "com.linkedin.pegasus2avro.metadata.key.GlossaryTermKey",
  {
    "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"
  },
  "com.linkedin.pegasus2avro.metadata.key.DatasetKey",
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubOAuthClientKey",
      "keyForEntity": "dataHubOAuthClient",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubOAuthClientInfo"
      ]
    },
    "name": "DataHubOAuthClientKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "Unique OAuth client ID"
      }
    ],
    "doc": "Key for a DataHub OAuth Client (an OAuth2 registered client for the authorization server)"
  },
  "com.linkedin.pegasus2avro.metadata.key.MLPrimaryKeyKey",
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubAiConversationKey",
      "keyForEntity": "dataHubAiConversation",
      "entityCategory": "core",
      "entityAspects": [
        "dataHubAiConversationInfo"
      ]
    },
    "name": "DataHubAiConversationKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Searchable": {},
        "type": "string",
        "name": "id",
        "doc": "Unique identifier for the conversation"
      }
    ],
    "doc": "Key for a DataHub conversation"
  },
  {
    "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": "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": "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": "assertionKey",
      "keyForEntity": "assertion",
      "entityCategory": "core",
      "entityAspects": [
        "assertionInfo",
        "assertionNote",
        "dataPlatformInstance",
        "assertionRunEvent",
        "assertionActions",
        "status",
        "globalTags",
        "ownership",
        "lineageFeatures",
        "assertionRunSummary",
        "assertionAnalyticsRunEvent",
        "assertionDryRunEvent",
        "assertionInferenceDetails"
      ],
      "entityDoc": "Assertion represents a data quality rule applied on one or more dataset."
    },
    "name": "AssertionKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "assertionId",
        "doc": "Unique id for the assertion."
      }
    ],
    "doc": "Key for a Assertion"
  },
  "com.linkedin.pegasus2avro.metadata.key.DataHubRetentionKey",
  "com.linkedin.pegasus2avro.metadata.key.MLModelDeploymentKey",
  {
    "type": "record",
    "Aspect": {
      "name": "constraintKey",
      "keyForEntity": "constraint",
      "entityCategory": "_unset_",
      "entityAspects": [
        "constraintInfo"
      ]
    },
    "name": "ConstraintKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id"
      }
    ],
    "doc": "Key for a Constraint"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "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": "recommendationModuleKey",
      "keyForEntity": "recommendationModule",
      "entityCategory": "_unset_",
      "entityAspects": [
        "recommendationModule"
      ]
    },
    "name": "RecommendationModuleKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "moduleId",
        "doc": "Module ID for the recommendation module"
      },
      {
        "type": "string",
        "name": "identifier",
        "doc": "Identifier for the specific module"
      }
    ],
    "doc": "Key for a recommendation module"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "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": "dataHubRemoteExecutorKey",
      "keyForEntity": "dataHubRemoteExecutor",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubRemoteExecutorStatus"
      ]
    },
    "name": "RemoteExecutorKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the DataHub Remote Executor."
      }
    ],
    "doc": "Key for an DataHub Remote Executor"
  },
  "com.linkedin.pegasus2avro.metadata.key.ActionRequestKey",
  {
    "type": "record",
    "Aspect": {
      "name": "lifecycleStageTypeKey",
      "keyForEntity": "lifecycleStageType",
      "entityCategory": "core",
      "entityAspects": [
        "lifecycleStageTypeInfo",
        "status"
      ],
      "entityDoc": "Defines a lifecycle stage that entities can be placed in (e.g., Proposed, Certified, Archived). Controls search visibility and transition policies."
    },
    "name": "LifecycleStageTypeKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "Unique identifier for the lifecycle stage type, e.g. \"PROPOSED\", \"CERTIFIED\", \"ARCHIVED\"."
      }
    ],
    "doc": "Key for a Lifecycle Stage Type"
  },
  {
    "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": "incidentKey",
      "keyForEntity": "incident",
      "entityCategory": "core",
      "entityAspects": [
        "incidentInfo",
        "incidentExternalLinks",
        "incidentNotes",
        "globalTags",
        "incidentNotificationDetails",
        "incidentActivityEvent"
      ],
      "entityDoc": "An incident for an asset."
    },
    "name": "IncidentKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the incident. Generated on the server side at incident creation time."
      }
    ],
    "doc": "Key for an asset Incident"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "domainKey",
      "keyForEntity": "domain",
      "entityCategory": "core",
      "entityAspects": [
        "domainProperties",
        "institutionalMemory",
        "ownership",
        "status",
        "structuredProperties",
        "forms",
        "testResults",
        "displayProperties",
        "assetSettings",
        "share",
        "origin"
      ],
      "entityDoc": "A data domain within an organization."
    },
    "name": "DomainKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the domain. Should be separate from the name used for displaying a Domain."
      }
    ],
    "doc": "Key for an Asset Domain"
  },
  "com.linkedin.pegasus2avro.metadata.key.CorpGroupKey",
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubOAuthSessionKey",
      "keyForEntity": "dataHubOAuthSession",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubOAuthSessionInfo"
      ]
    },
    "name": "DataHubOAuthSessionKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "Stable UUID generated at session creation."
      }
    ],
    "doc": "Key aspect for a DataHub OAuth2 session entity.\nEach session represents a single OAuth2 login (authorization code grant)."
  },
  {
    "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"
  },
  "com.linkedin.pegasus2avro.metadata.key.CorpUserKey",
  "com.linkedin.pegasus2avro.metadata.key.DataJobKey",
  {
    "type": "record",
    "Aspect": {
      "name": "monitorSuiteKey",
      "keyForEntity": "monitorSuite",
      "entityCategory": "core",
      "entityAspects": [
        "monitorSuiteInfo"
      ],
      "entityDoc": "DEPRECATED - DO NOT USE. Never implemented (no service layer, hooks, UI, or customer data). Schema-only placeholder. Use assertionAssignmentRule instead. Safe to remove entirely."
    },
    "name": "MonitorSuiteKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "Unique id for the monitor suite."
      }
    ],
    "doc": "Key for a monitor suite.\n\n@deprecated DO NOT USE. This entity was never implemented \u2014 no service layer, no hooks, no UI,\nno customer data exists. It is a schema-only placeholder that was never wired into the system.\nUse {@link com.linkedin.pegasus2avro.metadata.key.AssertionAssignmentRuleKey} instead.\nSafe to remove entirely in a future release."
  },
  "com.linkedin.pegasus2avro.metadata.key.MLFeatureTableKey",
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubMetricCubeKey",
      "keyForEntity": "dataHubMetricCube",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubMetricCubeDefinition",
        "dataHubMetricCubeEvent"
      ]
    },
    "name": "DataHubMetricCubeKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "Unique id for the cube type."
      }
    ],
    "doc": "Key for a DataHub Metric Cube, e.g. an internal metric."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "anomalyKey"
    },
    "name": "AnomalyKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the anomaly. Generated on the server side at anomaly creation time."
      }
    ],
    "doc": "Key for an asset Anomaly"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "subscriptionKey",
      "keyForEntity": "subscription",
      "entityCategory": "core",
      "entityAspects": [
        "subscriptionInfo",
        "status"
      ]
    },
    "name": "SubscriptionKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "UUID for the subscription. Generated server-side when the subscription is created."
      }
    ],
    "doc": "Key for a Subscription"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataProcessInstanceKey",
      "keyForEntity": "dataProcessInstance",
      "entityCategory": "_unset_",
      "entityAspects": [
        "dataProcessInstanceInput",
        "dataProcessInstanceOutput",
        "dataProcessInstanceProperties",
        "dataProcessInstanceRelationships",
        "dataProcessInstanceRunEvent",
        "status",
        "testResults",
        "dataPlatformInstance",
        "subTypes",
        "container",
        "mlTrainingRunProperties",
        "lineageFeatures"
      ],
      "entityDoc": "DataProcessInstance represents an instance of a datajob/jobflow run"
    },
    "name": "DataProcessInstanceKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the DataProcessInstance . Should be separate from the name used for displaying a DataProcessInstance."
      }
    ],
    "doc": "Key for an Asset DataProcessInstance"
  },
  "com.linkedin.pegasus2avro.metadata.key.MLModelKey",
  {
    "type": "record",
    "Aspect": {
      "name": "assertionInferenceAdjustmentRuleKey",
      "keyForEntity": "assertionInferenceAdjustmentRule",
      "entityCategory": "core",
      "entityAspects": [
        "assertionInferenceAdjustmentRuleInfo",
        "ownership",
        "status"
      ],
      "entityDoc": "A globally-applied rule that adjusts assertion-inference training and evaluation for entities matching a filter (e.g. exclusion windows for known maintenance periods or holidays)."
    },
    "name": "AssertionInferenceAdjustmentRuleKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "Unique id for the assertion inference adjustment rule."
      }
    ],
    "doc": "Key for an Assertion Inference Adjustment Rule."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "genericEntityKey"
    },
    "name": "GenericEntityKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for this entity. Generated on the server side at entity creation time.\nFormat is '{namespace}-{guid}'. I.e., 'slack-dXJuOmxpOmRhdGFzZXQ6K'"
      }
    ],
    "doc": "Key for a Generic Entity.\nThese entities are for miscelaneous data that is used in non-core parts of the system.\nFor instance, if we want to persist & retrieve data from auxiliary integrations such as Slack or Microsoft Teams."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubRemoteExecutorPoolKey",
      "keyForEntity": "dataHubRemoteExecutorPool",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubRemoteExecutorPoolInfo"
      ]
    },
    "name": "RemoteExecutorPoolKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "id",
        "doc": "The unique identifier for the remote executor pool"
      }
    ],
    "doc": "Key for an DataHub Remote Executor Pool"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubTaskKey",
      "keyForEntity": "dataHubTask",
      "entityCategory": "core",
      "entityAspects": [
        "dataHubTaskInfo",
        "ownership",
        "status"
      ],
      "entityDoc": "A scheduled or event-triggered task definition. Supports agent tasks and imperative tasks."
    },
    "name": "DataHubTaskKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Searchable": {},
        "type": "string",
        "name": "id",
        "doc": "Unique identifier for the task definition"
      }
    ],
    "doc": "Key for a DataHub Task definition"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "linkPreviewKey",
      "keyForEntity": "linkPreview",
      "entityCategory": "internal",
      "entityAspects": [
        "linkPreviewInfo"
      ]
    },
    "name": "LinkPreviewKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the Link Preview, derived by encoding the URL itself."
      }
    ],
    "doc": "Key for an Link Preview"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "containerKey",
      "keyForEntity": "container",
      "entityCategory": "core",
      "entityAspects": [
        "containerProperties",
        "editableContainerProperties",
        "dataPlatformInstance",
        "subTypes",
        "ownership",
        "deprecation",
        "container",
        "globalTags",
        "glossaryTerms",
        "institutionalMemory",
        "browsePaths",
        "status",
        "domains",
        "applications",
        "browsePathsV2",
        "structuredProperties",
        "forms",
        "testResults",
        "access",
        "proposals",
        "share",
        "origin",
        "documentation"
      ],
      "entityDoc": "A container of related data assets."
    },
    "name": "ContainerKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": [
          "null",
          "string"
        ],
        "name": "guid",
        "default": null,
        "doc": "Unique guid for container"
      }
    ],
    "doc": "Key for an Asset Container"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "assertionAssignmentRuleKey",
      "keyForEntity": "assertionAssignmentRule",
      "entityCategory": "core",
      "entityAspects": [
        "assertionAssignmentRuleInfo",
        "ownership",
        "status"
      ],
      "entityDoc": "A rule that automatically assigns assertions and subscriptions to entities matching a filter."
    },
    "name": "AssertionAssignmentRuleKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "Unique id for the assertion assignment rule."
      }
    ],
    "doc": "Key for an Assertion Assignment Rule"
  },
  "com.linkedin.pegasus2avro.metadata.key.DataHubPolicyKey",
  {
    "type": "record",
    "Aspect": {
      "name": "formKey",
      "keyForEntity": "form",
      "entityCategory": "core",
      "entityAspects": [
        "formInfo",
        "dynamicFormAssignment",
        "ownership",
        "formSettings",
        "formAssignmentStatus"
      ]
    },
    "name": "FormKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "Unique id for the form."
      }
    ],
    "doc": "Key for a Form"
  },
  "com.linkedin.pegasus2avro.metadata.key.DataProcessKey",
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubRemoteExecutorGlobalConfigKey",
      "keyForEntity": "dataHubRemoteExecutorGlobalConfig",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubRemoteExecutorPoolGlobalConfig"
      ]
    },
    "name": "RemoteExecutorGlobalConfigKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "The unique identifier for the remote executor global config\nNOTE: since this a singleton, there should be a hardcoded key in the AcrylConstants file"
      }
    ],
    "doc": "Key for the *Singleton* DataHub Remote Executor Global Config"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "aiAgentKey",
      "keyForEntity": "aiAgent",
      "entityCategory": "core",
      "entityAspects": [
        "aiAgentInfo",
        "displayProperties",
        "ownership",
        "status"
      ],
      "entityDoc": "An AI agent with custom instructions, tools, and scoping. Supports native (DataHub-managed), system (bootstrapped), and external (cataloged) agents."
    },
    "name": "AIAgentKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Searchable": {},
        "type": "string",
        "name": "id",
        "doc": "Unique identifier for the agent, e.g. \"ask-datahub\" or a generated UUID"
      }
    ],
    "doc": "Key for an AI Agent entity"
  },
  {
    "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": "queryKey",
      "keyForEntity": "query",
      "entityCategory": "core",
      "entityAspects": [
        "queryProperties",
        "querySubjects",
        "queryUsageStatistics",
        "status",
        "dataPlatformInstance",
        "subTypes",
        "queryUsageFeatures",
        "lineageFeatures"
      ]
    },
    "name": "QueryKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the Query."
      }
    ],
    "doc": "Key for a Query"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "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"
  },
  "com.linkedin.pegasus2avro.metadata.key.ChartKey",
  {
    "type": "record",
    "Aspect": {
      "name": "notebookKey",
      "keyForEntity": "notebook",
      "entityCategory": "_unset_",
      "entityAspects": [
        "notebookInfo",
        "notebookContent",
        "editableNotebookProperties",
        "ownership",
        "status",
        "globalTags",
        "glossaryTerms",
        "browsePaths",
        "institutionalMemory",
        "domains",
        "applications",
        "subTypes",
        "dataPlatformInstance",
        "browsePathsV2",
        "testResults",
        "proposals",
        "share",
        "origin",
        "documentation"
      ],
      "entityDoc": "Notebook represents a combination of query, text, chart and etc. This is in BETA version"
    },
    "name": "NotebookKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "notebookTool",
        "doc": "The name of the Notebook tool such as QueryBook, etc."
      },
      {
        "type": "string",
        "name": "notebookId",
        "doc": "Unique id for the Notebook. This id should be globally unique for a Notebook tool even when there are multiple deployments of it. As an example, Notebook URL could be used here for QueryBook such as 'querybook.com/notebook/773'"
      }
    ],
    "doc": "Key for a Notebook"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "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": "dataHubExecutionRequestKey",
      "keyForEntity": "dataHubExecutionRequest",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubExecutionRequestInput",
        "dataHubExecutionRequestSignal",
        "dataHubExecutionRequestResult",
        "dataHubExecutionRequestArtifactsLocation"
      ]
    },
    "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": "postKey",
      "keyForEntity": "post",
      "entityCategory": "core",
      "entityAspects": [
        "postInfo",
        "subTypes",
        "status",
        "semanticContent",
        "structuredProperties"
      ]
    },
    "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."
  },
  "com.linkedin.pegasus2avro.metadata.key.MLModelGroupKey",
  {
    "type": "record",
    "Aspect": {
      "name": "erModelRelationshipKey",
      "keyForEntity": "erModelRelationship",
      "entityCategory": "_unset_",
      "entityAspects": [
        "erModelRelationshipProperties",
        "editableERModelRelationshipProperties",
        "institutionalMemory",
        "ownership",
        "status",
        "globalTags",
        "glossaryTerms",
        "lineageFeatures"
      ],
      "entityDoc": "ER Model Relationship of  Dataset Fields"
    },
    "name": "ERModelRelationshipKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id"
      }
    ],
    "doc": "Key for a ERModelRelationship"
  },
  "com.linkedin.pegasus2avro.metadata.key.DashboardKey",
  "com.linkedin.pegasus2avro.metadata.key.GlossaryNodeKey",
  {
    "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": "dataHubConnectionKey",
      "keyForEntity": "dataHubConnection",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubConnectionDetails",
        "dataPlatformInstance",
        "status"
      ]
    },
    "name": "DataHubConnectionKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Searchable": {},
        "type": "string",
        "name": "id",
        "doc": "A unique identifier for the connection."
      }
    ],
    "doc": "Key for a Connection"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "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"
  },
  "com.linkedin.pegasus2avro.metadata.key.SchemaFieldKey",
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubActionKey",
      "keyForEntity": "dataHubAction",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubActionInfo",
        "dataHubActionStatus"
      ]
    },
    "name": "DataHubActionKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the Action, either generated or provided"
      }
    ],
    "doc": "Key for a DataHub Action Pipeline"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "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": "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"
  },
  "com.linkedin.pegasus2avro.metadata.key.TagKey",
  {
    "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": "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"
  },
  "com.linkedin.pegasus2avro.metadata.key.DataPlatformKey",
  {
    "type": "record",
    "Aspect": {
      "name": "actionWorkflowKey",
      "keyForEntity": "actionWorkflow",
      "entityCategory": "internal",
      "entityAspects": [
        "actionWorkflowInfo"
      ]
    },
    "name": "ActionWorkflowKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": " The unique identifier for the workflow "
      }
    ],
    "doc": "Key for an ActionRequestWorkflow"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "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": "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": "evalKey",
      "keyForEntity": "eval",
      "entityCategory": "core",
      "entityAspects": [
        "evalInfo",
        "evalRunEvent",
        "evalRunSummary",
        "evalDocumentReferences",
        "ownership",
        "status"
      ],
      "entityDoc": "An eval definition \u2014 a golden question with conditions used to verify agent quality. Scoped to an agent or context hub domain."
    },
    "name": "EvalKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Searchable": {},
        "type": "string",
        "name": "id",
        "doc": "Unique identifier for this eval"
      }
    ],
    "doc": "Key for an Eval entity"
  },
  "com.linkedin.pegasus2avro.metadata.key.MLFeatureKey",
  "com.linkedin.pegasus2avro.metadata.query.filter.Filter",
  {
    "type": "record",
    "Aspect": {
      "name": "corpUserUsageFeatures"
    },
    "name": "CorpUserUsageFeatures",
    "namespace": "com.linkedin.pegasus2avro.metadata.search.features",
    "fields": [
      {
        "Searchable": {
          "fieldName": "userUsageTotalPast30DaysFeature",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "userUsageTotalPast30Days",
        "default": null,
        "doc": "Total number of usage in the last 30 days"
      },
      {
        "Searchable": {
          "/*": {
            "fieldName": "platformUsageTotal",
            "fieldType": "OBJECT",
            "queryByDefault": false
          }
        },
        "type": [
          "null",
          {
            "type": "map",
            "values": "double"
          }
        ],
        "name": "userPlatformUsageTotalsPast30Days",
        "default": null,
        "doc": "usage broken down by platform so we can differentiate between top users of snowflake vs redshift\nkey is supposed to be platform urn"
      },
      {
        "Searchable": {
          "/*": {
            "fieldName": "platformUsagePercentage",
            "fieldType": "OBJECT",
            "queryByDefault": false
          }
        },
        "type": [
          "null",
          {
            "type": "map",
            "values": "double"
          }
        ],
        "name": "userPlatformUsagePercentilePast30Days",
        "default": null,
        "doc": "usage broken down by platform so we can differentiate between top users of snowflake vs redshift"
      },
      {
        "Searchable": {
          "fieldName": "userUsagePercentilePast30DaysFeature",
          "fieldType": "DOUBLE"
        },
        "type": [
          "null",
          "double"
        ],
        "name": "userUsagePercentilePast30Days",
        "default": null,
        "doc": "Platform usage total percentile for ranking users across all platforms"
      },
      {
        "type": [
          "null",
          {
            "type": "map",
            "values": "double"
          }
        ],
        "name": "userTopDatasetsByUsage",
        "default": null,
        "doc": "Gather what are the top datasets per user so we can create a welcome module\nWith links to the users top datasets with lineage (top 25)\nMap keys are dataset URN strings"
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "storageFeatures"
    },
    "name": "StorageFeatures",
    "namespace": "com.linkedin.pegasus2avro.metadata.search.features",
    "fields": [
      {
        "Searchable": {
          "fieldName": "sizeInBytesFeature",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "sizeInBytes",
        "default": null,
        "doc": "The total size in bytes."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "sizeInBytesPercentile",
        "default": null,
        "doc": "The percentile of size in bytes relative to other assets from the data plaform instance."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "sizeInBytesRank",
        "default": null,
        "doc": "The absolute rank of size in bytes relative to other assets from the data plaform instance."
      },
      {
        "Searchable": {
          "fieldName": "rowCountFeature",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "rowCount",
        "default": null,
        "doc": "The total row count."
      },
      {
        "Searchable": {
          "fieldName": "rowCountPercentile",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "int"
        ],
        "name": "rowCountPercentile",
        "default": null,
        "doc": "The percentile of the total row / document count relative to other assets from the data platform instance."
      },
      {
        "type": [
          "null",
          "int"
        ],
        "name": "rowCountRank",
        "default": null,
        "doc": "The absolute rank of size in bytes relative to other assets from the data plaform instance."
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "lineageFeatures"
    },
    "name": "LineageFeatures",
    "namespace": "com.linkedin.pegasus2avro.metadata.search.features",
    "fields": [
      {
        "Searchable": {
          "fieldName": "upstreamCountFeature",
          "fieldType": "COUNT"
        },
        "type": "int",
        "name": "upstreamCount",
        "doc": "Cached number of entities related by lineage, upstream."
      },
      {
        "Searchable": {
          "fieldName": "downstreamCountFeature",
          "fieldType": "COUNT"
        },
        "type": "int",
        "name": "downstreamCount",
        "doc": "Cached number of entities related by lineage, downstream."
      },
      {
        "Searchable": {
          "addToFilters": true,
          "fieldName": "hasAssetLevelLineageFeature",
          "fieldType": "BOOLEAN",
          "filterNameOverride": "Has Asset-Level Lineage"
        },
        "type": [
          "null",
          "boolean"
        ],
        "name": "hasAssetLevelLineage",
        "default": null,
        "doc": "Whether upstreamCount > 0 OR downstreamCount > 0\nstored to make filtering easier"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "lineageFeaturesComputedAt",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "computedAt",
        "default": null,
        "doc": "Record of when and how lineage features were computed."
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "usageFeatures"
    },
    "name": "UsageFeatures",
    "namespace": "com.linkedin.pegasus2avro.metadata.search.features",
    "fields": [
      {
        "Searchable": {
          "fieldName": "viewCountLast30DaysFeature",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "viewCountLast30Days",
        "default": null,
        "doc": "Usage count in the last 30 days\nThis field is for Dashboard usage"
      },
      {
        "Searchable": {
          "fieldName": "viewCountFeature",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "viewCountTotal",
        "default": null,
        "doc": "View count total \nThis field is for Dashboard usage"
      },
      {
        "Searchable": {
          "fieldName": "viewCountPercentileLast30Days",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "int"
        ],
        "name": "viewCountPercentileLast30Days",
        "default": null,
        "doc": "Percentile rank of the dashboard views based on the the last 30 days view count on a platform"
      },
      {
        "Searchable": {
          "fieldName": "usageCountLast30DaysFeature",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "usageCountLast30Days",
        "default": null,
        "doc": "Deprecated - Use queryCountLast30Days instead. Usage count in the last 30 days"
      },
      {
        "Searchable": {
          "fieldName": "queryCountLast30DaysFeature",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "queryCountLast30Days",
        "default": null,
        "doc": "Dataset Query count in the last 30 days"
      },
      {
        "Searchable": {
          "fieldName": "uniqueUserCountLast30DaysFeature",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "uniqueUserCountLast30Days",
        "default": null,
        "doc": "Unique user count in the last 30 days"
      },
      {
        "Searchable": {
          "fieldName": "writeCountLast30DaysFeature",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "writeCountLast30Days",
        "default": null,
        "doc": "Write (insert/update) count in the last 30 days"
      },
      {
        "Searchable": {
          "fieldName": "queryCountPercentileLast30Days",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "int"
        ],
        "name": "queryCountPercentileLast30Days",
        "default": null,
        "doc": "Percentile rank of the dataset based on the the last 30 days usage count on a platform"
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "queryCountRankLast30Days",
        "default": null,
        "doc": "Overall rank of the dataset based on the the last 30 days usage count on a platform\nIt returns one plus the number of rows proceeding or equals to the current row in the ordering. "
      },
      {
        "Searchable": {
          "fieldName": "uniqueUserPercentileLast30Days",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "int"
        ],
        "name": "uniqueUserPercentileLast30Days",
        "default": null,
        "doc": "Percentile rank of the dataset based on the the last 30 days of select queries by unique users on a platform"
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "uniqueUserRankLast30Days",
        "default": null,
        "doc": "Overall rank of the dataset based on the the last 30 days of select queries by unique users on a platform\nIt returns one plus the number of rows proceeding or equals to the current row in the ordering. "
      },
      {
        "type": [
          "null",
          "int"
        ],
        "name": "writeCountPercentileLast30Days",
        "default": null,
        "doc": "Percentile rank of the dataset based on the the last 30 days insert/update operation count on a platform"
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "writeCountRankLast30Days",
        "default": null,
        "doc": "Overall rank of the dataset based on the the last 30 days insert/update operation count on a platform\nIt returns one plus the number of rows proceeding or equals to the current row in the ordering. "
      },
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldName": "topUsersLast30Days",
            "fieldType": "URN",
            "filterNameOverride": "Top users last 30 days",
            "hasValuesFieldName": "hasTopUsersLast30Days",
            "queryByDefault": false
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "topUsersLast30Days",
        "default": null,
        "doc": "Ranked list of the top 10 users in past 30 days. \nIt is ranked by highest usage descending."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "sizeInBytesPercentile",
        "default": null,
        "doc": "Deprecated - use StorageFeatures.pdl instead. The percentile of size in bytes relative to other assets from the data plaform instance."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "sizeInBytesRank",
        "default": null,
        "doc": "Deprecated - use StorageFeatures.pdl instead. The percentile of size in bytes relative to other assets from the data plaform instance."
      },
      {
        "type": [
          "null",
          "int"
        ],
        "name": "rowCountPercentile",
        "default": null,
        "doc": "Deprecated - use StorageFeatures.pdl instead. The percentile of row count relative to other assets from the data platform instance."
      },
      {
        "type": [
          "null",
          "float"
        ],
        "name": "usageSearchScoreMultiplier",
        "default": null,
        "doc": "Multiplier for search score coming from usage"
      },
      {
        "type": [
          "null",
          "float"
        ],
        "name": "usageFreshnessScoreMultiplier",
        "default": null,
        "doc": "Multiplier for search score coming from freshness"
      },
      {
        "type": [
          "null",
          "float"
        ],
        "name": "customDatahubScoreMultiplier",
        "default": null,
        "doc": "Multiplier for search score coming from property based adjustment- e.g. URN"
      },
      {
        "Searchable": {
          "fieldName": "combinedSearchRankingMultiplier"
        },
        "type": [
          "null",
          "float"
        ],
        "name": "combinedSearchRankingMultiplier",
        "default": null,
        "doc": "Combined score of all multipliers"
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "costFeatures"
    },
    "name": "CostFeatures",
    "namespace": "com.linkedin.pegasus2avro.metadata.search.features",
    "fields": [
      {
        "type": [
          "null",
          "float"
        ],
        "name": "costLast30Days",
        "default": null,
        "doc": "Cost over last 30 days. The currency type is set with costCurrencyCode."
      },
      {
        "type": [
          "null",
          {
            "type": "enum",
            "name": "CostCurrencyCode",
            "namespace": "com.linkedin.pegasus2avro.metadata.search.features",
            "symbols": [
              "USD"
            ],
            "doc": " Currency code for the cost "
          }
        ],
        "name": "costCurrencyCode",
        "default": null,
        "doc": "The currency code for the given cost."
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "recommendationModule",
      "schemaVersion": 2
    },
    "name": "RecommendationModule",
    "namespace": "com.linkedin.pegasus2avro.metadata.recommendation",
    "fields": [
      {
        "type": "string",
        "name": "title",
        "doc": "Title of the module to display"
      },
      {
        "type": "string",
        "name": "moduleId",
        "doc": "Unique id of the module being recommended"
      },
      {
        "type": {
          "type": "enum",
          "symbolDocs": {
            "DOMAIN_SEARCH_LIST": "List of domains to search",
            "ENTITY_NAME_LIST": "Simple list of entities",
            "GLOSSARY_TERM_SEARCH_LIST": "Glossary term search list",
            "PLATFORM_SEARCH_LIST": "List of platforms to search",
            "SEARCH_QUERY_LIST": "A list of recommended searches",
            "TAG_SEARCH_LIST": "Tag search list"
          },
          "name": "RecommendationRenderType",
          "namespace": "com.linkedin.pegasus2avro.metadata.recommendation",
          "symbols": [
            "ENTITY_NAME_LIST",
            "PLATFORM_SEARCH_LIST",
            "TAG_SEARCH_LIST",
            "GLOSSARY_TERM_SEARCH_LIST",
            "SEARCH_QUERY_LIST",
            "DOMAIN_SEARCH_LIST"
          ],
          "doc": "Enum that defines how the modules should be rendered.\nThere should be two frontend implementation of large and small modules per type."
        },
        "name": "renderType",
        "doc": "Type of rendering that defines how the module should be rendered"
      },
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "RecommendationContent",
            "namespace": "com.linkedin.pegasus2avro.metadata.recommendation",
            "fields": [
              {
                "type": "string",
                "name": "value",
                "doc": "String representation of content"
              },
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": [
                  "null",
                  "string"
                ],
                "name": "entity",
                "default": null,
                "doc": "Entity being recommended. Empty if the content being recommended is not an entity"
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "RecommendationParams",
                    "namespace": "com.linkedin.pegasus2avro.metadata.recommendation",
                    "fields": [
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "SearchParams",
                            "namespace": "com.linkedin.pegasus2avro.metadata.recommendation",
                            "fields": [
                              {
                                "type": {
                                  "type": "array",
                                  "items": "string"
                                },
                                "name": "types",
                                "default": [],
                                "doc": "Entity types to be searched. If this is not provided, all entities will be searched."
                              },
                              {
                                "type": "string",
                                "name": "query",
                                "doc": "Search query"
                              },
                              {
                                "type": {
                                  "type": "array",
                                  "items": "com.linkedin.pegasus2avro.metadata.query.filter.Criterion"
                                },
                                "name": "filters",
                                "default": [],
                                "doc": "Filters"
                              }
                            ],
                            "doc": "Context to define the search recommendations"
                          }
                        ],
                        "name": "searchParams",
                        "default": null,
                        "doc": "Context to define the search recommendations"
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "EntityProfileParams",
                            "namespace": "com.linkedin.pegasus2avro.metadata.recommendation",
                            "fields": [
                              {
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "Urn": "Urn",
                                "type": "string",
                                "name": "urn",
                                "doc": "Urn of the entity being shown"
                              }
                            ],
                            "doc": "Context to define the entity profile page"
                          }
                        ],
                        "name": "entityProfileParams",
                        "default": null,
                        "doc": "Context to define the entity profile page"
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "ContentParams",
                            "namespace": "com.linkedin.pegasus2avro.metadata.recommendation",
                            "fields": [
                              {
                                "type": "long",
                                "name": "count",
                                "doc": "Number of entities corresponding to the recommended content"
                              }
                            ],
                            "doc": "Params about the recommended content"
                          }
                        ],
                        "name": "contentParams",
                        "default": null,
                        "doc": "Context about the recommendation"
                      }
                    ],
                    "doc": "Parameters required to render a recommendation of a given type"
                  }
                ],
                "name": "params",
                "default": null,
                "doc": "Additional context required to generate the the recommendation"
              }
            ],
            "doc": "Content to display within each recommendation module"
          }
        },
        "name": "content",
        "doc": "List of content to display inside the module"
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubAiConversationInfo",
      "schemaVersion": 3
    },
    "name": "DataHubAiConversationInfo",
    "namespace": "com.linkedin.pegasus2avro.conversation",
    "fields": [
      {
        "type": [
          "null",
          "string"
        ],
        "name": "title",
        "default": null,
        "doc": "Optional title for the conversation. "
      },
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "DataHubAiConversationMessage",
            "namespace": "com.linkedin.pegasus2avro.conversation",
            "fields": [
              {
                "type": {
                  "type": "enum",
                  "name": "DataHubAiConversationMessageType",
                  "namespace": "com.linkedin.pegasus2avro.conversation",
                  "symbols": [
                    "TEXT",
                    "TOOL_CALL",
                    "TOOL_RESULT",
                    "THINKING"
                  ]
                },
                "name": "type",
                "doc": "The type of message"
              },
              {
                "type": "long",
                "name": "time",
                "doc": "Timestamp in milliseconds"
              },
              {
                "type": {
                  "type": "record",
                  "name": "DataHubAiConversationActor",
                  "namespace": "com.linkedin.pegasus2avro.conversation",
                  "fields": [
                    {
                      "type": {
                        "type": "enum",
                        "symbolDocs": {
                          "AGENT": "An agent initiated message. ",
                          "USER": "A user initiated message. "
                        },
                        "name": "DataHubAiConversationActorType",
                        "namespace": "com.linkedin.pegasus2avro.conversation",
                        "symbols": [
                          "USER",
                          "AGENT"
                        ]
                      },
                      "name": "type",
                      "doc": "The type of actor "
                    },
                    {
                      "Relationship": {
                        "entityTypes": [
                          "corpuser",
                          "corpGroup"
                        ],
                        "name": "AuthoredBy"
                      },
                      "java": {
                        "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                      },
                      "Urn": "Urn",
                      "entityTypes": [
                        "corpuser",
                        "corpGroup"
                      ],
                      "type": [
                        "null",
                        "string"
                      ],
                      "name": "actor",
                      "default": null,
                      "doc": "The actor that has sent the message.\nRequired if type is not AGENT."
                    }
                  ]
                },
                "name": "actor",
                "doc": "Messages in the conversation"
              },
              {
                "type": {
                  "type": "record",
                  "name": "DataHubAiConversationMessageContent",
                  "namespace": "com.linkedin.pegasus2avro.conversation",
                  "fields": [
                    {
                      "type": "string",
                      "name": "text",
                      "doc": "Raw message text"
                    },
                    {
                      "type": [
                        "null",
                        {
                          "type": "array",
                          "items": "string"
                        }
                      ],
                      "name": "suggestions",
                      "default": null,
                      "doc": "Optional follow-up question suggestions generated by the agent"
                    }
                  ],
                  "doc": "Conversation message content info"
                },
                "name": "content",
                "doc": "The contents of the message."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "agentName",
                "default": null,
                "doc": "The name of the agent that generated this message (if applicable)."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "DataHubAiConversationContext",
                    "namespace": "com.linkedin.pegasus2avro.conversation",
                    "fields": [
                      {
                        "type": "string",
                        "name": "text",
                        "doc": "Natural language context description for the AI agent.\nThis will be included in the system prompt to help the agent\nunderstand what the user is looking at and working on.\nExample use cases: troubleshooting execution runs, configuring ingestion sources."
                      },
                      {
                        "Urn": "Urn",
                        "urn_is_array": true,
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": "string"
                          }
                        ],
                        "name": "entityUrns",
                        "default": null,
                        "doc": "Optional URNs of the entities this conversation is about.\nUseful for linking conversations to specific entities such as execution runs or datasets."
                      }
                    ],
                    "doc": "Context about where and how a conversation is being used.\nThis helps the AI agent understand what the user is looking at and working on."
                  }
                ],
                "name": "context",
                "default": null,
                "doc": "Optional context about where and how this message is being sent.\nWhen provided, this context is combined with the conversation-level context\nto give the AI agent the most up-to-date information about what the user is working on.\nThis allows for dynamic context that changes as the user navigates through different screens or steps."
              }
            ],
            "doc": "Conversation info "
          }
        },
        "name": "messages",
        "doc": "Messages in the conversation"
      },
      {
        "Searchable": {
          "/actor": {
            "fieldName": "creator",
            "fieldType": "URN"
          },
          "/time": {
            "fieldName": "createdAt",
            "fieldType": "DATETIME"
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "doc": "The time and actor who initiated the conversation"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": {
          "type": "enum",
          "symbolDocs": {
            "AGENT_TASK": "Conversation created by an agent task run.\nHidden from the user's normal chat history;\naccessible from the task run detail view.",
            "DATAHUB_UI": "Chat session originated in DataHub UI",
            "INGESTION_UI": "Chat session originated in Ingestion UI",
            "MCP": "Chat session originated from an external MCP client",
            "SLACK": "Chat session originated from Slack integration"
          },
          "name": "DataHubAiConversationOriginType",
          "namespace": "com.linkedin.pegasus2avro.conversation",
          "symbols": [
            "DATAHUB_UI",
            "INGESTION_UI",
            "SLACK",
            "MCP",
            "AGENT_TASK"
          ]
        },
        "name": "originType",
        "default": "DATAHUB_UI",
        "doc": "Origin type for the chat session"
      },
      {
        "Relationship": {
          "/entityUrns/*": {
            "entityTypes": [
              "dataset",
              "dataJob",
              "dataFlow",
              "chart",
              "dashboard",
              "notebook",
              "corpuser",
              "corpGroup",
              "domain",
              "container",
              "tag",
              "glossaryTerm",
              "glossaryNode",
              "document",
              "dataHubIngestionSource",
              "dataHubExecutionRequest",
              "assertion",
              "mlModel",
              "mlModelGroup",
              "mlModelDeployment",
              "mlFeatureTable",
              "mlFeature",
              "mlPrimaryKey",
              "test",
              "schemaField",
              "incident",
              "query",
              "dataProduct",
              "application",
              "businessAttribute",
              "entityType",
              "structuredProperty",
              "form"
            ],
            "name": "ConversationAbout"
          }
        },
        "Searchable": {
          "/entityUrns/*": {
            "fieldName": "entityUrns",
            "fieldType": "URN"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.conversation.DataHubAiConversationContext"
        ],
        "name": "context",
        "default": null,
        "doc": "Optional context about where and how this conversation is being used.\nProvides natural language context to help the AI agent understand\nwhat the user is looking at and working on."
      },
      {
        "Searchable": {
          "fieldName": "lastMessageTime",
          "fieldType": "DATETIME"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "lastMessageTime",
        "default": null,
        "doc": "Timestamp of the last message in this conversation."
      },
      {
        "Searchable": {
          "/*/urn": {
            "fieldName": "participantUrns",
            "fieldType": "URN"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "DataHubAiConversationParticipant",
              "namespace": "com.linkedin.pegasus2avro.conversation",
              "fields": [
                {
                  "Relationship": {
                    "entityTypes": [
                      "corpuser",
                      "corpGroup",
                      "aiAgent"
                    ],
                    "name": "ConversationParticipant"
                  },
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "entityTypes": [
                    "corpuser",
                    "corpGroup",
                    "aiAgent"
                  ],
                  "type": "string",
                  "name": "urn",
                  "doc": "URN of the participant. Typically a corpuser (the human author of\nthe conversation) or an aiAgent (a responding agent). May also be a\ncorpGroup in future multi-user / team-chat scenarios."
                },
                {
                  "type": [
                    "null",
                    "long"
                  ],
                  "name": "joinedAt",
                  "default": null,
                  "doc": "When this participant first joined the conversation (epoch millis).\nAppend-only \u2014 once recorded, it does not change even if the\nparticipant takes additional turns later."
                }
              ],
              "doc": "A participant in a DataHub AI conversation.\n\nMembership / sidebar-routing concept only. Does NOT grant authorization\nor governance privileges \u2014 policy decisions consult the Ownership aspect,\nnot this list.\n\nAuto-populated on conversation creation (with the creator and the agent\nthe conversation was opened against) and on each turn (responding agent\nis appended if not already present)."
            }
          }
        ],
        "name": "participants",
        "default": null,
        "doc": "Participants in this conversation \u2014 typically the human creator and\nthe agent(s) that have responded. Append-only set; auto-populated on\ncreation and on each turn from a previously unseen agent.\n\nUsed by the chat sidebar to scope conversations to an agent's tab\n(filter by participants.urn) and to surface \"no-participant\" convos\n(e.g. programmatic creation, error recovery) in the global Ask\nDataHub sidebar via an absence check on this field.\n\nMembership/routing concept only. Does NOT grant authorization;\npolicy decisions consult the Ownership aspect, not this list."
      }
    ],
    "doc": "Conversation info "
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubPageModuleProperties",
      "schemaVersion": 3
    },
    "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": {
            "AGENTS": "Module surfacing a roster of AI agents. Distinct from AGENT_CARD\n(which features a single agent) \u2014 this is the multi-agent listing.",
            "AGENT_CARD": "Module displaying a single AI agent as a featured card (hero greeter or compact tile).\nUsed on Domain / Data Product summaries and HomePage to surface conversational agents.",
            "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",
            "DOCUMENT_STATS": "Module displaying stats tiles for the Context Documents corpus.",
            "DOCUMENT_USAGE": "Module displaying a time-series chart of Context Document authorship activity, split by humans vs AI agents.",
            "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",
            "MY_DOCUMENTS": "Module displaying Context Documents owned by the current user.",
            "OWNED_ASSETS": "Module displaying assets owned by a user",
            "PLATFORMS": "Module displaying the platforms in an instance",
            "RECENT_DOCUMENTS": "Module displaying recently modified Context Documents.",
            "RELATED_TERMS": "Module displaying the related terms of a given glossary term",
            "RICH_TEXT": "Module containing rich text to be rendered",
            "SUBSCRIBED_ASSETS": "Module displaying assets subscribed to by a given user",
            "UNKNOWN": "Unknown module type - this can occur with corrupted data or rolling back to versions without new modules",
            "WORKFLOWS": "Module displaying workflows that can be started"
          },
          "name": "DataHubPageModuleType",
          "namespace": "com.linkedin.pegasus2avro.module",
          "symbols": [
            "LINK",
            "RICH_TEXT",
            "ASSET_COLLECTION",
            "HIERARCHY",
            "OWNED_ASSETS",
            "DOMAINS",
            "ASSETS",
            "CHILD_HIERARCHY",
            "DATA_PRODUCTS",
            "RELATED_TERMS",
            "SUBSCRIBED_ASSETS",
            "WORKFLOWS",
            "PLATFORMS",
            "LINEAGE",
            "COLUMNS",
            "AGENT_CARD",
            "AGENTS",
            "DOCUMENT_STATS",
            "RECENT_DOCUMENTS",
            "MY_DOCUMENTS",
            "DOCUMENT_USAGE",
            "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"
            },
            {
              "type": [
                "null",
                {
                  "type": "record",
                  "name": "AgentCardModuleParams",
                  "namespace": "com.linkedin.pegasus2avro.module",
                  "fields": [
                    {
                      "Relationship": {
                        "entityTypes": [
                          "aiAgent"
                        ],
                        "name": "AgentCardAgent"
                      },
                      "java": {
                        "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                      },
                      "Urn": "Urn",
                      "entityTypes": [
                        "aiAgent"
                      ],
                      "type": "string",
                      "name": "agentUrn",
                      "doc": "URN of the AI agent to feature in this module."
                    },
                    {
                      "type": {
                        "type": "enum",
                        "symbolDocs": {
                          "CHAT": "Full-width inline chat composer on the page. Typically the primary\nagent surface on a domain or data product summary.",
                          "LINK": "Compact clickable card \u2014 avatar + name + description. Click opens\nthe agent's default surface (chat, summary, or another tab \u2014\nresolved by the agent's own configuration, not by this enum)."
                        },
                        "name": "AgentCardDisplayMode",
                        "namespace": "com.linkedin.pegasus2avro.module",
                        "symbols": [
                          "CHAT",
                          "LINK"
                        ],
                        "doc": "Display mode for an AGENT_CARD page module. Determines how the module\nrenders on a page template \u2014 as an inline chat experience or as a\ncompact link card."
                      },
                      "name": "displayMode",
                      "doc": "Whether to render as a full-width hero or a compact tile.\nDefaults to CARD at the resolver level when omitted."
                    }
                  ],
                  "doc": "The params required if the module is type AGENT_CARD.\n\nAn AGENT_CARD module pins a single AI agent to a page template. Used on\nboth AssetSummary surfaces (Domain, Data Product pages) and HomePage. The\ndisplayMode field selects the rendered shape; the page template designer\nis the only place these are added/removed."
                }
              ],
              "name": "agentCardParams",
              "default": null,
              "doc": "The params required if the module is type AGENT_CARD"
            }
          ],
          "doc": "The specific parameters stored for a module"
        },
        "name": "params",
        "doc": "The specific parameters stored for this module"
      },
      {
        "Searchable": {
          "/actor": {
            "fieldName": "createdBy",
            "fieldType": "URN"
          },
          "/time": {
            "fieldName": "createdAt",
            "fieldType": "DATETIME"
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "doc": "Audit stamp for when and by whom this template was created"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "lastModifiedAt",
            "fieldType": "DATETIME"
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "doc": "Audit stamp for when and by whom this template was last updated"
      }
    ],
    "doc": "The main properties of a DataHub page module"
  },
  "com.linkedin.pegasus2avro.retention.DataHubRetentionConfig",
  {
    "type": "record",
    "Aspect": {
      "name": "linkPreviewInfo"
    },
    "name": "LinkPreviewInfo",
    "namespace": "com.linkedin.pegasus2avro.link",
    "fields": [
      {
        "type": {
          "type": "enum",
          "symbolDocs": {
            "SLACK_MESSAGE": "Preview of a Slack Message",
            "TEAMS_MESSAGE": "Preview of a Microsoft Teams Message"
          },
          "name": "LinkPreviewType",
          "namespace": "com.linkedin.pegasus2avro.link",
          "symbols": [
            "SLACK_MESSAGE",
            "TEAMS_MESSAGE"
          ]
        },
        "name": "type",
        "doc": "The type of the Link Preview"
      },
      {
        "type": "string",
        "name": "json",
        "doc": "The JSON-encoded preview. Understood and rendered by DataHub UI."
      },
      {
        "type": "long",
        "name": "lastRefreshedMs",
        "doc": "The time at which the preview was last refreshed."
      }
    ],
    "doc": "Information about a Link Preview"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "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",
                "searchTier": 2
              },
              "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": "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": "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": {
      "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"
  },
  "com.linkedin.pegasus2avro.identity.CorpUserInfo",
  {
    "type": "record",
    "Aspect": {
      "name": "corpUserSettings",
      "schemaVersion": 3
    },
    "name": "CorpUserSettings",
    "namespace": "com.linkedin.pegasus2avro.identity",
    "fields": [
      {
        "type": {
          "type": "record",
          "name": "CorpUserAppearanceSettings",
          "namespace": "com.linkedin.pegasus2avro.identity",
          "fields": [
            {
              "type": [
                "null",
                "boolean"
              ],
              "name": "showSimplifiedHomepage",
              "default": null,
              "doc": "Flag whether the user should see a homepage with only datasets, charts and dashboards. Intended for users\nwho have less operational use cases for the datahub tool."
            },
            {
              "type": [
                "null",
                "boolean"
              ],
              "name": "showThemeV2",
              "default": null,
              "doc": "Flag controlling whether the V2 UI for DataHub is shown."
            }
          ],
          "doc": "Settings for a user around the appearance of their DataHub UI"
        },
        "name": "appearance",
        "doc": "Settings for a user around the appearance of their DataHub UI"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "CorpUserViewsSettings",
            "namespace": "com.linkedin.pegasus2avro.identity",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": [
                  "null",
                  "string"
                ],
                "name": "defaultView",
                "default": null,
                "doc": "The default View which is selected for the user.\nIf none is chosen, then this value will be left blank."
              }
            ],
            "doc": "Settings related to the 'Views' feature."
          }
        ],
        "name": "views",
        "default": null,
        "doc": "User preferences for the Views feature."
      },
      {
        "type": [
          "null",
          {
            "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. This is a top-level on/off switch."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "SlackNotificationSettings",
                    "namespace": "com.linkedin.pegasus2avro.event.notification.settings",
                    "fields": [
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "SlackUser",
                            "namespace": "com.linkedin.pegasus2avro.settings.global",
                            "fields": [
                              {
                                "Searchable": {
                                  "fieldType": "KEYWORD",
                                  "queryByDefault": false
                                },
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "slackUserId",
                                "default": null,
                                "doc": "The Slack user ID (Slack member UUID).\nThis is the primary identifier used for Slack messaging via DM.\nSearchable to enable lookup of DataHub users by their Slack ID."
                              },
                              {
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "email",
                                "default": null,
                                "doc": "The user's email address (fallback identifier).\nUsed when Slack user ID is not available or for email-based user resolution."
                              },
                              {
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "displayName",
                                "default": null,
                                "doc": "The user's display name (cached value, may be stale).\nRetrieved from Slack API and cached for performance."
                              },
                              {
                                "type": [
                                  "null",
                                  "long"
                                ],
                                "name": "lastUpdated",
                                "default": null,
                                "doc": "The timestamp when the cached display name was last updated.\nUsed for TTL-based cache invalidation (milliseconds since epoch)."
                              }
                            ],
                            "doc": "Slack user information with cached display name and multiple ID support.\nFollows the same caching pattern as TeamsUser for consistency."
                          }
                        ],
                        "name": "user",
                        "default": null,
                        "doc": "Optional structured user information with cached metadata.\nSupports Slack user ID with cached display name and email."
                      },
                      {
                        "deprecated": true,
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "userHandle",
                        "default": null,
                        "doc": "Optional user handle (deprecated - use 'user' field instead).\nKept for backward compatibility with existing implementations."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": "string"
                          }
                        ],
                        "name": "channels",
                        "default": null,
                        "doc": "Optional list of channels to send notifications to"
                      }
                    ],
                    "doc": "Slack Notification settings for an actor."
                  }
                ],
                "name": "slackSettings",
                "default": null,
                "doc": "Slack Notification Settings"
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "EmailNotificationSettings",
                    "namespace": "com.linkedin.pegasus2avro.event.notification.settings",
                    "fields": [
                      {
                        "type": "string",
                        "name": "email",
                        "doc": "Optional user or group email address"
                      }
                    ],
                    "doc": "Email Notification settings for an actor."
                  }
                ],
                "name": "emailSettings",
                "default": null,
                "doc": "Email Notification Settings"
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "TeamsNotificationSettings",
                    "namespace": "com.linkedin.pegasus2avro.event.notification.settings",
                    "fields": [
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "TeamsUser",
                            "namespace": "com.linkedin.pegasus2avro.settings.global",
                            "fields": [
                              {
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "teamsUserId",
                                "default": null,
                                "doc": "The Teams user ID (internal Teams identifier).\nThis is the primary identifier used for Teams messaging."
                              },
                              {
                                "Searchable": {
                                  "fieldType": "KEYWORD",
                                  "queryByDefault": false
                                },
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "azureUserId",
                                "default": null,
                                "doc": "The Azure AD user ID (Azure Active Directory object ID).\nThis is the primary identifier for Azure AD operations and Microsoft Graph API calls."
                              },
                              {
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "email",
                                "default": null,
                                "doc": "The user's email address (fallback identifier).\nUsed when other IDs are not available or for email-based user resolution."
                              },
                              {
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "displayName",
                                "default": null,
                                "doc": "The user's display name (cached value, may be stale).\nRetrieved from Microsoft Graph API and cached for performance."
                              },
                              {
                                "type": [
                                  "null",
                                  "long"
                                ],
                                "name": "lastUpdated",
                                "default": null,
                                "doc": "The timestamp when the cached display name was last updated.\nUsed for TTL-based cache invalidation (milliseconds since epoch)."
                              }
                            ],
                            "doc": "Teams user information with cached display name and multiple ID support.\nFollows the same caching pattern as TeamsChannel for consistency."
                          }
                        ],
                        "name": "user",
                        "default": null,
                        "doc": "Optional structured user information with cached metadata.\nSupports both Azure AD user ID and Teams user ID with cached display name."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": {
                              "type": "record",
                              "name": "TeamsChannel",
                              "namespace": "com.linkedin.pegasus2avro.settings.global",
                              "fields": [
                                {
                                  "type": "string",
                                  "name": "id",
                                  "doc": "The Teams channel ID (internal Teams identifier)."
                                },
                                {
                                  "type": [
                                    "null",
                                    "string"
                                  ],
                                  "name": "name",
                                  "default": null,
                                  "doc": "The Teams channel display name (cached value, may be stale)."
                                },
                                {
                                  "type": [
                                    "null",
                                    "long"
                                  ],
                                  "name": "lastUpdated",
                                  "default": null,
                                  "doc": "The timestamp when the cached name was last updated.\nUsed for TTL-based cache invalidation."
                                }
                              ],
                              "doc": "Teams channel information with cached display name."
                            }
                          }
                        ],
                        "name": "channels",
                        "default": null,
                        "doc": "Optional list of structured channels with cached metadata"
                      }
                    ],
                    "doc": "Microsoft Teams Notification settings for an actor."
                  }
                ],
                "name": "teamsSettings",
                "default": null,
                "doc": "Microsoft Teams Notification Settings"
              },
              {
                "type": [
                  "null",
                  {
                    "type": "map",
                    "values": {
                      "type": "record",
                      "name": "NotificationSetting",
                      "namespace": "com.linkedin.pegasus2avro.settings",
                      "fields": [
                        {
                          "type": {
                            "type": "enum",
                            "symbolDocs": {
                              "DISABLED": "Setting is disabled.",
                              "ENABLED": "Setting is enabled."
                            },
                            "name": "NotificationSettingValue",
                            "namespace": "com.linkedin.pegasus2avro.settings",
                            "symbols": [
                              "ENABLED",
                              "DISABLED"
                            ]
                          },
                          "name": "value",
                          "doc": "Integrations between DataHub & other platforms."
                        },
                        {
                          "type": [
                            "null",
                            {
                              "type": "map",
                              "values": "string"
                            }
                          ],
                          "name": "params",
                          "default": null,
                          "doc": "Custom set of setting parameters.\nCurrently used to store sink enabled / disabled settings.\nE.g. slack.enabled = true, email.enabled = false"
                        }
                      ]
                    }
                  }
                ],
                "name": "settings",
                "default": null,
                "doc": "User or Group Notification Scenario Settings.\n\nA map of notification scenario type to the settings associated with it.\nFor a list of all scenario types to notify on, check out NotificationScenarioType enum."
              }
            ],
            "doc": "Notification settings for an actor or subscription."
          }
        ],
        "name": "notificationSettings",
        "default": null,
        "doc": "Notification settings for 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"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "CorpUserContextDocumentsSettings",
            "namespace": "com.linkedin.pegasus2avro.identity",
            "fields": [
              {
                "Relationship": {
                  "entityTypes": [
                    "dataHubPageTemplate"
                  ],
                  "name": "HasPersonalContextDocumentsPageTemplate"
                },
                "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 as this user's Context Documents homepage."
              }
            ],
            "doc": "Settings related to the Context Documents homepage for a user.\n\nMirrors {@link CorpUserHomePageSettings} so that personalizations of the\nDocuments landing page (module layout, etc.) can be pinned per-user via a\ndataHubPageTemplate URN."
          }
        ],
        "name": "contextDocuments",
        "default": null,
        "doc": "Settings related to the Context Documents homepage for a user"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "AiAssistantSettings",
            "namespace": "com.linkedin.pegasus2avro.settings.global",
            "fields": [
              {
                "type": {
                  "type": "array",
                  "items": {
                    "type": "record",
                    "name": "AiInstruction",
                    "namespace": "com.linkedin.pegasus2avro.settings.global",
                    "fields": [
                      {
                        "type": "string",
                        "name": "id",
                        "doc": "A unique identifier for this instruction.\nThis will enable users to manage multiple versions of the same instruction in the future."
                      },
                      {
                        "type": {
                          "type": "enum",
                          "symbolDocs": {
                            "GENERAL_CONTEXT": "General context to customize the AI assistant's behavior globally or personally. This is the only supported type currently."
                          },
                          "name": "AiInstructionType",
                          "namespace": "com.linkedin.pegasus2avro.settings.global",
                          "symbols": [
                            "GENERAL_CONTEXT"
                          ]
                        },
                        "name": "type",
                        "doc": "A unique identifier for this instruction.\nThis will enable users to manage multiple versions of the same instruction in the future."
                      },
                      {
                        "type": {
                          "type": "enum",
                          "symbolDocs": {
                            "ACTIVE": "The instruction is active and will be used by the AI assistant.",
                            "INACTIVE": "The instruction is inactive and will not be used by the AI assistant."
                          },
                          "name": "AiInstructionState",
                          "namespace": "com.linkedin.pegasus2avro.settings.global",
                          "symbols": [
                            "ACTIVE",
                            "INACTIVE"
                          ]
                        },
                        "name": "state",
                        "doc": "The state of the instruction"
                      },
                      {
                        "type": "string",
                        "name": "instruction",
                        "doc": "Custom instruction text to be sent to the AI model."
                      },
                      {
                        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                        "name": "created",
                        "doc": "The actor + timestamp of when this instruction was created."
                      },
                      {
                        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                        "name": "lastModified",
                        "doc": "The actor + timestamp of when this instruction was last modified."
                      }
                    ],
                    "doc": "An object representing custom AI instructions for the AI assistant.\nGenerally, these are injected into the prompt sent to the AI model.\n\nIn the future we extend this to include positive examples, negative examples,\nand other parameters to customize the AI model's behavior."
                  }
                },
                "name": "instructions",
                "default": [],
                "doc": "Custom instructions to inject into the AI assistant prompt"
              }
            ],
            "doc": "Settings related to the AI assistant (Ask DataHub) feature"
          }
        ],
        "name": "aiAssistant",
        "default": null,
        "doc": "Settings related to AI-powered chat assistant (Ask DataHub)."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "UserAiPluginSettings",
            "namespace": "com.linkedin.pegasus2avro.identity",
            "fields": [
              {
                "type": {
                  "type": "array",
                  "items": {
                    "type": "record",
                    "name": "UserAiPluginConfig",
                    "namespace": "com.linkedin.pegasus2avro.identity",
                    "fields": [
                      {
                        "Searchable": {
                          "fieldName": "aiPluginIds",
                          "fieldType": "KEYWORD",
                          "queryByDefault": false
                        },
                        "type": "string",
                        "name": "id",
                        "doc": "Unique identifier matching the global plugin configuration.\nExample: 'urn:li:service:glean-search'"
                      },
                      {
                        "type": [
                          "null",
                          "boolean"
                        ],
                        "name": "enabled",
                        "default": null,
                        "doc": "Whether this plugin is enabled for the user.\nIf not set, inherits from global settings."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": "string"
                          }
                        ],
                        "name": "allowedTools",
                        "default": null,
                        "doc": "Restrict which tools from this plugin the user wants to use.\nIf empty or not set, all tools from the plugin are available.\nThis is for user preference, not security (users can only restrict, not expand).\nReserved for future use."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "UserApiKeyConnectionConfig",
                            "namespace": "com.linkedin.pegasus2avro.identity",
                            "fields": [
                              {
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "Urn": "Urn",
                                "type": "string",
                                "name": "connectionUrn",
                                "doc": "URN of the DataHubConnection containing the user's API key.\nFormat: urn:li:dataHubConnection:urn_li_corpuser_johndoe__pluginId\nNote: Uses double-underscore separator (not tuple format) since DataHubConnectionKey has a single id field.\nThe connection payload contains: {\"apiKey\": \"...\"}"
                              }
                            ],
                            "doc": "Configuration for user-provided API key credentials.\nLinks to a DataHubConnection entity containing the encrypted API key."
                          }
                        ],
                        "name": "apiKeyConfig",
                        "default": null,
                        "doc": "User's API key configuration.\nPresent when the plugin uses USER_API_KEY auth and the user has configured their key."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "UserOAuthConnectionConfig",
                            "namespace": "com.linkedin.pegasus2avro.identity",
                            "fields": [
                              {
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "Urn": "Urn",
                                "type": "string",
                                "name": "connectionUrn",
                                "doc": "URN of the DataHubConnection containing the user's OAuth tokens.\nFormat: urn:li:dataHubConnection:urn_li_corpuser_johndoe__pluginId\nNote: Uses double-underscore separator (not tuple format) since DataHubConnectionKey has a single id field.\nThe connection payload contains:\n{\n  \"accessToken\": \"...\",\n  \"refreshToken\": \"...\",\n  \"expiresAt\": 1234567890,\n  \"tokenType\": \"Bearer\"\n}"
                              }
                            ],
                            "doc": "Configuration for user OAuth credentials.\nLinks to a DataHubConnection entity containing the OAuth tokens."
                          }
                        ],
                        "name": "oauthConfig",
                        "default": null,
                        "doc": "User's OAuth configuration.\nPresent when the plugin uses USER_OAUTH auth and the user has connected."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "map",
                            "values": "string"
                          }
                        ],
                        "name": "customHeaders",
                        "default": null,
                        "doc": "User-specific custom headers to send with requests to this plugin's MCP server.\nThese are merged with (and override) admin-configured custom headers.\nExample: {\"x-dbt-prod-environment-id\": \"362762\"}"
                      }
                    ],
                    "doc": "User-specific configuration for a single AI plugin.\n\nUsers can:\n- Enable/disable plugins for themselves\n- Restrict which tools they want to use (future)\n- Store their own credentials (API keys or OAuth tokens)\n\nThe id field must match a plugin id from AiPluginSettings in GlobalSettings."
                  }
                },
                "name": "plugins",
                "default": [],
                "doc": "List of user configurations for AI plugins.\nEach entry corresponds to a globally-configured plugin (matched by id).\nOnly plugins listed here have user-specific overrides."
              }
            ],
            "doc": "User-specific settings for AI plugins in Ask DataHub.\nStored as part of CorpUserSettings aspect.\n\nThis mirrors the structure of AiPluginSettings in GlobalSettings,\nallowing users to customize their experience with AI plugins."
          }
        ],
        "name": "aiPluginSettings",
        "default": null,
        "doc": "User-specific settings for AI plugins (MCP servers, etc.).\nContains user overrides and credentials for globally-configured plugins."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "CorpUserAiSettings",
            "namespace": "com.linkedin.pegasus2avro.identity",
            "fields": [
              {
                "type": [
                  "null",
                  "boolean"
                ],
                "name": "memoryEnabled",
                "default": null,
                "doc": "Flag controlling whether AI memory (learning from conversations) is enabled for this user.\nDefaults to true when absent."
              }
            ],
            "doc": "Per-user settings for AI features (Ask DataHub, memory, etc.)"
          }
        ],
        "name": "ai",
        "default": null,
        "doc": "Per-user settings for AI features (memory, etc.)"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "CorpUserLocaleSettings",
            "namespace": "com.linkedin.pegasus2avro.identity",
            "fields": [
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "language",
                "default": null,
                "doc": "BCP 47 language tag representing the user's preferred UI language (e.g. \"en\", \"de\")."
              }
            ],
            "doc": "Settings for a user's locale and language preferences"
          }
        ],
        "name": "locale",
        "default": null,
        "doc": "Locale and language preferences for a user"
      }
    ],
    "doc": "Settings that a user can customize through the DataHub UI"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "nativeGroupMembership"
    },
    "name": "NativeGroupMembership",
    "namespace": "com.linkedin.pegasus2avro.identity",
    "fields": [
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "corpGroup"
            ],
            "name": "IsMemberOfNativeGroup"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "nativeGroups"
      }
    ],
    "doc": "Carries information about the native CorpGroups a user is in."
  },
  "com.linkedin.pegasus2avro.identity.CorpUserStatus",
  {
    "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."
  },
  "com.linkedin.pegasus2avro.identity.CorpUserEditableInfo",
  "com.linkedin.pegasus2avro.identity.GroupMembership",
  "com.linkedin.pegasus2avro.identity.CorpGroupInfo",
  {
    "type": "record",
    "Aspect": {
      "name": "corpUserInvitationStatus"
    },
    "name": "CorpUserInvitationStatus",
    "namespace": "com.linkedin.pegasus2avro.identity",
    "fields": [
      {
        "Searchable": {
          "fieldType": "URN",
          "hasValuesFieldName": "hasRole",
          "queryByDefault": false
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "role",
        "default": null,
        "doc": "Role will only work in non-sso environments today."
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "doc": "Created Audit"
      },
      {
        "Searchable": {
          "fieldName": "invitationStatus",
          "fieldType": "KEYWORD",
          "queryByDefault": false
        },
        "type": {
          "type": "enum",
          "name": "InvitationStatus",
          "namespace": "com.linkedin.pegasus2avro.identity",
          "symbols": [
            "SENT",
            "ACCEPTED",
            "REVOKED",
            "SUGGESTION_DISMISSED"
          ]
        },
        "name": "status",
        "doc": "The status of the invitation"
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastUpdated",
        "doc": "Last Status Change Audit"
      },
      {
        "type": "string",
        "name": "invitationToken",
        "doc": "Unique token for the invitation URL - hashed via SecretService "
      }
    ]
  },
  {
    "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"
      },
      {
        "Searchable": {
          "fieldName": "tokenType",
          "fieldType": "KEYWORD"
        },
        "type": [
          {
            "type": "enum",
            "symbolDocs": {
              "INDIVIDUAL": "Individual token generated for bulk invitations. Single-use, consumed on signup.",
              "SHARED": "Shared token that admin can copy and share manually. Reusable until admin regenerates."
            },
            "name": "TokenType",
            "namespace": "com.linkedin.pegasus2avro.identity",
            "symbols": [
              "SHARED",
              "INDIVIDUAL"
            ],
            "doc": "Token types for different invitation workflows"
          },
          "null"
        ],
        "name": "tokenType",
        "default": "SHARED",
        "doc": "The type of invite token - shared (admin managed) or individual (single-use)"
      }
    ],
    "doc": "Aspect used to store invite tokens."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "corpGroupSettings"
    },
    "name": "CorpGroupSettings",
    "namespace": "com.linkedin.pegasus2avro.identity",
    "fields": [
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.event.notification.settings.NotificationSettings"
        ],
        "name": "notificationSettings",
        "default": null,
        "doc": "Notification settings for a group"
      }
    ],
    "doc": "Settings that a group can customize through the DataHub UI"
  },
  {
    "type": "record",
    "Event": {
      "name": "notificationRequest"
    },
    "name": "NotificationRequest",
    "namespace": "com.linkedin.pegasus2avro.event.notification",
    "fields": [
      {
        "type": {
          "type": "record",
          "name": "NotificationMessage",
          "namespace": "com.linkedin.pegasus2avro.event.notification",
          "fields": [
            {
              "type": {
                "type": "enum",
                "symbolDocs": {
                  "BROADCAST_ACTION_WORKFLOW_FORM_REQUEST_STATUS_CHANGE": "Broadcast that an action workflow form request has been completed (approved or denied).",
                  "BROADCAST_ASSERTION_STATUS_CHANGE": "Assertion change notification template.",
                  "BROADCAST_CONTEXT_GENERATION_PROPOSAL_DIGEST": "A context generation run produced proposals the user is assigned to.",
                  "BROADCAST_CONTEXT_GENERATION_TRIGGERED_RUN_COMPLETED": "A context generation run the user triggered has finished successfully.",
                  "BROADCAST_CONTEXT_GENERATION_TRIGGERED_RUN_FAILED": "A context generation run the user triggered (or owns) failed.",
                  "BROADCAST_NEW_ACTION_WORKFLOW_FORM_REQUEST": "Broadcast that a new action workflow form request has been created or needs review.",
                  "BROADCAST_NEW_INCIDENT_UPDATE": "Updates the broadcasted incident if possible.",
                  "BROADCAST_TASK_DECISION_REQUESTED": "Broadcast that an agent task requires human input (decision requested).",
                  "BROADCAST_TASK_RUN_CHANGE": "Broadcast that an agent task run has completed (succeeded or failed).",
                  "CUSTOM": "Legacy template types to support backwards compatibility.",
                  "INVITATION": "User invitation notification template.",
                  "OWNERSHIP_CHANGE": "Ownership change notification template.",
                  "RELEASE_NOTIFICATION": "Release notification template for announcing new releases.",
                  "SUPPORT_LOGIN": "Support login notification template.",
                  "WORKFLOW_REQUEST_CANCELLED_FOR_APPROVER": "Notify currently-assigned approvers that an action workflow form request was cancelled\nby its requester (or an admin) \u2014 no further action is required from them."
                },
                "name": "NotificationTemplateType",
                "namespace": "com.linkedin.pegasus2avro.event.notification.template",
                "symbols": [
                  "OWNERSHIP_CHANGE",
                  "BROADCAST_ASSERTION_STATUS_CHANGE",
                  "INVITATION",
                  "CUSTOM",
                  "BROADCAST_NEW_INCIDENT",
                  "BROADCAST_NEW_INCIDENT_UPDATE",
                  "BROADCAST_INCIDENT_STATUS_CHANGE",
                  "BROADCAST_ENTITY_CHANGE",
                  "BROADCAST_INGESTION_RUN_CHANGE",
                  "BROADCAST_NEW_PROPOSAL",
                  "BROADCAST_PROPOSAL_STATUS_CHANGE",
                  "BROADCAST_COMPLIANCE_FORM_PUBLISH",
                  "BROADCAST_NEW_ACTION_WORKFLOW_FORM_REQUEST",
                  "BROADCAST_ACTION_WORKFLOW_FORM_REQUEST_STATUS_CHANGE",
                  "BROADCAST_TASK_RUN_CHANGE",
                  "BROADCAST_TASK_DECISION_REQUESTED",
                  "WORKFLOW_REQUEST_CANCELLED_FOR_APPROVER",
                  "RELEASE_NOTIFICATION",
                  "SUPPORT_LOGIN",
                  "BROADCAST_CONTEXT_GENERATION_TRIGGERED_RUN_COMPLETED",
                  "BROADCAST_CONTEXT_GENERATION_TRIGGERED_RUN_FAILED",
                  "BROADCAST_CONTEXT_GENERATION_PROPOSAL_DIGEST",
                  "INVALID_TEMPLATE"
                ],
                "doc": "Possible notification template types."
              },
              "name": "template",
              "doc": "The name of a notification template to use, e.g. INCIDENT_CREATED, INCIDENT_STATUS_UPDATED, CUSTOM.\nEach sink may support a different set of template types."
            },
            {
              "type": [
                "null",
                {
                  "type": "map",
                  "values": "string"
                }
              ],
              "name": "parameters",
              "default": null,
              "doc": "Parameters serving as input to the template, validated and substituted based on the selected template."
            },
            {
              "type": [
                "null",
                {
                  "type": "record",
                  "name": "OwnershipParameters",
                  "namespace": "com.linkedin.pegasus2avro.event.notification.template",
                  "fields": [
                    {
                      "type": [
                        "null",
                        {
                          "type": "array",
                          "items": "com.linkedin.pegasus2avro.common.Owner"
                        }
                      ],
                      "name": "ownersAdded",
                      "default": null,
                      "doc": "The owners that were added."
                    },
                    {
                      "type": [
                        "null",
                        {
                          "type": "array",
                          "items": "com.linkedin.pegasus2avro.common.Owner"
                        }
                      ],
                      "name": "ownersRemoved",
                      "default": null,
                      "doc": "The owners that were removed."
                    }
                  ],
                  "doc": "A message to send via notification."
                }
              ],
              "name": "ownershipParameters",
              "default": null,
              "doc": "Input parameters for ownership notification template. Only filled when templateType is OWNERSHIP_CHANGE."
            }
          ],
          "doc": "A message to send via notification."
        },
        "name": "message",
        "doc": "A message to send."
      },
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "NotificationRecipient",
            "namespace": "com.linkedin.pegasus2avro.event.notification",
            "fields": [
              {
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "CUSTOM": "A custom target, e.g. a slack channel or dm, that a specific sink can handle. Sinks are expected to handle custom\ntypes appropriately.",
                    "EMAIL": "A specific email address to send a notification to.",
                    "SLACK_CHANNEL": "A slack channel to send a notification to.",
                    "SLACK_DM": "A slack member to send a notification to.",
                    "TEAMS_CHANNEL": "A Microsoft Teams channel to send a notification to.",
                    "TEAMS_DM": "A Microsoft Teams member to send a notification to.",
                    "USER": "Deprecated! A DataHub user (via urn.). Currently this is NOT USED and may be removed in future versions.\nRecipient type should correspond to the sink type, and the sink should understand how to handle the recipient type appropriately.\nInstead, typically notifications have specific recipients as Slack handles, slack channels, or email addresses."
                  },
                  "name": "NotificationRecipientType",
                  "namespace": "com.linkedin.pegasus2avro.event.notification",
                  "symbols": [
                    "EMAIL",
                    "SLACK_CHANNEL",
                    "SLACK_DM",
                    "TEAMS_CHANNEL",
                    "TEAMS_DM",
                    "CUSTOM",
                    "USER"
                  ],
                  "doc": "A type of target (recipient) channel for a notification. Typically a single recipient\nmaps to a single sink type. Each sink can support one or more recipient types.\n\nEach type of Notification Sink exposes the recipient types that they support sinking to. This\nis used by the notification manager to filter out recipients that are not supported by a given sink."
                },
                "name": "type",
                "doc": "The type of a notification recipient, e.g. the channel type."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "customType",
                "default": null,
                "doc": "A custom notification recipient type. Required if recipient type is CUSTOM."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "id",
                "default": null,
                "doc": "A unique channel / target id that the sink can pick up.\nFor slack sink, this will contain the channel or user id to send to.\nFor email sink, this will contain the email address to send to."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "enum",
                    "symbolDocs": {
                      "ACTOR_NOTIFICATION": "The notification originated from an actor-oriented default notification.\nFor example, proposal task or ownership assignment notifications.",
                      "GLOBAL_NOTIFICATION": "The notification originated from a global change.",
                      "SUBSCRIPTION": "The notification originated from a subscription."
                    },
                    "name": "NotificationRecipientOriginType",
                    "namespace": "com.linkedin.pegasus2avro.event.notification",
                    "symbols": [
                      "SUBSCRIPTION",
                      "GLOBAL_NOTIFICATION",
                      "ACTOR_NOTIFICATION"
                    ]
                  }
                ],
                "name": "origin",
                "default": null,
                "doc": "The origin of the recipient notification, for tracking."
              },
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": [
                  "null",
                  "string"
                ],
                "name": "actor",
                "default": null,
                "doc": "The URN of the actor associated with the recipient (personal or subscription related notifications)."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "displayName",
                "default": null,
                "doc": "An optional display name to use when addressing the recipient. Available only for subscription or personal notifications."
              }
            ],
            "doc": "The targeted recipient of a notification, either a specific User or a specific channel."
          }
        },
        "name": "recipients",
        "doc": "The target (receiver) of the notification, in DataHub Terms."
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "NotificationSink",
              "namespace": "com.linkedin.pegasus2avro.event.notification",
              "fields": [
                {
                  "type": "com.linkedin.pegasus2avro.event.notification.NotificationSinkType",
                  "name": "type",
                  "doc": "The type of the sink."
                }
              ],
              "doc": "Information about the sink of a notification, e.g. HOW the notification is sent."
            }
          }
        ],
        "name": "sinks",
        "default": null,
        "doc": "Optional: A specific sink / set of sinks to send to. If not specified, all enabled sinks\nwill be attemped and will be expected to handle the notification if they are able to send\nto a given recipient type."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "NotificationContext",
            "namespace": "com.linkedin.pegasus2avro.event.notification",
            "fields": [
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "runId",
                "default": null,
                "doc": "The run-id that triggered the notification. If it was triggered by a manual action,\nthis may be set to the default \"no-run-id-provided\" value."
              }
            ],
            "doc": "Additional context about the notification."
          }
        ],
        "name": "context",
        "default": null,
        "doc": "Additional context about the notification."
      }
    ],
    "doc": "A request to send a notification."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "aiAgentInfo",
      "schemaVersion": 4
    },
    "name": "AIAgentInfo",
    "namespace": "com.linkedin.pegasus2avro.agent",
    "fields": [
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "name",
        "doc": "Display name of the agent"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasTagline"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "tagline",
        "default": null,
        "doc": "Short, user-facing tagline shown on agent cards, hero subtitles, and\npicker dropdowns. Should be a one-line summary (~120 chars). When\nabsent, surfaces fall back to truncating `description`."
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Description of what this agent does AND when Ask DataHub should\nroute to it. Style: \"X does Y. Use when Z.\" The router reads this\nverbatim when deciding whether to delegate to this agent, so the\n\"Use when...\" tail is load-bearing \u2014 not optional prose. Roughly\n300-1000 chars is the right length."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "instructions",
        "default": null,
        "doc": "Custom base instructions for the agent, beyond the standard DataHub boilerplate.\nInjected into the agent's system prompt."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "DataHubAgentSettings",
            "namespace": "com.linkedin.pegasus2avro.agent",
            "fields": [
              {
                "Searchable": {
                  "fieldName": "showInChat",
                  "fieldType": "BOOLEAN",
                  "queryByDefault": false
                },
                "type": [
                  "null",
                  "boolean"
                ],
                "name": "showInChat",
                "default": null,
                "doc": "When true, this agent appears as a selectable mode in the\nAsk DataHub chat interface alongside the built-in modes."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": {
                      "type": "record",
                      "name": "AIAgentToolRef",
                      "namespace": "com.linkedin.pegasus2avro.agent",
                      "fields": [
                        {
                          "type": "string",
                          "name": "toolId",
                          "doc": "Identifier of the tool, matching the tool name in the MCP tool registry."
                        },
                        {
                          "type": "boolean",
                          "name": "enabled",
                          "default": true,
                          "doc": "Whether this tool is enabled for the agent. Defaults to true."
                        }
                      ],
                      "doc": "A reference to a specific tool in the MCP tool registry.\n\nWhen an agent's tools list is null/absent, all available tools are enabled.\nUse tool refs only to restrict an agent to a subset of tools."
                    }
                  }
                ],
                "name": "tools",
                "default": null,
                "doc": "Tools available to this agent, selected from the MCP tool registry.\nWhen null/absent, all available tools are enabled.\nSpecify to restrict the agent to a subset of tools."
              },
              {
                "Relationship": {
                  "/*": {
                    "entityTypes": [
                      "service"
                    ],
                    "name": "AgentPlugin"
                  }
                },
                "Urn": "Urn",
                "urn_is_array": true,
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": "string"
                  }
                ],
                "name": "plugins",
                "default": null,
                "doc": "URNs of service entities (MCP plugins) available to this agent"
              },
              {
                "Relationship": {
                  "entityTypes": [
                    "dataHubView"
                  ],
                  "name": "AgentView"
                },
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "entityTypes": [
                  "dataHubView"
                ],
                "type": [
                  "null",
                  "string"
                ],
                "name": "view",
                "default": null,
                "doc": "URN of a DataHub View that scopes which assets are accessible to this agent.\n\nMutually exclusive with `AIAgentInfo.domain`: when a domain is set,\nthe system auto-provisions a View filtered to that domain and\nstores its URN here (named \"Auto-scope for <agentName>\"). When no\ndomain is set, this field holds a user-chosen view.\n\nXOR is UI-enforced only \u2014 raw API / MCP callers can currently set\nboth `domain` and `view` and reach an inconsistent state. A\nserver-side AspectPayloadValidator is a tracked follow-up."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": {
                      "type": "enum",
                      "name": "AgentDetailTabKey",
                      "namespace": "com.linkedin.pegasus2avro.agent",
                      "symbols": [
                        "SUMMARY",
                        "CHAT",
                        "TASKS",
                        "EVALS",
                        "DECISIONS"
                      ],
                      "doc": "Tabs that can appear on the agent detail page in DataHub Cloud. Used by\nDataHubAgentSettings.hiddenTabs to let an agent owner curate which tabs\nare visible to viewers with management privileges. Module-level hides\nstill apply on top \u2014 this list only ever ADDS to the set of hidden tabs.\n\nConsumers (viewers without MANAGE_AGENTS and not listed as an Owner) are\nalways restricted to the agent's primary surface regardless of this list."
                    }
                  }
                ],
                "name": "hiddenTabs",
                "default": null,
                "doc": "Owner-curated list of tabs to hide from this agent's detail page.\n\nConsumers (viewers without MANAGE_AGENTS and not listed as an Owner)\nalways see only the agent's primary surface regardless of this list\n\u2014 it only affects what owners/admins see in the tab bar."
              }
            ],
            "doc": "Settings specific to DataHub-native agents. These fields configure how\nthe agent integrates with DataHub's built-in features (chat, tools, plugins,\nviews). They are not expected to be populated for external agents."
          }
        ],
        "name": "settings",
        "default": null,
        "doc": "DataHub-native agent settings (tools, plugins, view, chat visibility).\nOnly populated for NATIVE and SYSTEM agents; not used by EXTERNAL agents."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "AIAgentSource",
            "namespace": "com.linkedin.pegasus2avro.agent",
            "fields": [
              {
                "Searchable": {
                  "addToFilters": true,
                  "fieldName": "sourceType",
                  "fieldType": "KEYWORD"
                },
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "EXTERNAL": "An agent defined and managed externally, cataloged on DataHub.",
                    "NATIVE": "An agent defined and managed natively on DataHub by end users.",
                    "SYSTEM": "A system-internal agent, bootstrapped at deployment time.\nSystem agents are not editable by end users."
                  },
                  "name": "AIAgentSourceType",
                  "namespace": "com.linkedin.pegasus2avro.agent",
                  "symbols": [
                    "SYSTEM",
                    "NATIVE",
                    "EXTERNAL"
                  ],
                  "doc": "The source type of an AI agent definition.\n\nFollows the same pattern as AssertionSourceType: NATIVE agents are\ndefined and managed on DataHub, while EXTERNAL agents are cataloged\nbut managed outside DataHub."
                },
                "name": "type",
                "doc": "The source type of the agent"
              },
              {
                "Relationship": {
                  "entityTypes": [
                    "aiAgent"
                  ],
                  "name": "ClonedFromAgent"
                },
                "Searchable": {
                  "addToFilters": true,
                  "fieldName": "clonedFrom",
                  "fieldType": "URN",
                  "filterNameOverride": "Cloned From"
                },
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "entityTypes": [
                  "aiAgent"
                ],
                "type": [
                  "null",
                  "string"
                ],
                "name": "clonedFrom",
                "default": null,
                "doc": "If this agent was cloned from another agent, the URN of the source agent.\nNull on SYSTEM agents and original NATIVE/EXTERNAL agents.\n\nUsed to group clones into an Agent Family \u2014 the base + all its clones share\none frontend module, one tool palette, and one set of instructions. Clones\ninherit configuration verbatim from the base; what differs is their\nstewardship set (the artifacts they manage)."
              }
            ],
            "doc": "The source or origin of an AI agent definition.\nFollows the same pattern as AssertionSource."
          }
        ],
        "name": "source",
        "default": null,
        "doc": "The source or origin of the agent definition.\nSystem agents (source.type = SYSTEM) are bootstrapped at deployment time\nand are not editable by end users."
      },
      {
        "Relationship": {
          "entityTypes": [
            "domain"
          ],
          "name": "AgentDomain"
        },
        "Searchable": {
          "addToFilters": true,
          "fieldName": "scopedDomain",
          "fieldType": "URN",
          "filterNameOverride": "Scoped to Domain"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "entityTypes": [
          "domain"
        ],
        "type": [
          "null",
          "string"
        ],
        "name": "domain",
        "default": null,
        "doc": "Domain this agent is SCOPED to (single-valued by design).\n\nThis is a binding semantic, not a cataloging one: setting it\ndeclares \"this agent operates within domain X\" and is paired with\nan auto-provisioned View on `DataHubAgentSettings.view` (see XOR\nnote there). It does NOT make the agent appear as an asset in\nthat domain's asset listing.\n\nDeliberately kept separate from the standard `domains` aspect\n(com.linkedin.pegasus2avro.domain.Domains), which would catalog this agent as\nan asset attached to one or more domains. The two semantics may\ncoexist orthogonally in the future (e.g., an agent SCOPED to\ndomain A while also being CATALOGED under domains A, B, C).\n\nIndexed as `scopedDomain` (not `domain`) to keep this binding\nfilter distinct from the standard Domains aspect's `domains`\ncataloging filter in unified-entity search."
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "createdAt",
            "fieldType": "DATETIME",
            "queryByDefault": false
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "doc": "When this agent was created"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "lastModifiedAt",
            "fieldType": "DATETIME",
            "queryByDefault": false
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "doc": "When this agent was last modified"
      }
    ],
    "doc": "Configuration and metadata for an AI agent.\n\nAgents can be:\n1. System (SYSTEM): bootstrapped at deployment time via YAML, not editable\n2. Native (NATIVE): created by end users through the UI or API\n3. External (EXTERNAL): cataloged on DataHub but managed externally\n\nDataHub-native configuration (tools, plugins, view, chat visibility)\nlives in the nested DataHubAgentSettings record."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "monitorSuiteInfo",
      "schemaVersion": 3
    },
    "name": "MonitorSuiteInfo",
    "namespace": "com.linkedin.pegasus2avro.monitor",
    "fields": [
      {
        "Searchable": {},
        "type": {
          "type": "enum",
          "symbolDocs": {
            "DATA_SCHEMA": "A monitor responsible for evaluating schema changes.",
            "FRESHNESS": "A monitor responsible for evaluating freshness anomalies.",
            "VOLUME": "A monitor responsible for evaluating volume anomalies."
          },
          "name": "MonitorSuiteType",
          "namespace": "com.linkedin.pegasus2avro.monitor",
          "symbols": [
            "FRESHNESS",
            "VOLUME",
            "DATA_SCHEMA"
          ]
        },
        "name": "type",
        "doc": "Type of monitor suite."
      },
      {
        "type": {
          "type": "record",
          "name": "MonitorSuiteAssignmentSpec",
          "namespace": "com.linkedin.pegasus2avro.monitor",
          "fields": [
            {
              "type": "com.linkedin.pegasus2avro.metadata.query.filter.Filter",
              "name": "filter",
              "doc": "The filter applied when assigning this form to entities. Entities that match this filter\nwill have this form applied to them. Right now this filter only supports filtering by\nplatform, entity type, container, term, tag, domain, and urns through the UI."
            },
            {
              "type": [
                "null",
                "string"
              ],
              "name": "json",
              "default": null,
              "doc": "The stringified json representing the logical predicate built in the UI to select assets.\nThis predicate is turned into orFilters to send through graphql since graphql doesn't support\narbitrary nesting. This string is used to restore the UI for this logical predicate."
            }
          ],
          "doc": "Information about entities that should be monitored by a monitor suite.\n\n@deprecated DO NOT USE. MonitorSuite was never implemented \u2014 no service layer, no hooks, no UI,\nno customer data exists. Safe to remove entirely in a future release."
        },
        "name": "assignment",
        "doc": "The assignment rule to define the entities that are monitored by this group."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "MonitorSuiteAssertionSettings",
            "namespace": "com.linkedin.pegasus2avro.monitor",
            "fields": [
              {
                "type": [
                  "null",
                  {
                    "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": "schedule",
                "default": null,
                "doc": "The schedule for the assertion monitors within this group.\nNot applicable for freshness anomaly monitors."
              },
              {
                "type": "long",
                "name": "trainingDataLookbackWindowDays",
                "default": 60,
                "doc": "The lookback window configuration for retrieving training data points.\nDefines how far back in time to look when gathering data for training.\nDefaults to 60 days if not specified."
              },
              {
                "type": [
                  "null",
                  {
                    "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": "action",
                "default": null,
                "doc": "The action to take when an assertion evaluates.\nI.e., raise an incident if the assertion fails."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": {
                      "type": "record",
                      "name": "AssertionExclusionWindow",
                      "namespace": "com.linkedin.pegasus2avro.assertion",
                      "fields": [
                        {
                          "type": {
                            "type": "enum",
                            "symbolDocs": {
                              "FIXED_RANGE": "One-off time range to exclude",
                              "HOLIDAY": "Specific holiday to exclude",
                              "WEEKLY": "Recurring time range to exclude each week"
                            },
                            "name": "AssertionExclusionWindowType",
                            "namespace": "com.linkedin.pegasus2avro.assertion",
                            "symbols": [
                              "FIXED_RANGE",
                              "WEEKLY",
                              "HOLIDAY"
                            ]
                          },
                          "name": "type",
                          "doc": "The type of exclusion window."
                        },
                        {
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "displayName",
                          "default": null,
                          "doc": "Display name for this exclusion window"
                        },
                        {
                          "type": [
                            "null",
                            {
                              "type": "record",
                              "name": "AbsoluteTimeWindow",
                              "namespace": "com.linkedin.pegasus2avro.timeseries",
                              "fields": [
                                {
                                  "type": "long",
                                  "name": "startTimeMillis",
                                  "doc": "Start time as epoch at UTC."
                                },
                                {
                                  "type": "long",
                                  "name": "endTimeMillis",
                                  "doc": "End time as epoch at UTC."
                                }
                              ]
                            }
                          ],
                          "name": "fixedRange",
                          "default": null,
                          "doc": "Date window for one-off exclusion range\nOnly used when type is FIXED_RANGE"
                        },
                        {
                          "type": [
                            "null",
                            {
                              "type": "record",
                              "name": "WeeklyWindow",
                              "namespace": "com.linkedin.pegasus2avro.timeseries",
                              "fields": [
                                {
                                  "type": {
                                    "type": "array",
                                    "items": {
                                      "type": "enum",
                                      "name": "DayOfWeek",
                                      "namespace": "com.linkedin.pegasus2avro.timeseries",
                                      "symbols": [
                                        "MONDAY",
                                        "TUESDAY",
                                        "WEDNESDAY",
                                        "THURSDAY",
                                        "FRIDAY",
                                        "SATURDAY",
                                        "SUNDAY"
                                      ]
                                    }
                                  },
                                  "name": "daysOfWeek",
                                  "doc": "Days of the week to include in the window.\nIf not specified, all days are included."
                                },
                                {
                                  "type": [
                                    "null",
                                    "string"
                                  ],
                                  "name": "startTime",
                                  "default": null,
                                  "doc": "Start time for the window on each specified day.\nFormat: \"HH:MM\" in 24-hour format (e.g., \"09:00\" for 9am, \"17:30\" for 5:30pm).\nIf not specified, defaults to start of day (\"00:00\")."
                                },
                                {
                                  "type": [
                                    "null",
                                    "string"
                                  ],
                                  "name": "endTime",
                                  "default": null,
                                  "doc": "End time for the window on each specified day.\nFormat: \"HH:MM\" in 24-hour format (e.g., \"17:00\" for 5pm, \"23:59\" for end of day).\nIf not specified, defaults to end of day (\"23:59\")."
                                },
                                {
                                  "type": [
                                    "null",
                                    "string"
                                  ],
                                  "name": "timezone",
                                  "default": null,
                                  "doc": "Time zone to interpret start and end times in.\nUses standard time zone identifiers (e.g., \"America/Los_Angeles\", \"UTC\").\nIf not specified, defaults to UTC."
                                }
                              ],
                              "doc": "Represents a recurring time window that repeats weekly.\nUsed to define exclusion periods for model training based on day of week and time of day."
                            }
                          ],
                          "name": "weekly",
                          "default": null,
                          "doc": "Window of time each week to exclude."
                        },
                        {
                          "type": [
                            "null",
                            {
                              "type": "record",
                              "name": "HolidayWindow",
                              "namespace": "com.linkedin.pegasus2avro.timeseries",
                              "fields": [
                                {
                                  "type": "string",
                                  "name": "name",
                                  "doc": "The name of the holiday."
                                },
                                {
                                  "type": [
                                    "null",
                                    "string"
                                  ],
                                  "name": "region",
                                  "default": null,
                                  "doc": "The region of the holiday.\nExample: 'US'"
                                },
                                {
                                  "type": [
                                    "null",
                                    "string"
                                  ],
                                  "name": "timezone",
                                  "default": null,
                                  "doc": "The timezone of the holiday.\nExample: 'America/New_York'"
                                }
                              ]
                            }
                          ],
                          "name": "holiday",
                          "default": null,
                          "doc": "The holiday to exclude\nOnly used when type is HOLIDAY"
                        }
                      ],
                      "doc": "Information about an assertion exclusion window.\nThis is used to exclude specific time periods from assertion evaluation or training.\nFor example, excluding holidays, weekends, or known anomalous periods.\nSupports various recurrence patterns: one-off exclusions, or recurring exclusions\n(yearly, monthly, weekly, daily, or specific holidays)."
                    }
                  }
                ],
                "name": "exclusionWindows",
                "default": null,
                "doc": "The exclusion windows for the assertion monitors within this group."
              }
            ],
            "doc": "Settings for assertion monitors within a monitor suite.\n\n@deprecated DO NOT USE. MonitorSuite was never implemented \u2014 no service layer, no hooks, no UI,\nno customer data exists. Safe to remove entirely in a future release."
          }
        ],
        "name": "assertionSettings",
        "default": null,
        "doc": "Settings for assertion monitors within this group."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "MonitorSuiteNotificationSettings",
            "namespace": "com.linkedin.pegasus2avro.monitor",
            "fields": [
              {
                "type": {
                  "type": "array",
                  "items": {
                    "type": "record",
                    "name": "EntityChangeDetails",
                    "namespace": "com.linkedin.pegasus2avro.subscription",
                    "fields": [
                      {
                        "type": {
                          "type": "enum",
                          "symbolDocs": {
                            "ASSERTION_PASSED": "Assertion run event created with specified states.",
                            "DEPRECATED": "Deprecation status changes.",
                            "DOCUMENTATION_CHANGE": "Documentation change.",
                            "GLOSSARY_TERM_ADDED": "Glossary term changes. Added, removed or proposed.",
                            "INCIDENT_RAISED": "Incident status changes.",
                            "INGESTION_SUCCEEDED": "Ingestion status changes.",
                            "OPERATION_COLUMN_ADDED": "Schema changes.",
                            "OPERATION_ROWS_INSERTED": "Operational metadata changes.",
                            "OWNER_ADDED": "Ownership changes. Added or removed.",
                            "TAG_ADDED": "Tag changes. Added, removed or proposed.",
                            "TASK_DECISION_REQUESTED": "Agent task decision requested (human input needed).",
                            "TASK_RUN_SUCCEEDED": "Agent task run status changes.",
                            "TEST_PASSED": "Test status changes."
                          },
                          "name": "EntityChangeType",
                          "namespace": "com.linkedin.pegasus2avro.subscription",
                          "symbols": [
                            "OPERATION_COLUMN_ADDED",
                            "OPERATION_COLUMN_REMOVED",
                            "OPERATION_COLUMN_MODIFIED",
                            "OPERATION_ROWS_INSERTED",
                            "OPERATION_ROWS_UPDATED",
                            "OPERATION_ROWS_REMOVED",
                            "ASSERTION_PASSED",
                            "ASSERTION_FAILED",
                            "ASSERTION_ERROR",
                            "INCIDENT_RAISED",
                            "INCIDENT_RESOLVED",
                            "TEST_PASSED",
                            "TEST_FAILED",
                            "DEPRECATED",
                            "UNDEPRECATED",
                            "INGESTION_SUCCEEDED",
                            "INGESTION_FAILED",
                            "DOCUMENTATION_CHANGE",
                            "OWNER_ADDED",
                            "OWNER_REMOVED",
                            "GLOSSARY_TERM_ADDED",
                            "GLOSSARY_TERM_REMOVED",
                            "GLOSSARY_TERM_PROPOSED",
                            "TAG_ADDED",
                            "TAG_REMOVED",
                            "TAG_PROPOSED",
                            "TASK_RUN_SUCCEEDED",
                            "TASK_RUN_FAILED",
                            "TASK_DECISION_REQUESTED"
                          ],
                          "doc": "Enum to define change types that can trigger a notification for a subscription."
                        },
                        "name": "entityChangeType",
                        "doc": "Change type that triggers a notification for the subscription."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "EntityChangeDetailsFilter",
                            "namespace": "com.linkedin.pegasus2avro.subscription",
                            "fields": [
                              {
                                "Urn": "Urn",
                                "urn_is_array": true,
                                "type": [
                                  "null",
                                  {
                                    "type": "array",
                                    "items": "string"
                                  }
                                ],
                                "name": "includeAssertions",
                                "default": null,
                                "doc": "A list of assertions to inclusively filter when generating notifications.\nUsed for EntityChangeType values of ASSERTION_PASSED, ASSERTION_FAILED, ASSERTION_ERROR.\nEffectively allows for 'assertion level subscriptions'"
                              }
                            ],
                            "doc": "Details for filtering notifications relating to an EntityChangeType. Used by Subscriptions to determine how to\nfilter out change types when triggering a notification."
                          }
                        ],
                        "name": "filter",
                        "default": null,
                        "doc": "Optional filter that can be applied to exclude or include specific entity change events"
                      }
                    ],
                    "doc": "Details involving an EntityChangeType. Used by Subscriptions to determine which\nchange types should trigger a notification."
                  }
                },
                "name": "entityChangeTypes",
                "doc": "The change types that trigger a notification for the monitor suite.\nNOTE: only use Assertion and Incident change types for monitor suites."
              },
              {
                "type": {
                  "type": "record",
                  "name": "SubscriptionNotificationConfig",
                  "namespace": "com.linkedin.pegasus2avro.subscription",
                  "fields": [
                    {
                      "type": [
                        "null",
                        "com.linkedin.pegasus2avro.event.notification.settings.NotificationSettings"
                      ],
                      "name": "notificationSettings",
                      "default": null,
                      "doc": "Notification settings for the subscription."
                    }
                  ]
                },
                "name": "notificationConfig",
                "doc": "The notification config for the monitor suite."
              }
            ],
            "doc": "Settings for notifications from monitors within a monitor suite.\n\n@deprecated DO NOT USE. MonitorSuite was never implemented \u2014 no service layer, no hooks, no UI,\nno customer data exists. Safe to remove entirely in a future release."
          }
        ],
        "name": "notificationSettings",
        "default": null,
        "doc": "Settings for notifications from monitors within this group."
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "createdTime",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "created",
        "default": null,
        "doc": "Created Audit stamp"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "updatedTime",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "updated",
        "default": null,
        "doc": "Updated Audit stamp"
      }
    ],
    "doc": "Information about an asset monitor.\n\n@deprecated DO NOT USE. This entity was never implemented \u2014 no service layer, no hooks, no UI,\nno customer data exists. It is a schema-only placeholder that was never wired into the system.\nUse {@link com.linkedin.pegasus2avro.assertion.rule.AssertionAssignmentRuleInfo} instead.\nSafe to remove entirely in a future release."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "monitorInfo",
      "schemaVersion": 5
    },
    "name": "MonitorInfo",
    "namespace": "com.linkedin.pegasus2avro.monitor",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.url.Url",
          "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "externalUrl",
        "default": null,
        "doc": "URL where the reference exist"
      },
      {
        "Searchable": {},
        "type": {
          "type": "enum",
          "symbolDocs": {
            "ASSERTION": "A monitor responsible for evaluating Assertions.",
            "FRESHNESS": "A monitor responsible for evaluating system freshness monitors - This is not used"
          },
          "name": "MonitorType",
          "namespace": "com.linkedin.pegasus2avro.monitor",
          "symbols": [
            "ASSERTION",
            "FRESHNESS"
          ]
        },
        "name": "type",
        "doc": "Type of monitor."
      },
      {
        "type": {
          "type": "record",
          "name": "MonitorStatus",
          "namespace": "com.linkedin.pegasus2avro.monitor",
          "fields": [
            {
              "Searchable": {},
              "type": {
                "type": "enum",
                "symbolDocs": {
                  "ACTIVE": "The monitor should be actively operating.",
                  "INACTIVE": "The monitor is not actively operating.",
                  "PASSIVE": "The monitor is running in passive mode.\nFor assertion monitors, this means that assertions will be run in dry mode.\nThis is for internal troubleshooting purposes."
                },
                "name": "MonitorMode",
                "namespace": "com.linkedin.pegasus2avro.monitor",
                "symbols": [
                  "ACTIVE",
                  "INACTIVE",
                  "PASSIVE"
                ]
              },
              "name": "mode",
              "doc": "The current operation mode of the monitor"
            },
            {
              "Searchable": {},
              "deprecated": "Monitor state is not reliable, as the assertion can be in both training and evaluation states at the same time. Use MonitorError plus latest AssertionRunEvent for health.",
              "type": [
                "null",
                {
                  "type": "enum",
                  "symbolDocs": {
                    "ERROR": "The monitor is in the error stage.",
                    "EVALUATION": "The monitor is in the evaluation stage.",
                    "TRAINING": "The monitor is in the training stage."
                  },
                  "deprecatedSymbols": {
                    "ERROR": "Use the error field to determine error state."
                  },
                  "name": "MonitorState",
                  "namespace": "com.linkedin.pegasus2avro.monitor",
                  "symbols": [
                    "TRAINING",
                    "EVALUATION",
                    "ERROR"
                  ]
                }
              ],
              "name": "state",
              "default": null,
              "doc": "The phase the monitor is in"
            },
            {
              "type": [
                "null",
                {
                  "type": "record",
                  "name": "MonitorError",
                  "namespace": "com.linkedin.pegasus2avro.monitor",
                  "fields": [
                    {
                      "Searchable": {},
                      "type": {
                        "type": "enum",
                        "symbolDocs": {
                          "INPUT_DATA_INSUFFICIENT": "Input data could not be retrieved or is incomplete.",
                          "INPUT_DATA_INVALID": "Input data is invalid or missing required fields.",
                          "INVALID_PARAMETERS": "Invalid training configuration or parameters.",
                          "MODEL_CREATION_FAILED": "Model creation failed before training.",
                          "MODEL_EVALUATION_FAILED": "Model evaluation failed.",
                          "MODEL_TRAINING_FAILED": "Model training failed.",
                          "PERSISTENCE_FAILED": "Failed to persist training outputs or related metadata.",
                          "PREDICTION_FORMAT_ERROR": "Prediction is not in the expected format (ex. missing fields).",
                          "PREDICTION_NOT_CONFIDENT": "Training succeeded but model quality is below threshold.",
                          "TRAINING_DATA_INSUFFICIENT": "Insufficient data to train or evaluate model quality.",
                          "UNKNOWN": "An unknown error occurred during training."
                        },
                        "name": "MonitorErrorType",
                        "namespace": "com.linkedin.pegasus2avro.monitor",
                        "symbols": [
                          "TRAINING_DATA_INSUFFICIENT",
                          "INPUT_DATA_INVALID",
                          "INPUT_DATA_INSUFFICIENT",
                          "INVALID_PARAMETERS",
                          "MODEL_CREATION_FAILED",
                          "MODEL_TRAINING_FAILED",
                          "MODEL_EVALUATION_FAILED",
                          "PREDICTION_NOT_CONFIDENT",
                          "PREDICTION_FORMAT_ERROR",
                          "PERSISTENCE_FAILED",
                          "UNKNOWN"
                        ]
                      },
                      "name": "type",
                      "doc": "The error for the monitor"
                    },
                    {
                      "type": [
                        "null",
                        "string"
                      ],
                      "name": "message",
                      "default": null,
                      "doc": "Optional custom message for the error"
                    },
                    {
                      "type": [
                        "null",
                        {
                          "type": "map",
                          "values": "string"
                        }
                      ],
                      "name": "properties",
                      "default": null,
                      "doc": "Additional metadata depending on the type of error"
                    }
                  ],
                  "doc": "Error details for the monitor"
                }
              ],
              "name": "error",
              "default": null,
              "doc": "The last time the monitor was started"
            },
            {
              "Searchable": {},
              "type": [
                "null",
                "long"
              ],
              "name": "reviewedAt",
              "default": null,
              "doc": "The last time the monitor was started"
            }
          ],
          "doc": "The status of an asset monitor"
        },
        "name": "status",
        "doc": "Information about the status of a monitor."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "AssertionMonitor",
            "namespace": "com.linkedin.pegasus2avro.monitor",
            "fields": [
              {
                "Searchable": {
                  "/*/assertion": {
                    "fieldName": "assertionUrn",
                    "fieldType": "URN"
                  }
                },
                "type": {
                  "type": "array",
                  "items": {
                    "type": "record",
                    "name": "AssertionEvaluationSpec",
                    "namespace": "com.linkedin.pegasus2avro.monitor",
                    "fields": [
                      {
                        "Relationship": {
                          "entityTypes": [
                            "assertion"
                          ],
                          "name": "Evaluates"
                        },
                        "UrnValidation": {
                          "entityTypes": [
                            "assertion"
                          ],
                          "exist": false,
                          "strict": true
                        },
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "entityTypes": [
                          "assertion"
                        ],
                        "type": "string",
                        "name": "assertion",
                        "doc": "The urn of the assertion itself"
                      },
                      {
                        "type": {
                          "type": "record",
                          "name": "CronSchedule",
                          "namespace": "com.linkedin.pegasus2avro.common",
                          "fields": [
                            {
                              "type": "string",
                              "name": "cron",
                              "doc": "A cron-formatted execution interval, as a cron string, e.g. 1 * * * *"
                            },
                            {
                              "type": "string",
                              "name": "timezone",
                              "doc": "Timezone in which the cron interval applies, e.g. America/Los Angeles"
                            }
                          ],
                          "doc": "Attributes defining a CRON-formatted schedule."
                        },
                        "name": "schedule",
                        "doc": "The evaluation schedule for the assertion"
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "AssertionEvaluationParameters",
                            "namespace": "com.linkedin.pegasus2avro.monitor",
                            "fields": [
                              {
                                "type": {
                                  "type": "enum",
                                  "symbolDocs": {
                                    "DATASET_FIELD": "Parameters required to evaluate a Dataset Field (Column) Assertion",
                                    "DATASET_FRESHNESS": "Parameters required to evaluate a Dataset Freshness Assertion",
                                    "DATASET_SCHEMA": "Parameters required to evaluate a Dataset Schema Assertion",
                                    "DATASET_SQL": "Parameters required to evaluate a Dataset SQL Assertion",
                                    "DATASET_VOLUME": "Parameters required to evaluate a Dataset Volume Assertion"
                                  },
                                  "name": "AssertionEvaluationParametersType",
                                  "namespace": "com.linkedin.pegasus2avro.monitor",
                                  "symbols": [
                                    "DATASET_FRESHNESS",
                                    "DATASET_VOLUME",
                                    "DATASET_SQL",
                                    "DATASET_FIELD",
                                    "DATASET_SCHEMA"
                                  ]
                                },
                                "name": "type",
                                "doc": "The type of parameters"
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "record",
                                    "name": "DatasetFreshnessAssertionParameters",
                                    "namespace": "com.linkedin.pegasus2avro.monitor",
                                    "fields": [
                                      {
                                        "type": {
                                          "type": "enum",
                                          "symbolDocs": {
                                            "AUDIT_LOG": "Determine that a change has occurred by inspecting an audit log API",
                                            "DATAHUB_OPERATION": "Determine whether the table has changed using an Operation aspect",
                                            "FIELD_VALUE": "Determine that a change has occurred by inspecting a particular field's value.",
                                            "FILE_METADATA": "Determine that a change has occurred by inspecting underlying file system.",
                                            "INFORMATION_SCHEMA": "Determine that a change has occurred by inspecting an information schema table, or other system metadata table.",
                                            "PLATFORM_API": "Determine that a change has occurred by querying the platform's metadata API directly."
                                          },
                                          "name": "DatasetFreshnessSourceType",
                                          "namespace": "com.linkedin.pegasus2avro.monitor",
                                          "symbols": [
                                            "FIELD_VALUE",
                                            "INFORMATION_SCHEMA",
                                            "AUDIT_LOG",
                                            "FILE_METADATA",
                                            "DATAHUB_OPERATION",
                                            "PLATFORM_API"
                                          ]
                                        },
                                        "name": "sourceType",
                                        "doc": "The source of the change operation."
                                      },
                                      {
                                        "type": [
                                          "null",
                                          "com.linkedin.pegasus2avro.assertion.FreshnessFieldSpec"
                                        ],
                                        "name": "field",
                                        "default": null,
                                        "doc": "Information about the field to use. Present when sourceType is FIELD_VALUE"
                                      },
                                      {
                                        "type": [
                                          "null",
                                          {
                                            "type": "record",
                                            "name": "AuditLogSpec",
                                            "namespace": "com.linkedin.pegasus2avro.monitor",
                                            "fields": [
                                              {
                                                "type": [
                                                  "null",
                                                  {
                                                    "type": "array",
                                                    "items": "string"
                                                  }
                                                ],
                                                "name": "operationTypes",
                                                "default": null,
                                                "doc": "The list of operation types that should be monitored. If not provided, a default set will be used."
                                              },
                                              {
                                                "type": [
                                                  "null",
                                                  "string"
                                                ],
                                                "name": "userName",
                                                "default": null,
                                                "doc": "Optional: The user name associated with the operation."
                                              }
                                            ],
                                            "doc": "Information about the Audit Log operation to use in evaluating an assertion."
                                          }
                                        ],
                                        "name": "auditLog",
                                        "default": null,
                                        "doc": "Information about the audit log operation to use. Present when sourceType is AUDIT_LOG"
                                      },
                                      {
                                        "type": [
                                          "null",
                                          {
                                            "type": "record",
                                            "name": "DataHubOperationSpec",
                                            "namespace": "com.linkedin.pegasus2avro.monitor",
                                            "fields": [
                                              {
                                                "type": [
                                                  "null",
                                                  {
                                                    "type": "array",
                                                    "items": "string"
                                                  }
                                                ],
                                                "name": "operationTypes",
                                                "default": null,
                                                "doc": "The list of operation types that should be monitored. If not provided, a default set will be used."
                                              },
                                              {
                                                "type": [
                                                  "null",
                                                  {
                                                    "type": "array",
                                                    "items": "string"
                                                  }
                                                ],
                                                "name": "customOperationTypes",
                                                "default": null,
                                                "doc": "The list of custom operation types that should be monitored. If not provided, no custom operation types will be used."
                                              }
                                            ],
                                            "doc": "Information about the DataHub Operation aspect used to evaluate a freshness assertion"
                                          }
                                        ],
                                        "name": "dataHubOperation",
                                        "default": null,
                                        "doc": "Information about the DataHub operation. Present when sourceType is DATAHUB_OPERATION"
                                      }
                                    ],
                                    "doc": "Information about the parameters required to evaluate an assertion"
                                  }
                                ],
                                "name": "datasetFreshnessParameters",
                                "default": null,
                                "doc": "Parameters required to evaluate a Dataset Freshness Assertion. Present if type is DATASET_FRESHNESS."
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "record",
                                    "name": "DatasetVolumeAssertionParameters",
                                    "namespace": "com.linkedin.pegasus2avro.monitor",
                                    "fields": [
                                      {
                                        "type": {
                                          "type": "enum",
                                          "symbolDocs": {
                                            "DATAHUB_DATASET_PROFILE": "Determine the row count using the DataHub Dataset Profile aspect",
                                            "INFORMATION_SCHEMA": "Determine the row count using an information schema query - not applicable to all platforms.",
                                            "PLATFORM_API": "Determine the row count using the platform's metadata API directly.",
                                            "QUERY": "Determine the row count using a COUNT(*) query",
                                            "TABLE_STATISTICS": "Determine the row count using pre-computed table statistics (e.g. ANALYZE TABLE).\nSupported on platforms that maintain table-level statistics in their catalog."
                                          },
                                          "name": "DatasetVolumeSourceType",
                                          "namespace": "com.linkedin.pegasus2avro.monitor",
                                          "symbols": [
                                            "INFORMATION_SCHEMA",
                                            "QUERY",
                                            "TABLE_STATISTICS",
                                            "DATAHUB_DATASET_PROFILE",
                                            "PLATFORM_API"
                                          ]
                                        },
                                        "name": "sourceType",
                                        "doc": "The source of the change operation."
                                      },
                                      {
                                        "type": [
                                          "null",
                                          {
                                            "type": "record",
                                            "name": "AssertionTimeBucketingStrategy",
                                            "namespace": "com.linkedin.pegasus2avro.monitor",
                                            "fields": [
                                              {
                                                "type": "string",
                                                "name": "timestampFieldPath",
                                                "doc": "Path to the timestamp field used for bucketing."
                                              },
                                              {
                                                "type": "com.linkedin.pegasus2avro.timeseries.TimeWindowSize",
                                                "name": "bucketInterval",
                                                "doc": "Interval for time buckets (e.g. 1 DAY, 2 WEEKs)."
                                              },
                                              {
                                                "type": [
                                                  "null",
                                                  "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
                                                ],
                                                "name": "lateArrivalGracePeriod",
                                                "default": null,
                                                "doc": "Grace period after bucket end before considering the bucket complete.\nAllows for late-arriving data; evaluation runs only after bucket_end + grace period."
                                              },
                                              {
                                                "type": "string",
                                                "name": "timezone",
                                                "doc": "IANA timezone (e.g. \"America/Los_Angeles\") for bucket boundaries."
                                              }
                                            ],
                                            "doc": "Time bucketing strategy for assertion evaluation.\nDefines how to partition data into time buckets for evaluation."
                                          }
                                        ],
                                        "name": "timeBucketingStrategy",
                                        "default": null,
                                        "doc": "Optional time bucketing strategy for evaluating the assertion over time windows."
                                      }
                                    ],
                                    "doc": "Information about the parameters required to evaluate a volume assertion"
                                  }
                                ],
                                "name": "datasetVolumeParameters",
                                "default": null,
                                "doc": "Parameters required to evaluate a Dataset Volume Assertion. Present if type is DATASET_VOLUME."
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "record",
                                    "name": "DatasetFieldAssertionParameters",
                                    "namespace": "com.linkedin.pegasus2avro.monitor",
                                    "fields": [
                                      {
                                        "type": {
                                          "type": "enum",
                                          "symbolDocs": {
                                            "ALL_ROWS_QUERY": "Issue a query to the table to obtain the metric or values across\nall rows.",
                                            "CHANGED_ROWS_QUERY": "Issue a query to the table to obtain the metric values across\nonly the rows which have changed since the previous evaluation.",
                                            "DATAHUB_DATASET_PROFILE": "Determine the metric value using the DataHub dataset profile. Only applicable\nfor Column Metric assertions, not Column Value assertions.",
                                            "TABLE_STATISTICS": "Determine the metric value using pre-computed table/column statistics (e.g. ANALYZE TABLE).\nSupported for a subset of column metrics on platforms that maintain catalog-level statistics."
                                          },
                                          "name": "DatasetFieldAssertionSourceType",
                                          "namespace": "com.linkedin.pegasus2avro.monitor",
                                          "symbols": [
                                            "ALL_ROWS_QUERY",
                                            "CHANGED_ROWS_QUERY",
                                            "TABLE_STATISTICS",
                                            "DATAHUB_DATASET_PROFILE"
                                          ]
                                        },
                                        "name": "sourceType",
                                        "doc": "The source of the information used to evaluate\na column values or metric assertion"
                                      },
                                      {
                                        "type": [
                                          "null",
                                          "com.linkedin.pegasus2avro.assertion.FreshnessFieldSpec"
                                        ],
                                        "name": "changedRowsField",
                                        "default": null,
                                        "doc": "A field that can be used to filter for the fresh rows since the previous assertion\nevaluation. This should be present when sourceType = CHANGED_ROWS_QUERY.\n\nIf not provided, or the metricSourceType is not QUERY, then the assertion will be evaluated against the\nentire dataset."
                                      },
                                      {
                                        "type": [
                                          "null",
                                          "com.linkedin.pegasus2avro.monitor.AssertionTimeBucketingStrategy"
                                        ],
                                        "name": "timeBucketingStrategy",
                                        "default": null,
                                        "doc": "Optional time bucketing strategy for evaluating the assertion over time windows."
                                      }
                                    ],
                                    "doc": "Information about the parameters required to evaluate a field / column assertion"
                                  }
                                ],
                                "name": "datasetFieldParameters",
                                "default": null,
                                "doc": "Parameters required to evaluate a Dataset Field (Column) Assertion. Present if type is DATASET_FIELD."
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "record",
                                    "name": "DatasetSchemaAssertionParameters",
                                    "namespace": "com.linkedin.pegasus2avro.monitor",
                                    "fields": [
                                      {
                                        "type": {
                                          "type": "enum",
                                          "symbolDocs": {
                                            "DATAHUB_SCHEMA": "Validate the expected columns against the DataHub Schema Metadata aspect (the only option currently)"
                                          },
                                          "name": "DatasetSchemaSourceType",
                                          "namespace": "com.linkedin.pegasus2avro.monitor",
                                          "symbols": [
                                            "DATAHUB_SCHEMA"
                                          ]
                                        },
                                        "name": "sourceType",
                                        "doc": "The source of the actual schema."
                                      }
                                    ],
                                    "doc": "Information about the parameters required to evaluate a schema assertion."
                                  }
                                ],
                                "name": "datasetSchemaParameters",
                                "default": null,
                                "doc": "Parameters required to evaluate a Dataset Schema Assertion. Present if type is DATASET_SCHEMA."
                              }
                            ],
                            "doc": "Information about the parameters required to evaluate an assertion"
                          }
                        ],
                        "name": "parameters",
                        "default": null,
                        "doc": "Parameters required to evaluate the assertion"
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "AssertionEvaluationContext",
                            "namespace": "com.linkedin.pegasus2avro.monitor",
                            "fields": [
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "array",
                                    "items": {
                                      "type": "record",
                                      "name": "EmbeddedAssertion",
                                      "namespace": "com.linkedin.pegasus2avro.monitor",
                                      "fields": [
                                        {
                                          "Relationship": {
                                            "/datasetAssertion/dataset": null,
                                            "/datasetAssertion/fields/*": null,
                                            "/fieldAssertion/entity": null,
                                            "/freshnessAssertion/entity": null,
                                            "/schemaAssertion/entity": null,
                                            "/sqlAssertion/entity": null,
                                            "/volumeAssertion/entity": null
                                          },
                                          "Searchable": {
                                            "/customProperties/*": null,
                                            "/datasetAssertion/aggregation": null,
                                            "/datasetAssertion/dataset": null,
                                            "/datasetAssertion/fields/*": null,
                                            "/datasetAssertion/scope": null,
                                            "/externalUrl": null,
                                            "/fieldAssertion/entity": null,
                                            "/fieldAssertion/fieldPath": null,
                                            "/fieldAssertion/type": null,
                                            "/freshnessAssertion/entity": null,
                                            "/freshnessAssertion/schedule/type": null,
                                            "/freshnessAssertion/type": null,
                                            "/schemaAssertion/entity": null,
                                            "/source/type": null,
                                            "/sqlAssertion/entity": null,
                                            "/sqlAssertion/type": null,
                                            "/type": null,
                                            "/volumeAssertion/entity": null,
                                            "/volumeAssertion/type": null
                                          },
                                          "type": [
                                            "null",
                                            {
                                              "type": "record",
                                              "Aspect": {
                                                "name": "assertionInfo",
                                                "schemaVersion": 4
                                              },
                                              "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": {
                                                    "addToFilters": true,
                                                    "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_": "Catch-all value for assertions whose check can't be expressed with one of the\nstructured operators above. Primarily used by external-system importers (e.g. dbt\ntests, Great Expectations expectations) when bringing in a check whose semantics\ndon't map cleanly onto the standard set.\n\nWhen set, the caller is expected to populate the corresponding \"native\" payload\non the assertion so it still carries enough information to be displayed and,\nwhere supported, evaluated \u2014 for example DatasetAssertionInfo.nativeType /\nnativeParameters / logic, or the free-form fields on CustomAssertionInfo.\n\nAssertion shapes that don't have such an escape hatch (e.g. FieldValuesAssertion,\nFieldMetricAssertion) cannot meaningfully express a native check: _NATIVE_ there\nproduces an unparameterised assertion that can't be evaluated and has no rendered\ndescription. Pick a structured operator from the list above instead."
                                                            },
                                                            "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.",
                                                                              "SQL": "A SQL expression",
                                                                              "STRING": "A string value",
                                                                              "UNKNOWN": "A value of unknown type"
                                                                            },
                                                                            "name": "AssertionStdParameterType",
                                                                            "namespace": "com.linkedin.pegasus2avro.assertion",
                                                                            "symbols": [
                                                                              "STRING",
                                                                              "NUMBER",
                                                                              "LIST",
                                                                              "SET",
                                                                              "SQL",
                                                                              "UNKNOWN"
                                                                            ]
                                                                          },
                                                                          "name": "type",
                                                                          "doc": "The type of the parameter"
                                                                        }
                                                                      ],
                                                                      "doc": "Single parameter for AssertionStdOperators."
                                                                    }
                                                                  ],
                                                                  "name": "value",
                                                                  "default": null,
                                                                  "doc": "The value parameter of an assertion"
                                                                },
                                                                {
                                                                  "type": [
                                                                    "null",
                                                                    "com.linkedin.pegasus2avro.assertion.AssertionStdParameter"
                                                                  ],
                                                                  "name": "maxValue",
                                                                  "default": null,
                                                                  "doc": "The maxValue parameter of an assertion"
                                                                },
                                                                {
                                                                  "type": [
                                                                    "null",
                                                                    "com.linkedin.pegasus2avro.assertion.AssertionStdParameter"
                                                                  ],
                                                                  "name": "minValue",
                                                                  "default": null,
                                                                  "doc": "The minValue parameter of an assertion"
                                                                }
                                                              ],
                                                              "doc": "Parameters for AssertionStdOperators."
                                                            }
                                                          ],
                                                          "name": "parameters",
                                                          "default": null,
                                                          "doc": "Standard parameters required for the assertion. e.g. min_value, max_value, value, columns"
                                                        },
                                                        {
                                                          "type": [
                                                            "null",
                                                            "string"
                                                          ],
                                                          "name": "nativeType",
                                                          "default": null,
                                                          "doc": "Native assertion type"
                                                        },
                                                        {
                                                          "type": [
                                                            "null",
                                                            {
                                                              "type": "map",
                                                              "values": "string"
                                                            }
                                                          ],
                                                          "name": "nativeParameters",
                                                          "default": null,
                                                          "doc": "Native parameters required for the assertion."
                                                        },
                                                        {
                                                          "type": [
                                                            "null",
                                                            "string"
                                                          ],
                                                          "name": "logic",
                                                          "default": null
                                                        }
                                                      ],
                                                      "doc": "Attributes that are applicable to single-Dataset Assertions"
                                                    }
                                                  ],
                                                  "name": "datasetAssertion",
                                                  "default": null,
                                                  "doc": "A Dataset Assertion definition. This field is populated when the type is DATASET."
                                                },
                                                {
                                                  "type": [
                                                    "null",
                                                    {
                                                      "type": "record",
                                                      "name": "FreshnessAssertionInfo",
                                                      "namespace": "com.linkedin.pegasus2avro.assertion",
                                                      "fields": [
                                                        {
                                                          "Searchable": {
                                                            "fieldName": "freshnessAssertionType",
                                                            "fieldType": "KEYWORD"
                                                          },
                                                          "type": {
                                                            "type": "enum",
                                                            "symbolDocs": {
                                                              "DATASET_CHANGE": "An Freshness based on Operations performed on a particular Dataset (insert, update, delete, etc) and sourced from an audit log, as\nopposed to based on the highest watermark in a timestamp column (e.g. a query). Only valid when entity is of type \"dataset\".",
                                                              "DATA_JOB_RUN": "An Freshness based on a successful execution of a Data Job."
                                                            },
                                                            "name": "FreshnessAssertionType",
                                                            "namespace": "com.linkedin.pegasus2avro.assertion",
                                                            "symbols": [
                                                              "DATASET_CHANGE",
                                                              "DATA_JOB_RUN"
                                                            ]
                                                          },
                                                          "name": "type",
                                                          "doc": "The type of the freshness assertion being monitored."
                                                        },
                                                        {
                                                          "Relationship": {
                                                            "entityTypes": [
                                                              "dataset",
                                                              "dataJob"
                                                            ],
                                                            "name": "Asserts"
                                                          },
                                                          "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": [
                                                            "null",
                                                            {
                                                              "type": "record",
                                                              "name": "FreshnessAssertionSchedule",
                                                              "namespace": "com.linkedin.pegasus2avro.assertion",
                                                              "fields": [
                                                                {
                                                                  "type": {
                                                                    "type": "enum",
                                                                    "symbolDocs": {
                                                                      "CRON": "A highly configurable recurring schedule which describes the times of events described\nby a CRON schedule, with the evaluation schedule assuming to be matching the cron schedule.\n\nIn a CRON schedule type, we compute the look-back window to be the time between the last scheduled event\nand the current event (evaluation time). This means that the evaluation schedule must match exactly\nthe schedule defined inside the cron schedule.\n\nFor example, a CRON schedule defined as \"0 8 * * *\" would represent a schedule of \"every day by 8am\". Assuming\nthat the assertion evaluation schedule is defined to match this, the freshness assertion would be evaluated in the following way:\n\n    1. Compute the \"last scheduled occurrence\" of the event using the CRON schedule. For example, yesterday at 8am.\n    2. Compute the bounds of a time window between the \"last scheduled occurrence\" (yesterday at 8am) until the \"current occurrence\" (today at 8am)\n    3. Verify that the target event has occurred within the CRON-interval window.\n    4. If the target event has occurred within the time window, then assertion passes.\n    5. If the target event has not occurred within the time window, then the assertion fails.",
                                                                      "FIXED_INTERVAL": "A fixed interval which is used to compute a look-back window for use when evaluating the assertion relative\nto the Evaluation Time of the Assertion.\n\nTo compute the valid look-back window, we subtract the fixed interval from the evaluation time. Then, we verify\nthat the target event has occurred within that window.\n\nFor example, a fixed interval of \"24h\" would represent a schedule of \"in the last 24 hours\".\nThe 24 hour interval is relative to the evaluation time of the assertion. For example if we schedule the assertion\nto be evaluated each hour, we'd compute the result as follows:\n\n    1. Subtract the fixed interval from the current time (Evaluation time) to compute the bounds of a fixed look-back window.\n    2. Verify that the target event has occurred within the look-back window.\n    3. If the target event has occurred within the time window, then assertion passes.\n    4. If the target event has not occurred within the time window, then the assertion fails.",
                                                                      "SINCE_THE_LAST_CHECK": "A stateful check that takes the last time this check ran to determine the look-back window.\n\nTo compute the valid look-back- window, we start at the time the monitor last evaluated this assertion,\nand we end at the point in time the check is currently running.\n\nFor example, let's say a Freshness assertion is of type SINCE_THE_LAST_CHECK, and the monitor is configured to\nrun every day at 12:00am. Let's assume this assertion was last evaluated yesterday at 12:04am. We'd compute\nthe result as follows:\n\n    1. Get the timestamp for the last run of the monitor on this assertion.\n    2. look_back_window_start_time = latest_monitor_run.timestampMillis [ie. 12:04a yesterday]\n    3. look_back_window_end_time = nowMillis [ie. 12:02a today]\n    4. If the target event has occurred within the window [ie. 12:04a yday to 12:02a today],\n       then the assertion passes.\n    5. If the target event has not occurred within the window, then the assertion fails."
                                                                    },
                                                                    "name": "FreshnessAssertionScheduleType",
                                                                    "namespace": "com.linkedin.pegasus2avro.assertion",
                                                                    "symbols": [
                                                                      "CRON",
                                                                      "FIXED_INTERVAL",
                                                                      "SINCE_THE_LAST_CHECK"
                                                                    ]
                                                                  },
                                                                  "name": "type",
                                                                  "doc": "The type of a Freshness Assertion Schedule.\n\nOnce we support data-time-relative schedules (e.g. schedules relative to time partitions),\nwe will add those schedule types here."
                                                                },
                                                                {
                                                                  "type": [
                                                                    "null",
                                                                    {
                                                                      "type": "record",
                                                                      "name": "FreshnessCronSchedule",
                                                                      "namespace": "com.linkedin.pegasus2avro.assertion",
                                                                      "fields": [
                                                                        {
                                                                          "type": "string",
                                                                          "name": "cron",
                                                                          "doc": "A cron-formatted execution interval, as a cron string, e.g. 1 * * * *"
                                                                        },
                                                                        {
                                                                          "type": "string",
                                                                          "name": "timezone",
                                                                          "doc": "Timezone in which the cron interval applies, e.g. America/Los Angeles"
                                                                        },
                                                                        {
                                                                          "type": [
                                                                            "null",
                                                                            "long"
                                                                          ],
                                                                          "name": "windowStartOffsetMs",
                                                                          "default": null,
                                                                          "doc": "An optional offset in milliseconds to SUBTRACT from the timestamp generated by the cron schedule\nto generate the lower bounds of the \"freshness window\", or the window of time in which an event must have occurred in order for the Freshness check\nto be considering passing.\n\nIf left empty, the start of the SLA window will be the _end_ of the previously evaluated Freshness window."
                                                                        }
                                                                      ],
                                                                      "doc": "Attributes defining a CRON-formatted schedule used for defining a freshness assertion."
                                                                    }
                                                                  ],
                                                                  "name": "cron",
                                                                  "default": null,
                                                                  "doc": "A cron schedule. This field is required when type is CRON."
                                                                },
                                                                {
                                                                  "type": [
                                                                    "null",
                                                                    "com.linkedin.pegasus2avro.assertion.FixedIntervalSchedule"
                                                                  ],
                                                                  "name": "fixedInterval",
                                                                  "default": null,
                                                                  "doc": "A fixed interval schedule. This field is required when type is FIXED_INTERVAL."
                                                                },
                                                                {
                                                                  "type": [
                                                                    "null",
                                                                    {
                                                                      "type": "array",
                                                                      "items": "com.linkedin.pegasus2avro.assertion.AssertionExclusionWindow"
                                                                    }
                                                                  ],
                                                                  "name": "exclusions",
                                                                  "default": null,
                                                                  "doc": "Blackout windows. Periods of time to exclude from the schedule."
                                                                }
                                                              ],
                                                              "doc": "Attributes defining a single Freshness schedule."
                                                            }
                                                          ],
                                                          "name": "schedule",
                                                          "default": null,
                                                          "doc": "Produce FAILURE Assertion Result if the asset is not updated on the cadence and within the time range described by the schedule."
                                                        },
                                                        {
                                                          "type": [
                                                            "null",
                                                            {
                                                              "type": "record",
                                                              "name": "AssertionFailureSeverityConfig",
                                                              "namespace": "com.linkedin.pegasus2avro.assertion",
                                                              "fields": [
                                                                {
                                                                  "type": {
                                                                    "type": "enum",
                                                                    "symbolDocs": {
                                                                      "HIGH": "High severity - significant deviation from expected bounds (e.g. > 1 std_dev for smart assertions).",
                                                                      "LOW": "Low severity - minor deviation from expected bounds.",
                                                                      "MEDIUM": "Medium severity - moderate deviation from expected bounds. This is the default."
                                                                    },
                                                                    "name": "AssertionResultSeverity",
                                                                    "namespace": "com.linkedin.pegasus2avro.assertion",
                                                                    "symbols": [
                                                                      "LOW",
                                                                      "MEDIUM",
                                                                      "HIGH"
                                                                    ],
                                                                    "doc": "The severity of an assertion failure, indicating how far the actual value\ndeviated from the expected range."
                                                                  },
                                                                  "name": "defaultSeverity",
                                                                  "doc": "The severity to assign when no explicit rule matches a failed assertion."
                                                                },
                                                                {
                                                                  "type": {
                                                                    "type": "array",
                                                                    "items": {
                                                                      "type": "record",
                                                                      "name": "AssertionFailureSeverityRule",
                                                                      "namespace": "com.linkedin.pegasus2avro.assertion",
                                                                      "fields": [
                                                                        {
                                                                          "type": "com.linkedin.pegasus2avro.assertion.AssertionResultSeverity",
                                                                          "name": "severity",
                                                                          "doc": "The severity to assign if this rule matches the observed failed value."
                                                                        },
                                                                        {
                                                                          "type": "com.linkedin.pegasus2avro.assertion.AssertionStdOperator",
                                                                          "name": "operator",
                                                                          "doc": "The operator to apply to the observed failed value.\n\nOnly inclusive single-threshold numeric comparison operators are valid:\nGREATER_THAN_OR_EQUAL_TO and LESS_THAN_OR_EQUAL_TO."
                                                                        },
                                                                        {
                                                                          "type": "com.linkedin.pegasus2avro.assertion.AssertionStdParameters",
                                                                          "name": "parameters",
                                                                          "doc": "The parameters to provide as input to the operator.\n\nThese values are compared against the observed value that caused the\nassertion to fail."
                                                                        }
                                                                      ],
                                                                      "doc": "A rule that maps an assertion's observed failed value to a failure severity."
                                                                    }
                                                                  },
                                                                  "name": "rules",
                                                                  "default": [],
                                                                  "doc": "Rules used to map the observed failed value to a severity.\n\nAt evaluation time, rules are sorted by severity priority and the first\nmatching rule is used."
                                                                }
                                                              ],
                                                              "doc": "User-defined configuration for assigning severities to traditional assertion failures."
                                                            }
                                                          ],
                                                          "name": "failureSeverityConfig",
                                                          "default": null,
                                                          "doc": "Optional configuration for assigning severities to failed freshness assertions."
                                                        },
                                                        {
                                                          "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 Freshness Assertion."
                                                    }
                                                  ],
                                                  "name": "freshnessAssertion",
                                                  "default": null,
                                                  "doc": "An Freshness Assertion definition. This field is populated when the type is FRESHNESS."
                                                },
                                                {
                                                  "type": [
                                                    "null",
                                                    {
                                                      "type": "record",
                                                      "name": "VolumeAssertionInfo",
                                                      "namespace": "com.linkedin.pegasus2avro.assertion",
                                                      "fields": [
                                                        {
                                                          "Searchable": {
                                                            "fieldName": "volumeAssertionType",
                                                            "fieldType": "KEYWORD"
                                                          },
                                                          "type": {
                                                            "type": "enum",
                                                            "symbolDocs": {
                                                              "INCREMENTING_SEGMENT_ROW_COUNT_CHANGE": "A volume assertion that compares the row counts in neighboring \"segments\" or \"partitions\"\nof an incrementing column.\n\nDeprecated! This assertion type is not actively supported by native volume assertion\nevaluation. Retained for backward compatibility only; use ROW_COUNT_CHANGE instead.",
                                                              "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\nDeprecated! This assertion type is not actively supported by native volume assertion\nevaluation. Retained for backward compatibility only; use ROW_COUNT_TOTAL instead.",
                                                              "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."
                                                            },
                                                            "deprecatedSymbols": {
                                                              "INCREMENTING_SEGMENT_ROW_COUNT_CHANGE": "Not actively supported by native volume assertion evaluation. Retained for backward compatibility only; use ROW_COUNT_CHANGE instead.",
                                                              "INCREMENTING_SEGMENT_ROW_COUNT_TOTAL": "Not actively supported by native volume assertion evaluation. Retained for backward compatibility only; use ROW_COUNT_TOTAL instead."
                                                            },
                                                            "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"
                                                          },
                                                          "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."
                                                                },
                                                                {
                                                                  "type": [
                                                                    "null",
                                                                    "com.linkedin.pegasus2avro.assertion.AssertionFailureSeverityConfig"
                                                                  ],
                                                                  "name": "failureSeverityConfig",
                                                                  "default": null,
                                                                  "doc": "Optional configuration for assigning severities to failed row count total assertions."
                                                                }
                                                              ],
                                                              "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."
                                                                },
                                                                {
                                                                  "type": [
                                                                    "null",
                                                                    "com.linkedin.pegasus2avro.assertion.AssertionFailureSeverityConfig"
                                                                  ],
                                                                  "name": "failureSeverityConfig",
                                                                  "default": null,
                                                                  "doc": "Optional configuration for assigning severities to failed row count change assertions."
                                                                }
                                                              ],
                                                              "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'"
                                                        },
                                                        {
                                                          "deprecated": "Not actively supported by native volume assertion evaluation. Retained for backward compatibility only; use rowCountTotal instead.",
                                                          "type": [
                                                            "null",
                                                            {
                                                              "type": "record",
                                                              "deprecated": "Not actively supported by native volume assertion evaluation. Retained for backward compatibility only; use RowCountTotal instead.",
                                                              "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."
                                                                },
                                                                {
                                                                  "type": [
                                                                    "null",
                                                                    "com.linkedin.pegasus2avro.assertion.AssertionFailureSeverityConfig"
                                                                  ],
                                                                  "name": "failureSeverityConfig",
                                                                  "default": null,
                                                                  "doc": "Optional configuration for assigning severities to failed incrementing segment row count total assertions."
                                                                }
                                                              ],
                                                              "doc": "Deprecated! Attributes defining an INCREMENTING_SEGMENT_ROW_COUNT_TOTAL volume assertion.\n\nThis assertion type is not actively supported by native volume assertion evaluation.\nRetained for backward compatibility only; use RowCountTotal instead."
                                                            }
                                                          ],
                                                          "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'\n\nDeprecated! This field is not actively supported by native volume assertion evaluation.\nRetained for backward compatibility only; use rowCountTotal instead."
                                                        },
                                                        {
                                                          "deprecated": "Not actively supported by native volume assertion evaluation. Retained for backward compatibility only; use rowCountChange instead.",
                                                          "type": [
                                                            "null",
                                                            {
                                                              "type": "record",
                                                              "deprecated": "Not actively supported by native volume assertion evaluation. Retained for backward compatibility only; use RowCountChange instead.",
                                                              "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."
                                                                },
                                                                {
                                                                  "type": [
                                                                    "null",
                                                                    "com.linkedin.pegasus2avro.assertion.AssertionFailureSeverityConfig"
                                                                  ],
                                                                  "name": "failureSeverityConfig",
                                                                  "default": null,
                                                                  "doc": "Optional configuration for assigning severities to failed incrementing segment row count change assertions."
                                                                }
                                                              ],
                                                              "doc": "Deprecated! Attributes defining an INCREMENTING_SEGMENT_ROW_COUNT_CHANGE volume assertion.\n\nThis assertion type is not actively supported by native volume assertion evaluation.\nRetained for backward compatibility only; use RowCountChange instead."
                                                            }
                                                          ],
                                                          "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'\n\nDeprecated! This field is not actively supported by native volume assertion evaluation.\nRetained for backward compatibility only; use rowCountChange instead."
                                                        },
                                                        {
                                                          "type": [
                                                            "null",
                                                            "com.linkedin.pegasus2avro.dataset.DatasetFilter"
                                                          ],
                                                          "name": "filter",
                                                          "default": null,
                                                          "doc": "A definition of the specific filters that should be applied, when performing monitoring.\nIf not provided, there is no filter, and the full table is under consideration."
                                                        }
                                                      ],
                                                      "doc": "Attributes defining a dataset Volume Assertion"
                                                    }
                                                  ],
                                                  "name": "volumeAssertion",
                                                  "default": null,
                                                  "doc": "An Volume Assertion definition. This field is populated when the type is VOLUME."
                                                },
                                                {
                                                  "type": [
                                                    "null",
                                                    {
                                                      "type": "record",
                                                      "name": "SqlAssertionInfo",
                                                      "namespace": "com.linkedin.pegasus2avro.assertion",
                                                      "fields": [
                                                        {
                                                          "Searchable": {
                                                            "fieldName": "sqlAssertionType",
                                                            "fieldType": "KEYWORD"
                                                          },
                                                          "type": {
                                                            "type": "enum",
                                                            "symbolDocs": {
                                                              "METRIC": "A SQL Metric Assertion, e.g. one based on a numeric value returned by an arbitrary SQL query.",
                                                              "METRIC_CHANGE": "A SQL assertion that is evaluated against the CHANGE in a metric assertion\nover time."
                                                            },
                                                            "name": "SqlAssertionType",
                                                            "namespace": "com.linkedin.pegasus2avro.assertion",
                                                            "symbols": [
                                                              "METRIC",
                                                              "METRIC_CHANGE"
                                                            ]
                                                          },
                                                          "name": "type",
                                                          "doc": "The type of the SQL assertion being monitored."
                                                        },
                                                        {
                                                          "Relationship": {
                                                            "entityTypes": [
                                                              "dataset"
                                                            ],
                                                            "name": "Asserts"
                                                          },
                                                          "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."
                                                        },
                                                        {
                                                          "type": [
                                                            "null",
                                                            "com.linkedin.pegasus2avro.assertion.AssertionFailureSeverityConfig"
                                                          ],
                                                          "name": "failureSeverityConfig",
                                                          "default": null,
                                                          "doc": "Optional configuration for assigning severities to failed SQL assertions."
                                                        }
                                                      ],
                                                      "doc": "Attributes defining a SQL Assertion"
                                                    }
                                                  ],
                                                  "name": "sqlAssertion",
                                                  "default": null,
                                                  "doc": "A SQL Assertion definition. This field is populated when the type is SQL."
                                                },
                                                {
                                                  "type": [
                                                    "null",
                                                    {
                                                      "type": "record",
                                                      "name": "FieldAssertionInfo",
                                                      "namespace": "com.linkedin.pegasus2avro.assertion",
                                                      "fields": [
                                                        {
                                                          "Searchable": {
                                                            "fieldName": "fieldAssertionType",
                                                            "fieldType": "KEYWORD"
                                                          },
                                                          "type": {
                                                            "type": "enum",
                                                            "symbolDocs": {
                                                              "FIELD_METRIC": "An assertion used to validate the value of a common field / column metric (e.g. aggregation) such as null count + percentage,\nmin, max, median, and more.",
                                                              "FIELD_VALUES": "An assertion used to validate the values contained with a field / column given a set of rows."
                                                            },
                                                            "name": "FieldAssertionType",
                                                            "namespace": "com.linkedin.pegasus2avro.assertion",
                                                            "symbols": [
                                                              "FIELD_VALUES",
                                                              "FIELD_METRIC"
                                                            ]
                                                          },
                                                          "name": "type",
                                                          "doc": "The type of the field assertion being monitored."
                                                        },
                                                        {
                                                          "Relationship": {
                                                            "entityTypes": [
                                                              "dataset"
                                                            ],
                                                            "name": "Asserts"
                                                          },
                                                          "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."
                                                        },
                                                        {
                                                          "Searchable": {
                                                            "addToFilters": true,
                                                            "fieldName": "fieldPath",
                                                            "fieldType": "KEYWORD"
                                                          },
                                                          "type": [
                                                            "null",
                                                            "string"
                                                          ],
                                                          "name": "fieldPath",
                                                          "default": null,
                                                          "doc": "The field path targeted by this Field assertion, extracted from the nested sub-records.\nPopulated automatically by AssertionInfoMutator."
                                                        },
                                                        {
                                                          "type": [
                                                            "null",
                                                            {
                                                              "type": "record",
                                                              "name": "FieldValuesAssertion",
                                                              "namespace": "com.linkedin.pegasus2avro.assertion",
                                                              "fields": [
                                                                {
                                                                  "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": [
                                                                    "null",
                                                                    "com.linkedin.pegasus2avro.assertion.AssertionFailureSeverityConfig"
                                                                  ],
                                                                  "name": "failureSeverityConfig",
                                                                  "default": null,
                                                                  "doc": "Optional configuration for assigning severities to failed field values assertions."
                                                                },
                                                                {
                                                                  "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": [
                                                                {
                                                                  "type": "com.linkedin.pegasus2avro.schema.SchemaFieldSpec",
                                                                  "name": "field",
                                                                  "doc": "The field path under evaluation"
                                                                },
                                                                {
                                                                  "type": {
                                                                    "type": "enum",
                                                                    "symbolDocs": {
                                                                      "EMPTY_COUNT": "The number of empty string values found in the value set (applies to string columns).\nNote: This is a completely different metric different from NULL_COUNT!",
                                                                      "EMPTY_PERCENTAGE": "The percentage of empty string values to total rows for the dataset (applies to string columns)\nNote: This is a completely different metric different from NULL_PERCENTAGE!",
                                                                      "MAX": "The maximum value in the column set (applies to numeric columns)",
                                                                      "MAX_LENGTH": "The maximum length found in the column set (applies to string columns)",
                                                                      "MEAN": "The mean length found in the column set (applies to numeric columns)",
                                                                      "MEDIAN": "The median length found in the column set (applies to numeric columns)",
                                                                      "MIN": "The minimum value in the column set (applies to numeric columns)",
                                                                      "MIN_LENGTH": "The minimum length found in the column set (applies to string columns)",
                                                                      "NEGATIVE_COUNT": "The number of negative values found in the value set (applies to numeric columns)",
                                                                      "NEGATIVE_PERCENTAGE": "The percentage of negative values to total rows for the dataset (applies to numeric columns)",
                                                                      "NULL_COUNT": "The number of null values found in the column value set",
                                                                      "NULL_PERCENTAGE": "The percentage of null values to total rows for the dataset",
                                                                      "STDDEV": "The stddev length found in the column set (applies to numeric columns)",
                                                                      "UNIQUE_COUNT": "The number of unique values found in the column value set",
                                                                      "UNIQUE_PERCENTAGE": "The percentage of unique values to total rows for the dataset",
                                                                      "ZERO_COUNT": "The number of zero values found in the value set (applies to numeric columns)",
                                                                      "ZERO_PERCENTAGE": "The percentage of zero values to total rows for the dataset (applies to numeric columns)"
                                                                    },
                                                                    "name": "FieldMetricType",
                                                                    "namespace": "com.linkedin.pegasus2avro.assertion",
                                                                    "symbols": [
                                                                      "UNIQUE_COUNT",
                                                                      "UNIQUE_PERCENTAGE",
                                                                      "NULL_COUNT",
                                                                      "NULL_PERCENTAGE",
                                                                      "MIN",
                                                                      "MAX",
                                                                      "MEAN",
                                                                      "MEDIAN",
                                                                      "STDDEV",
                                                                      "NEGATIVE_COUNT",
                                                                      "NEGATIVE_PERCENTAGE",
                                                                      "ZERO_COUNT",
                                                                      "ZERO_PERCENTAGE",
                                                                      "MIN_LENGTH",
                                                                      "MAX_LENGTH",
                                                                      "EMPTY_COUNT",
                                                                      "EMPTY_PERCENTAGE"
                                                                    ],
                                                                    "doc": "A standard metric that can be derived from the set of values\nfor a specific field / column of a dataset / table."
                                                                  },
                                                                  "name": "metric",
                                                                  "doc": "The specific metric to assert against. This is the value that\nwill be obtained by applying a standard operation, such as an aggregation,\nto the selected field."
                                                                },
                                                                {
                                                                  "type": "com.linkedin.pegasus2avro.assertion.AssertionStdOperator",
                                                                  "name": "operator",
                                                                  "doc": "The predicate to evaluate against the metric for the field / column.\nDepending on the operator, parameters may be required in order to successfully\nevaluate the assertion against the metric value."
                                                                },
                                                                {
                                                                  "type": [
                                                                    "null",
                                                                    "com.linkedin.pegasus2avro.assertion.AssertionStdParameters"
                                                                  ],
                                                                  "name": "parameters",
                                                                  "default": null,
                                                                  "doc": "Standard parameters required for the assertion. e.g. min_value, max_value, value, columns"
                                                                },
                                                                {
                                                                  "type": [
                                                                    "null",
                                                                    "com.linkedin.pegasus2avro.assertion.AssertionFailureSeverityConfig"
                                                                  ],
                                                                  "name": "failureSeverityConfig",
                                                                  "default": null,
                                                                  "doc": "Optional configuration for assigning severities to failed field metric assertions."
                                                                }
                                                              ],
                                                              "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"
                                                          },
                                                          "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"
                                                        },
                                                        {
                                                          "Relationship": {
                                                            "/fields/*/globalTags/tags/*/tag": null,
                                                            "/fields/*/glossaryTerms/terms/*/urn": null,
                                                            "/foreignKeys/*/foreignDataset": null,
                                                            "/foreignKeys/*/foreignFields/*": null
                                                          },
                                                          "Searchable": {
                                                            "/fields/*/description": null,
                                                            "/fields/*/fieldPath": null,
                                                            "/fields/*/globalTags/tags/*/tag": null,
                                                            "/fields/*/glossaryTerms/terms/*/urn": null,
                                                            "/fields/*/label": null
                                                          },
                                                          "type": "com.linkedin.pegasus2avro.schema.SchemaMetadata",
                                                          "name": "schema",
                                                          "doc": "A definition of the expected structure for the asset\n\nNote that many of the fields of this model, especially those related to metadata (tags, terms)\nwill go unused in this context."
                                                        },
                                                        {
                                                          "type": [
                                                            {
                                                              "type": "enum",
                                                              "symbolDocs": {
                                                                "EXACT_MATCH": "The actual schema must be exactly the same as the expected schema",
                                                                "SUBSET": "The actual schema must be a subset of the expected schema",
                                                                "SUPERSET": "The actual schema must be a superset of the expected schema"
                                                              },
                                                              "name": "SchemaAssertionCompatibility",
                                                              "namespace": "com.linkedin.pegasus2avro.assertion",
                                                              "symbols": [
                                                                "EXACT_MATCH",
                                                                "SUPERSET",
                                                                "SUBSET"
                                                              ]
                                                            },
                                                            "null"
                                                          ],
                                                          "name": "compatibility",
                                                          "default": "EXACT_MATCH",
                                                          "doc": "The required compatibility level for the schema assertion to pass."
                                                        }
                                                      ],
                                                      "doc": "Attributes that are applicable to schema assertions"
                                                    }
                                                  ],
                                                  "name": "schemaAssertion",
                                                  "default": null,
                                                  "doc": "An schema Assertion definition. This field is populated when the type is DATA_SCHEMA"
                                                },
                                                {
                                                  "type": [
                                                    "null",
                                                    {
                                                      "type": "record",
                                                      "name": "CustomAssertionInfo",
                                                      "namespace": "com.linkedin.pegasus2avro.assertion",
                                                      "fields": [
                                                        {
                                                          "Searchable": {
                                                            "addToFilters": true,
                                                            "fieldName": "customType",
                                                            "fieldType": "KEYWORD"
                                                          },
                                                          "type": "string",
                                                          "name": "type",
                                                          "doc": "The type of custom assertion.\nThis is how your assertion will appear categorized in DataHub UI. "
                                                        },
                                                        {
                                                          "Relationship": {
                                                            "entityTypes": [
                                                              "dataset"
                                                            ],
                                                            "name": "Asserts"
                                                          },
                                                          "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": {
                                                            "addToFilters": true,
                                                            "fieldName": "sourceType",
                                                            "fieldType": "KEYWORD"
                                                          },
                                                          "type": {
                                                            "type": "enum",
                                                            "symbolDocs": {
                                                              "EXTERNAL": "The assertion was defined and managed externally of DataHub.",
                                                              "INFERRED": "The assertion's criteria was inferred, and potentially generated automatically e.g. from AI suggestions.\nDataHub Cloud only",
                                                              "NATIVE": "The assertion was defined natively on DataHub, with exact criteria.\nDataHub Cloud only"
                                                            },
                                                            "name": "AssertionSourceType",
                                                            "namespace": "com.linkedin.pegasus2avro.assertion",
                                                            "symbols": [
                                                              "NATIVE",
                                                              "EXTERNAL",
                                                              "INFERRED"
                                                            ]
                                                          },
                                                          "name": "type",
                                                          "doc": "Note, in reality this describes the execution mode rather than the actual source type of the assertion."
                                                        },
                                                        {
                                                          "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."
                                                        },
                                                        {
                                                          "type": [
                                                            "null",
                                                            {
                                                              "type": "record",
                                                              "name": "AssertionManagedBy",
                                                              "namespace": "com.linkedin.pegasus2avro.assertion",
                                                              "fields": [
                                                                {
                                                                  "Searchable": {
                                                                    "fieldName": "managedBySourceEntity",
                                                                    "fieldType": "URN"
                                                                  },
                                                                  "java": {
                                                                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                                                  },
                                                                  "Urn": "Urn",
                                                                  "type": [
                                                                    "null",
                                                                    "string"
                                                                  ],
                                                                  "name": "sourceEntity",
                                                                  "default": null,
                                                                  "doc": "The source entity that created or manages this assertion\n(e.g. an Assertion Assignment Rule URN)."
                                                                },
                                                                {
                                                                  "Searchable": {
                                                                    "fieldName": "managedByRunId",
                                                                    "fieldType": "KEYWORD"
                                                                  },
                                                                  "type": [
                                                                    "null",
                                                                    "string"
                                                                  ],
                                                                  "name": "runId",
                                                                  "default": null,
                                                                  "doc": "An operational run identifier used for tracking which execution\nof a rule created or last touched this assertion."
                                                                }
                                                              ]
                                                            }
                                                          ],
                                                          "name": "managedBy",
                                                          "default": null,
                                                          "doc": "Operational metadata about the system entity managing this assertion."
                                                        }
                                                      ],
                                                      "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"
                                                },
                                                {
                                                  "Deprecated": true,
                                                  "type": [
                                                    "null",
                                                    {
                                                      "type": "record",
                                                      "Aspect": {
                                                        "name": "assertionNote"
                                                      },
                                                      "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.\nRendered as markdown in the UI."
                                                        },
                                                        {
                                                          "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                                                          "name": "lastModified",
                                                          "doc": "The time at which the note was last modified."
                                                        }
                                                      ],
                                                      "doc": "A user-defined note attached to an Assertion, giving technical owners more context about the\nassertion and how to troubleshoot failures. Stored as a separate aspect so that ingestion\nsources that UPSERT AssertionInfo do not accidentally overwrite user-authored notes."
                                                    }
                                                  ],
                                                  "name": "note",
                                                  "default": null,
                                                  "doc": "@deprecated Use the assertionNote aspect instead. This field is retained for backward\ncompatibility during migration and will be removed in a future release.\n\nAn optional note to give technical owners more context about the assertion, and how to troubleshoot it.\nThe UI will render this in markdown format."
                                                },
                                                {
                                                  "Searchable": {
                                                    "fieldName": "entity",
                                                    "fieldType": "URN"
                                                  },
                                                  "java": {
                                                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                                  },
                                                  "Urn": "Urn",
                                                  "type": [
                                                    "null",
                                                    "string"
                                                  ],
                                                  "name": "entityUrn",
                                                  "default": null,
                                                  "doc": "The entity targeted by this assertion. Newly added field, automatically set by mutation"
                                                }
                                              ],
                                              "doc": "Information about an assertion\n\nAcryl Only: Did you update AssertionWithoutAnnotations.pdl? If not, please update it."
                                            }
                                          ],
                                          "name": "assertion",
                                          "default": null,
                                          "doc": "Acryl Only! An assertion without any searchable or relationship annotations."
                                        },
                                        {
                                          "type": [
                                            "null",
                                            "com.linkedin.pegasus2avro.timeseries.TimeWindow"
                                          ],
                                          "name": "evaluationTimeWindow",
                                          "default": null,
                                          "doc": "Validity period of the assertion, ie the window of time where it should be used in evaluation"
                                        },
                                        {
                                          "type": [
                                            "null",
                                            {
                                              "type": "map",
                                              "values": "string"
                                            }
                                          ],
                                          "name": "context",
                                          "default": null,
                                          "doc": "Context about the embedded assertion prediction"
                                        }
                                      ],
                                      "doc": "Embedded assertion to be evaluated"
                                    }
                                  }
                                ],
                                "name": "embeddedAssertions",
                                "default": null,
                                "doc": "Currently used for Smart Assertions\nAn embedded copy of the assertion used to evaluate which will overwrite the referenced assertion\nif present and if the EmbeddedAssertion's evaluationTimeWindow period is valid"
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "record",
                                    "Aspect": {
                                      "name": "assertionInferenceDetails",
                                      "schemaVersion": 2
                                    },
                                    "name": "AssertionInferenceDetails",
                                    "namespace": "com.linkedin.pegasus2avro.assertion",
                                    "fields": [
                                      {
                                        "type": [
                                          "null",
                                          "string"
                                        ],
                                        "name": "modelId",
                                        "default": null,
                                        "doc": "The id of the assertion prediction model."
                                      },
                                      {
                                        "type": [
                                          "null",
                                          "string"
                                        ],
                                        "name": "modelVersion",
                                        "default": null,
                                        "doc": "The version of the model used to make the assertion."
                                      },
                                      {
                                        "type": [
                                          "null",
                                          "float"
                                        ],
                                        "name": "confidence",
                                        "default": null,
                                        "doc": "The confidence of the inference, if available."
                                      },
                                      {
                                        "type": [
                                          "null",
                                          {
                                            "type": "map",
                                            "values": "string"
                                          }
                                        ],
                                        "name": "parameters",
                                        "default": null,
                                        "doc": "The parameters used to make the inference."
                                      },
                                      {
                                        "Searchable": {},
                                        "type": [
                                          "null",
                                          "long"
                                        ],
                                        "name": "generatedAt",
                                        "default": null,
                                        "doc": "The time the inferred assertion was generated at in milliseconds."
                                      },
                                      {
                                        "type": [
                                          "null",
                                          {
                                            "type": "record",
                                            "name": "AssertionAdjustmentSettings",
                                            "namespace": "com.linkedin.pegasus2avro.assertion",
                                            "fields": [
                                              {
                                                "type": [
                                                  "null",
                                                  {
                                                    "type": "enum",
                                                    "name": "AdjustmentAlgorithm",
                                                    "namespace": "com.linkedin.pegasus2avro.assertion",
                                                    "symbols": [
                                                      "CUSTOM"
                                                    ],
                                                    "doc": "The adjustment algorithm to use when determining the threshold for an assertion."
                                                  }
                                                ],
                                                "name": "algorithm",
                                                "default": null,
                                                "doc": "The algorithm to use to adjust assertion values to power the sensitivity control feature\n\nNote that for algorithm \"STDDEV\" which leverages the standard deviation of trailing values,\nthe \"stdDev\" field must be provided inside of AssertionEvaluationContext.pdl by the offline pipeline."
                                              },
                                              {
                                                "type": [
                                                  "null",
                                                  "string"
                                                ],
                                                "name": "algorithmName",
                                                "default": null,
                                                "doc": "The name of the algorithm to use to adjust assertion values to power the sensitivity control feature"
                                              },
                                              {
                                                "type": [
                                                  "null",
                                                  {
                                                    "type": "map",
                                                    "values": "string"
                                                  }
                                                ],
                                                "name": "context",
                                                "default": null,
                                                "doc": "The context to use to adjust assertion values"
                                              },
                                              {
                                                "type": [
                                                  "null",
                                                  {
                                                    "type": "array",
                                                    "items": "com.linkedin.pegasus2avro.assertion.AssertionExclusionWindow"
                                                  }
                                                ],
                                                "name": "exclusionWindows",
                                                "default": null,
                                                "doc": "The user-defined exclusion windows for the assertion."
                                              },
                                              {
                                                "type": [
                                                  "null",
                                                  {
                                                    "type": "array",
                                                    "items": "com.linkedin.pegasus2avro.assertion.AssertionExclusionWindow"
                                                  }
                                                ],
                                                "name": "anomalyExclusionWindows",
                                                "default": null,
                                                "doc": "Exclude the anomaly data points for the assertion. These are detected automatically by the system."
                                              },
                                              {
                                                "type": [
                                                  "null",
                                                  "long"
                                                ],
                                                "name": "trainingDataLookbackWindowDays",
                                                "default": null,
                                                "doc": "The lookback window configuration for retrieving training data points.\nDefines how far back in time to look when gathering data for training.\nDefaults to 60 days if not specified."
                                              },
                                              {
                                                "type": [
                                                  "null",
                                                  {
                                                    "type": "record",
                                                    "name": "AssertionMonitorSensitivity",
                                                    "namespace": "com.linkedin.pegasus2avro.assertion",
                                                    "fields": [
                                                      {
                                                        "type": "int",
                                                        "name": "level",
                                                        "doc": "The assertion monitor level from 0-10"
                                                      }
                                                    ],
                                                    "doc": "Assertion monitor sensitivity is a measure of how sensitive the assertion monitor is to the assertion condition."
                                                  }
                                                ],
                                                "name": "sensitivity",
                                                "default": null,
                                                "doc": "The sensitivity level for an assertion"
                                              }
                                            ],
                                            "doc": "A set of settings that can be used to adjust assertion values\nNOTE: This is only applied against inferred assertions"
                                          }
                                        ],
                                        "name": "adjustmentSettings",
                                        "default": null,
                                        "doc": "The settings used to adjust the assertion."
                                      },
                                      {
                                        "type": [
                                          "null",
                                          {
                                            "type": "enum",
                                            "symbolDocs": {
                                              "ABSOLUTE": "Bounds are absolute / point-in-time values. The evaluator compares them\ndirectly against the observed metric. Default for assertions without an\ninference pipeline and for inference pipelines that did not difference.",
                                              "DELTA": "Bounds are per-interval deltas predicted on a differenced series. The\neval-time transformer rewrites them to absolute (anchor + delta) using\na historical cumulative anchor read from the metric cube at the start\nof the active embedded assertion's evaluation time window."
                                            },
                                            "name": "BoundsValueSpace",
                                            "namespace": "com.linkedin.pegasus2avro.assertion",
                                            "symbols": [
                                              "ABSOLUTE",
                                              "DELTA"
                                            ],
                                            "doc": "Whether persisted assertion bounds are absolute observed values or\nper-interval deltas. Set on AssertionInferenceDetails when an inference\npipeline applied differencing during training and therefore predicted\nbounds in delta-space."
                                          }
                                        ],
                                        "name": "boundsValueSpace",
                                        "default": null,
                                        "doc": "Marks the value space of the persisted bounds on this assertion. When\nDELTA, an eval-time transformer is expected to rewrite the bounds to\nabsolute by adding a historical cumulative anchor read from the metric\ncube. Absent (treated as ABSOLUTE) preserves the legacy behavior where\nthe evaluator compares the observed value against the persisted bounds\ndirectly."
                                      }
                                    ],
                                    "doc": "The details of an assertion that was inferred.\n\nDeprecated as an aspect for assertions!"
                                  }
                                ],
                                "name": "inferenceDetails",
                                "default": null,
                                "doc": "Details about the assertion inference."
                              },
                              {
                                "type": [
                                  "null",
                                  "float"
                                ],
                                "name": "stdDev",
                                "default": null,
                                "doc": "The std deviation of the metric values used for training.\nThis is used to determine the final adjusted threshold for the assertion."
                              }
                            ],
                            "doc": "Additional context about assertion being evaluated."
                          }
                        ],
                        "name": "context",
                        "default": null,
                        "doc": "Additional context about assertion being evaluated."
                      }
                    ],
                    "doc": "Information required for a monitor to evaluate an assertion"
                  }
                },
                "name": "assertions",
                "doc": "Specs for each assertion to evaluate\nThis will always have 1 reference. Modelling error caused it to be an array.\nIf it is != 1 then we have data corruption."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "AssertionMonitorSettings",
                    "namespace": "com.linkedin.pegasus2avro.monitor",
                    "fields": [
                      {
                        "type": [
                          "null",
                          "com.linkedin.pegasus2avro.assertion.AssertionAdjustmentSettings"
                        ],
                        "name": "adjustmentSettings",
                        "default": null,
                        "doc": "In adjustment settings, the settings"
                      },
                      {
                        "Searchable": {
                          "/*": {}
                        },
                        "type": {
                          "type": "array",
                          "items": {
                            "type": "enum",
                            "symbolDocs": {
                              "ASSERTION_EVALUATION": "Whether the metrics used for evaluating an assertion should be collected and saved. These metrics\ncan be used for training, debugging, and even display in other contexts of the application.\n\nThis is particularly useful for smart assertion evaluation, where the assertion is evaluated based on the metrics collected.",
                              "METRIC_COLLECTION": "Whether the metrics used for evaluating an assertion should be collected and saved in a shared, globally accessible location (e.g. asset profiles).\nThese metrics can be used for training, debugging, and even display in other contexts of the application.\n\nThis is particularly useful for offline smart assertion training, where the smart assertion inference pipeline\nis de-coupled process that trains and updates the assertion itself based on historical metric values."
                            },
                            "name": "AssertionMonitorCapability",
                            "namespace": "com.linkedin.pegasus2avro.monitor",
                            "symbols": [
                              "ASSERTION_EVALUATION",
                              "METRIC_COLLECTION"
                            ],
                            "doc": "Individual toggle-able capability for an assertion monitor."
                          }
                        },
                        "name": "capabilities",
                        "default": [
                          "ASSERTION_EVALUATION"
                        ],
                        "doc": "Capabilities that are currently enabled for the assertion monitor."
                      }
                    ],
                    "doc": "General purpose settings for the assertion monitor."
                  }
                ],
                "name": "settings",
                "default": null,
                "doc": "Specific settings for an assertion monitor"
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "AssertionMonitorBootstrapConfig",
                    "namespace": "com.linkedin.pegasus2avro.monitor",
                    "fields": [
                      {
                        "type": "long",
                        "name": "backfillStartDateMs",
                        "doc": "The earliest date (ms since epoch) to backfill from. Must be within the\nmaximum lookback window relative to the assertion's creation time.\n\nLimits by bucketing strategy:\n  - DAY bucketing:  max 365 days before assertion creation\n  - WEEK bucketing: max 156 weeks (\u22483 years) before assertion creation\n  - No bucketing (volume only): max 365 days before assertion creation"
                      }
                    ],
                    "doc": "Configuration for bootstrapping the metrics cube for an assertion monitor."
                  }
                ],
                "name": "bootstrapConfig",
                "default": null,
                "doc": "Configuration for bootstrapping the metrics cube."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "Aspect": {
                      "name": "monitorBootstrapStatus"
                    },
                    "name": "AssertionMonitorBootstrapStatus",
                    "namespace": "com.linkedin.pegasus2avro.monitor",
                    "fields": [
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "AssertionMonitorMetricsCubeBootstrapStatus",
                            "namespace": "com.linkedin.pegasus2avro.monitor",
                            "fields": [
                              {
                                "Searchable": {
                                  "fieldName": "bootstrapState"
                                },
                                "type": {
                                  "type": "enum",
                                  "symbolDocs": {
                                    "COMPLETED": "All historical buckets have been successfully processed.",
                                    "FAILED": "The bootstrap task failed with an unrecoverable error.",
                                    "PENDING": "Awaiting pickup by the bootstrap job.",
                                    "REJECTED": "Bootstrap was rejected. This can occur when bootstrapConfig is\nnot present on the monitor, or when the bootstrap job determines the\nmonitor is ineligible (e.g. missing or invalid bootstrapConfig).",
                                    "RUNNING": "The bootstrap job is actively running.",
                                    "SUBMITTED": "The bootstrap task has been submitted to the bootstrap job queue."
                                  },
                                  "name": "AssertionMonitorMetricsCubeBootstrapState",
                                  "namespace": "com.linkedin.pegasus2avro.monitor",
                                  "symbols": [
                                    "PENDING",
                                    "SUBMITTED",
                                    "RUNNING",
                                    "FAILED",
                                    "COMPLETED",
                                    "REJECTED"
                                  ]
                                },
                                "name": "state",
                                "doc": "The state of the metrics cube bootstrap for this monitor.\n\nState transitions:\n  PENDING -> SUBMITTED  (bootstrap job picks up the task)\n  PENDING -> REJECTED   (scheduler finds monitor ineligible, e.g. missing bootstrapConfig)\n  SUBMITTED -> RUNNING  (bootstrap job begins processing)\n  SUBMITTED -> PENDING  (sweeper resets stale SUBMITTED task for re-submission)\n  RUNNING -> COMPLETED  (all buckets processed)\n  RUNNING -> FAILED     (unrecoverable error during processing)\n  FAILED -> PENDING     (bootstrapConfig changed or re-provided)\n  COMPLETED -> PENDING  (bootstrapConfig changed or re-provided)\n  REJECTED -> PENDING   (bootstrapConfig changed or re-provided)\n-> REJECTED         (bootstrapConfig removed from monitor)"
                              },
                              {
                                "type": [
                                  "null",
                                  "long"
                                ],
                                "name": "submissionTimeMs",
                                "default": null,
                                "doc": "Timestamp (ms since epoch) when the bootstrap task was submitted to the bootstrap job queue."
                              },
                              {
                                "type": [
                                  "null",
                                  "long"
                                ],
                                "name": "heartbeatTimestampMs",
                                "default": null,
                                "doc": "Timestamp (ms since epoch) of the last heartbeat from the bootstrap job running the bootstrap.\nUsed to detect stale RUNNING jobs."
                              },
                              {
                                "type": [
                                  "null",
                                  "long"
                                ],
                                "name": "lastBucketStartTimeMs",
                                "default": null,
                                "doc": "Start timestamp (ms since epoch) of the last bucket that was successfully processed."
                              },
                              {
                                "type": [
                                  "null",
                                  "long"
                                ],
                                "name": "firstBucketStartTimeMs",
                                "default": null,
                                "doc": "Start timestamp (ms since epoch) of the first bucket that was processed during the\ncurrent or most recent backfill run. Used to detect lookback increases: if a new run\ncomputes a start earlier than this value, only the leading gap needs to be filled."
                              },
                              {
                                "type": [
                                  "null",
                                  "boolean"
                                ],
                                "name": "isHardReset",
                                "default": null,
                                "doc": "When true, signals the bootstrap fetcher to pass hard_reset=true to the executor,\nwhich will ignore any resume/gap-fill logic and redo the entire backfill from scratch.\nSet by the retryMonitorBackfill mutation; consumed by the fetcher when building the\nExecutionRequest."
                              },
                              {
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "message",
                                "default": null,
                                "doc": "The message associated with the bootstrap status.\nI.e., an error message if the bootstrap job failed."
                              }
                            ]
                          }
                        ],
                        "name": "metricsCubeBootstrapStatus",
                        "default": null,
                        "doc": "The status of the metrics cube bootstrap."
                      }
                    ],
                    "doc": "The status of bootstrap actions performed on an assertion monitor.\nThis is a separate aspect from monitorInfo so that the executor can update\nbootstrap progress without conflicting with user-initiated monitor config changes."
                  }
                ],
                "name": "bootstrapStatus",
                "default": null,
                "doc": "@deprecated Use the monitorBootstrapStatus aspect instead. This field is no longer read or\nwritten by the service layer and will be removed in a future release."
              }
            ],
            "doc": "Information about an Assertion monitor."
          }
        ],
        "name": "assertionMonitor",
        "default": null,
        "doc": "Information about the assertions being monitored. Required if type is ASSERTION."
      },
      {
        "Searchable": {},
        "type": [
          "null",
          "string"
        ],
        "name": "executorId",
        "default": null,
        "doc": "Advanced: The executor pool id of the remote monitor service, if any."
      }
    ],
    "doc": "Information about an asset monitor."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "monitorTimeseriesState",
      "type": "timeseries"
    },
    "name": "MonitorTimeseriesState",
    "namespace": "com.linkedin.pegasus2avro.monitor",
    "fields": [
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      },
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "string"
        ],
        "name": "id",
        "default": null,
        "doc": "An optional identifier for the state. Useful for partitioning + filtering state."
      }
    ],
    "doc": "Stats required to evaluate continuous monitors."
  },
  "com.linkedin.pegasus2avro.monitor.AssertionMonitorBootstrapStatus",
  "com.linkedin.pegasus2avro.datajob.DataFlowInfo",
  "com.linkedin.pegasus2avro.datajob.DataJobInputOutput",
  "com.linkedin.pegasus2avro.datajob.EditableDataJobProperties",
  "com.linkedin.pegasus2avro.datajob.DataJobInfo",
  {
    "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"
  },
  "com.linkedin.pegasus2avro.datajob.EditableDataFlowProperties",
  {
    "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": "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."
  },
  "com.linkedin.pegasus2avro.chart.EditableChartProperties",
  "com.linkedin.pegasus2avro.chart.ChartQuery",
  {
    "type": "record",
    "Aspect": {
      "name": "chartUsageStatistics",
      "type": "timeseries"
    },
    "name": "ChartUsageStatistics",
    "namespace": "com.linkedin.pegasus2avro.chart",
    "fields": [
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "int"
        ],
        "name": "viewsCount",
        "default": null,
        "doc": "The total number of times chart has been viewed"
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "int"
        ],
        "name": "uniqueUserCount",
        "default": null,
        "doc": "Unique user count"
      },
      {
        "TimeseriesFieldCollection": {
          "key": "user"
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "ChartUserUsageCounts",
              "namespace": "com.linkedin.pegasus2avro.chart",
              "fields": [
                {
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "type": "string",
                  "name": "user",
                  "doc": "The unique id of the user."
                },
                {
                  "TimeseriesField": {},
                  "type": [
                    "null",
                    "int"
                  ],
                  "name": "viewsCount",
                  "default": null,
                  "doc": "The number of times the user has viewed the chart"
                }
              ],
              "doc": "Records a single user's usage counts for a given resource"
            }
          }
        ],
        "name": "userCounts",
        "default": null,
        "doc": "Users within this bucket, with frequency counts"
      }
    ],
    "doc": "Experimental (Subject to breaking change) -- Stats corresponding to chart's usage.\n\nIf this aspect represents the latest snapshot of the statistics about a Chart, the eventGranularity field should be null.\nIf this aspect represents a bucketed window of usage statistics (e.g. over a day), then the eventGranularity field should be set accordingly."
  },
  "com.linkedin.pegasus2avro.chart.ChartInfo",
  {
    "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": "incidentActivityEvent",
      "type": "timeseries"
    },
    "name": "IncidentActivityEvent",
    "namespace": "com.linkedin.pegasus2avro.incident",
    "fields": [
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      },
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "IncidentActivityChange",
            "namespace": "com.linkedin.pegasus2avro.incident",
            "fields": [
              {
                "TimeseriesCollection": {},
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "ASSIGNEES": "Assignees were added or removed",
                    "PRIORITY": "The priority of the incident changed",
                    "STAGE": "Lifecycle stage of the incident changes",
                    "STATE": "State of the incident changed"
                  },
                  "name": "IncidentActivityChangeType",
                  "namespace": "com.linkedin.pegasus2avro.incident",
                  "symbols": [
                    "ASSIGNEES",
                    "STATE",
                    "STAGE",
                    "PRIORITY"
                  ]
                },
                "name": "type",
                "doc": "The type of change. TODO: Determine if description change should be included in this aspect.\nThis is a timeseries field so you can filter by a given change type!"
              }
            ],
            "doc": "Incident Activity Change is a record that represents the changes that occurred in the incident activity event."
          }
        },
        "name": "changes",
        "default": [],
        "doc": "The actual changes that occurred in the incident activity event."
      },
      {
        "Relationship": {
          "/entities/*": null
        },
        "Searchable": {
          "/assignees/*/actor": null,
          "/created/time": null,
          "/customType": null,
          "/description": null,
          "/entities/*": null,
          "/priority": null,
          "/source/sourceUrn": null,
          "/source/type": null,
          "/startedAt": null,
          "/status/lastUpdated/time": null,
          "/status/stage": null,
          "/status/state": null,
          "/title": null,
          "/type": null
        },
        "type": {
          "type": "record",
          "Aspect": {
            "name": "incidentInfo"
          },
          "name": "IncidentInfo",
          "namespace": "com.linkedin.pegasus2avro.incident",
          "fields": [
            {
              "Searchable": {
                "addToFilters": true,
                "filterNameOverride": "Type"
              },
              "type": {
                "type": "enum",
                "symbolDocs": {
                  "CUSTOM": "A custom type of incident",
                  "DATASET_COLUMN": "An assertion on a particular column(s) of a Dataset has triggered the incident.\nRaised on Datasets where assertions are configured to generate incidents.\nDeprecated! Use FIELD instead. Will be removed.",
                  "DATASET_ROWS": "An assertion on the row count of a Dataset has triggered the incident.\nRaised on datasets where assertions are configured to generate incidents.\nDeprecated! Use VOLUME instead. Will be removed.",
                  "DATA_SCHEMA": "A Data Schema assertion has failed, triggering the incident.\nRaised on entities where assertions are configured to generate incidents.",
                  "FIELD": "A Field Assertion has failed, triggering the incident.\nRaised on entities where assertions are configured to generate incidents.",
                  "FRESHNESS": "An Freshness Assertion has failed, triggering the incident.\nRaised on entities where assertions are configured to generate incidents.",
                  "OPERATIONAL": "A misc. operational incident, e.g. failure to materialize a dataset.",
                  "SQL": "A raw SQL-statement based assertion has failed, triggering the incident.\nRaised on entities where assertions are configured to generate incidents.",
                  "VOLUME": "An Volume Assertion has failed, triggering the incident.\nRaised on entities where assertions are configured to generate incidents."
                },
                "deprecatedSymbols": {
                  "DATASET_COLUMN": true,
                  "DATASET_ROWS": true
                },
                "name": "IncidentType",
                "namespace": "com.linkedin.pegasus2avro.incident",
                "symbols": [
                  "FRESHNESS",
                  "VOLUME",
                  "FIELD",
                  "SQL",
                  "DATA_SCHEMA",
                  "OPERATIONAL",
                  "CUSTOM",
                  "DATASET_COLUMN",
                  "DATASET_ROWS"
                ],
                "doc": "A type of asset incident"
              },
              "name": "type",
              "doc": "The type of incident"
            },
            {
              "Searchable": {
                "addToFilters": true,
                "filterNameOverride": "Other Type"
              },
              "type": [
                "null",
                "string"
              ],
              "name": "customType",
              "default": null,
              "doc": "An optional custom incident type. Present only if type is 'CUSTOM'."
            },
            {
              "Searchable": {
                "boostScore": 10.0,
                "fieldType": "WORD_GRAM"
              },
              "type": [
                "null",
                "string"
              ],
              "name": "title",
              "default": null,
              "doc": "Optional title associated with the incident"
            },
            {
              "Searchable": {
                "fieldType": "TEXT"
              },
              "type": [
                "null",
                "string"
              ],
              "name": "description",
              "default": null,
              "doc": "Optional description associated with the incident"
            },
            {
              "Relationship": {
                "/*": {
                  "entityTypes": [
                    "dataset",
                    "chart",
                    "dashboard",
                    "dataFlow",
                    "dataJob",
                    "schemaField",
                    "mlModel",
                    "mlFeature"
                  ],
                  "name": "IncidentOn"
                }
              },
              "Searchable": {
                "/*": {
                  "fieldType": "URN"
                }
              },
              "Urn": "Urn",
              "urn_is_array": true,
              "type": {
                "type": "array",
                "items": "string"
              },
              "name": "entities",
              "doc": "A reference to the entity associated with the incident."
            },
            {
              "Searchable": {
                "addToFilters": true,
                "filterNameOverride": "Priority"
              },
              "type": [
                "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. Currently populated when the type of the incident\nis ASSERTION_FAILURE.\n\nIf this incident was raised due to an assertion failure, then this will contain the urn of the source Assertion."
                    }
                  ],
                  "doc": "Information about the source of an incident raised on an asset."
                }
              ],
              "name": "source",
              "default": null,
              "doc": "The source of an incident, i.e. how it was generated."
            },
            {
              "Searchable": {
                "/time": {
                  "fieldName": "startedAt",
                  "fieldType": "COUNT"
                }
              },
              "type": [
                "null",
                "long"
              ],
              "name": "startedAt",
              "default": null,
              "doc": "The time at which the incident actually started (may be before the date it was raised)."
            },
            {
              "Searchable": {
                "/time": {
                  "fieldName": "created",
                  "fieldType": "COUNT"
                }
              },
              "type": "com.linkedin.pegasus2avro.common.AuditStamp",
              "name": "created",
              "doc": "The time at which the request was initially created"
            }
          ],
          "doc": "Information about an incident raised on an asset.\n\nNOTE: When this file is changed, update IncidentActivityEvent.pdl to remove searchable and relationship annotations."
        },
        "name": "previousInfo",
        "doc": "The raw previous incident info. Removed all annotations."
      },
      {
        "Relationship": {
          "/entities/*": null
        },
        "Searchable": {
          "/assignees/*/actor": null,
          "/created/time": null,
          "/customType": null,
          "/description": null,
          "/entities/*": null,
          "/priority": null,
          "/source/sourceUrn": null,
          "/source/type": null,
          "/startedAt": null,
          "/status/lastUpdated/time": null,
          "/status/stage": null,
          "/status/state": null,
          "/title": null,
          "/type": null
        },
        "type": "com.linkedin.pegasus2avro.incident.IncidentInfo",
        "name": "newInfo",
        "doc": "The raw new incident info. Removed all annotations."
      },
      {
        "TimeseriesField": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "actorUrn",
        "doc": "The actor who performed the activity."
      }
    ],
    "doc": "A lifecycle event for an incident lifecycle change event\nthat should be visible in the incident activity log."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "incidentExternalLinks"
    },
    "name": "IncidentExternalLinks",
    "namespace": "com.linkedin.pegasus2avro.incident",
    "fields": [
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "IncidentExternalLink",
            "namespace": "com.linkedin.pegasus2avro.incident",
            "fields": [
              {
                "Searchable": {
                  "fieldType": "KEYWORD"
                },
                "type": "string",
                "name": "connectionId",
                "doc": "Unique connection identifier for this integration. Allows linking to multiple instances\nof the same system (e.g., 'primary-jira', 'ops-servicenow', 'critical-pagerduty')."
              },
              {
                "Searchable": {
                  "addToFilters": true,
                  "fieldName": "externalSystem",
                  "fieldType": "KEYWORD",
                  "filterNameOverride": "External System"
                },
                "type": "string",
                "name": "system",
                "doc": "The external system name (e.g., 'jira', 'servicenow', 'pagerduty')."
              },
              {
                "Searchable": {
                  "fieldName": "externalLinkId",
                  "fieldType": "KEYWORD"
                },
                "type": "string",
                "name": "externalId",
                "doc": "The identifier in the external system (e.g., 'PROJ-123' for Jira)."
              },
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.url.Url",
                  "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
                },
                "type": "string",
                "name": "url",
                "doc": "The direct URL to the external issue/ticket."
              },
              {
                "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                "name": "created",
                "doc": "When this link was created."
              },
              {
                "type": "boolean",
                "name": "syncEnabled",
                "default": true,
                "doc": "Whether bidirectional sync is enabled for this link."
              },
              {
                "type": [
                  "null",
                  "long"
                ],
                "name": "lastSyncTimeMillis",
                "default": null,
                "doc": "Epoch milliseconds of the last successful synchronization."
              }
            ],
            "doc": "A link to an external system (e.g., Jira, ServiceNow, PagerDuty) associated with an incident."
          }
        },
        "name": "links",
        "default": [],
        "doc": "List of links to external systems"
      }
    ],
    "doc": "Links to external systems for this incident (e.g., Jira, ServiceNow, PagerDuty)"
  },
  "com.linkedin.pegasus2avro.incident.IncidentSource",
  "com.linkedin.pegasus2avro.incident.IncidentInfo",
  {
    "type": "record",
    "Aspect": {
      "name": "incidentNotes"
    },
    "name": "IncidentNotes",
    "namespace": "com.linkedin.pegasus2avro.incident",
    "fields": [
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "IncidentNote",
            "namespace": "com.linkedin.pegasus2avro.incident",
            "fields": [
              {
                "Searchable": {
                  "fieldType": "TEXT"
                },
                "type": "string",
                "name": "message",
                "doc": "The content of the note. Rendered as markdown in the UI."
              },
              {
                "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                "name": "created",
                "doc": "When the note was created, and the actor who created it."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "IncidentNoteSource",
                    "namespace": "com.linkedin.pegasus2avro.incident",
                    "fields": [
                      {
                        "type": [
                          "null",
                          {
                            "type": "enum",
                            "symbolDocs": {
                              "EXTERNAL": "Synced from an external incident management or ticketing system.",
                              "NATIVE": "Created via the DataHub UI or API."
                            },
                            "name": "IncidentNoteSourceType",
                            "namespace": "com.linkedin.pegasus2avro.incident",
                            "symbols": [
                              "NATIVE",
                              "EXTERNAL"
                            ],
                            "doc": "The source type of an incident note, indicating whether it was created natively\nin DataHub or synced from an external system."
                          }
                        ],
                        "name": "sourceType",
                        "default": null,
                        "doc": "The type of system this note originated from. Optional \u2014 inferred from externalId presence\nwhen absent, but useful for explicit filtering and future third-party source types."
                      },
                      {
                        "Searchable": {
                          "fieldType": "KEYWORD",
                          "queryByDefault": false
                        },
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "externalUrl",
                        "default": null,
                        "doc": "URL to the note in the external system (e.g., a Jira comment permalink)."
                      },
                      {
                        "Searchable": {
                          "fieldType": "KEYWORD",
                          "queryByDefault": false
                        },
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "externalId",
                        "default": null,
                        "doc": "Unique identifier for the note in the external system, used for deduplication.\nFor example, a Jira comment ID."
                      }
                    ],
                    "doc": "The source of an incident note, indicating whether it was created natively in DataHub\nor synced from an external system (e.g., Jira, ServiceNow)."
                  }
                ],
                "name": "source",
                "default": null,
                "doc": "The source of this note. Absent if the note was created natively in DataHub."
              }
            ],
            "doc": "A note or update added to an incident, either by a user in DataHub or synced from an\nexternal incident management system."
          }
        },
        "name": "notes",
        "default": [],
        "doc": "The list of notes associated with this incident, ordered by creation time ascending."
      }
    ],
    "doc": "A collection of notes and updates added to an incident over its lifetime, by users\nin DataHub or synced from external systems. Stored as a separate aspect so that\ningestion sources that UPSERT IncidentInfo do not accidentally overwrite user-authored notes."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "incidentNotificationDetails"
    },
    "name": "IncidentNotificationDetails",
    "namespace": "com.linkedin.pegasus2avro.incident",
    "fields": [
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "SlackIncidentDetails",
            "namespace": "com.linkedin.pegasus2avro.incident",
            "fields": [
              {
                "type": {
                  "type": "array",
                  "items": {
                    "type": "record",
                    "name": "SlackMessageDetails",
                    "namespace": "com.linkedin.pegasus2avro.incident",
                    "fields": [
                      {
                        "type": "string",
                        "name": "channelId",
                        "doc": "The original Slack channel id or user id associated with the incident message."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "channelName",
                        "default": null,
                        "doc": "The human-readable channel name associated with the incident message.\nThis is attempted to be resolved by the integrations service.\n\nIf it cannot be found, it will be left empty."
                      },
                      {
                        "type": "string",
                        "name": "messageId",
                        "doc": "The Slack message id associated with the incident."
                      }
                    ],
                    "doc": "Slack-specific message that contains the incident information.\nNote that we will NOT capture slack message details\nfor DMs.\nThis object will be created by the integrations service once a\nnotification message about an incident is posted to a specific channel."
                  }
                },
                "name": "messages",
                "default": [],
                "doc": "The Slack messages that contain the incident information"
              }
            ],
            "doc": "Slack-specific details about incident notifications"
          }
        ],
        "name": "slack",
        "default": null,
        "doc": "Details related to Slack."
      }
    ],
    "doc": "Information about the notification context for an incident (where we notified)"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "serviceProperties"
    },
    "name": "ServiceProperties",
    "namespace": "com.linkedin.pegasus2avro.service",
    "fields": [
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "displayName",
        "doc": "Display name shown in UI and search results."
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Description of what this service provides."
      }
    ],
    "doc": "Common properties for all Service types.\n\nA Service is a catalog entry for an external service (MCP server, REST API, etc.).\nThis aspect contains identity and descriptive information.\nSubtype-specific properties are in separate aspects (e.g., McpServerProperties).\n\nNote: This contains only catalog information (identity, description).\nAsk DataHub configuration (auth, instructions) is in GlobalSettings.aiPlugins."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "serviceKey",
      "keyForEntity": "service",
      "entityCategory": "core",
      "entityAspects": [
        "serviceProperties",
        "mcpServerProperties",
        "subTypes",
        "ownership",
        "status",
        "globalTags",
        "dataPlatformInstance"
      ],
      "entityDoc": "A Service represents an external service that can be integrated with DataHub, such as an MCP server."
    },
    "name": "ServiceKey",
    "namespace": "com.linkedin.pegasus2avro.service",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "Unique identifier for this service.\nExamples: glean-search, internal-tools, weather-api"
      }
    ],
    "doc": "Key for a Service entity.\n\nA Service represents an external service that can be integrated with DataHub,\nsuch as an MCP server, REST API, or other service types."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "mcpServerProperties"
    },
    "name": "McpServerProperties",
    "namespace": "com.linkedin.pegasus2avro.service",
    "fields": [
      {
        "Searchable": {
          "fieldType": "TEXT"
        },
        "type": "string",
        "name": "url",
        "doc": "MCP server endpoint URL.\nExample: https://mcp.glean.com/v1"
      },
      {
        "type": {
          "type": "enum",
          "symbolDocs": {
            "HTTP": "Standard HTTP/HTTPS transport.",
            "SSE": "Server-Sent Events for streaming responses.",
            "WEBSOCKET": "WebSocket for bidirectional communication."
          },
          "name": "McpTransport",
          "namespace": "com.linkedin.pegasus2avro.service",
          "symbols": [
            "HTTP",
            "SSE",
            "WEBSOCKET"
          ]
        },
        "name": "transport",
        "default": "HTTP",
        "doc": "Transport protocol for MCP communication."
      },
      {
        "type": [
          "null",
          "float"
        ],
        "name": "timeout",
        "default": null,
        "doc": "Connection timeout in seconds.\nWhen absent, the integrations service applies its own default (currently 300s)."
      },
      {
        "type": [
          "null",
          {
            "type": "map",
            "values": "string"
          }
        ],
        "name": "customHeaders",
        "default": null,
        "doc": "Custom headers to send with every request.\nThese are non-auth headers (e.g., X-Tenant-ID, X-Client-Version).\nAuth headers are configured in GlobalSettings.aiPlugins."
      }
    ],
    "doc": "MCP-specific properties for Services of subtype MCP_SERVER.\n\nOnly attached to Service entities where subType = MCP_SERVER.\nContains connection details for the MCP server.\n\nNote: This contains only connection information (URL, transport, timeout).\nAuthentication and Ask DataHub configuration are in GlobalSettings.aiPlugins."
  },
  {
    "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": "dataHubFileInfo",
      "schemaVersion": 2
    },
    "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",
            "aiAgent"
          ],
          "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",
          "aiAgent"
        ],
        "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": "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": "dataHubPersonaInfo"
    },
    "name": "DataHubPersonaInfo",
    "namespace": "com.linkedin.pegasus2avro.persona",
    "fields": [
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "view",
        "default": null,
        "doc": "The urn of the search view associated with the persona."
      }
    ],
    "doc": "Placeholder aspect for persona type info"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "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"
  },
  {
    "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": "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": "constraintInfo"
    },
    "name": "ConstraintInfo",
    "namespace": "com.linkedin.pegasus2avro.constraint",
    "fields": [
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "displayName",
        "doc": "Display name of the constraint"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Description of the Constraint"
      },
      {
        "type": "string",
        "name": "type",
        "doc": "The type of constraint"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.policy.DataHubResourceFilter"
        ],
        "name": "resources",
        "default": null,
        "doc": "The resource that the policy applies to. Not required for some 'Platform' privileges."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "ConstraintParams",
            "namespace": "com.linkedin.pegasus2avro.constraint",
            "fields": [
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "GlossaryTermInNodeConstraint",
                    "namespace": "com.linkedin.pegasus2avro.constraint",
                    "fields": [
                      {
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "type": "string",
                        "name": "glossaryNode",
                        "doc": "The glossary node which the constrained entities must have attached to them"
                      }
                    ]
                  }
                ],
                "name": "hasGlossaryTermInNodeParams",
                "default": null,
                "doc": "An optional set of information specific to glossary node constraints."
              }
            ],
            "doc": "Params provided for a specific instance of a constraint."
          }
        ],
        "name": "params",
        "default": null,
        "doc": "Parameters specific for a particular Constraint type"
      }
    ],
    "doc": "Information about a constraint."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubTaskInfo",
      "schemaVersion": 3
    },
    "name": "DataHubTaskInfo",
    "namespace": "com.linkedin.pegasus2avro.task",
    "fields": [
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "name",
        "doc": "Display name of the task"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Human-readable description of what this task does"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD",
          "queryByDefault": false
        },
        "type": {
          "type": "enum",
          "symbolDocs": {
            "AGENT_TASK": "An LLM agent task. Requires agentTaskDefinition on DataHubTaskInfo.",
            "EVAL_TASK": "An eval task that runs one or more evals against an agent.\nRequires evalTaskDefinition on DataHubTaskInfo.",
            "INGESTION_TASK": "An ingestion task that references a DataHub-managed ingestion recipe.\nRequires ingestionTaskDefinition on DataHubTaskInfo. The recipe's own\nschedule continues to drive automated runs; this task only adds an\non-demand \"Run Now\" affordance and groups recipes under an agent."
          },
          "name": "DataHubTaskType",
          "namespace": "com.linkedin.pegasus2avro.task",
          "symbols": [
            "AGENT_TASK",
            "EVAL_TASK",
            "INGESTION_TASK"
          ],
          "doc": "The type of a DataHub Task, used for routing to the correct executor handler."
        },
        "name": "taskType",
        "doc": "The type of task, used for routing to the correct executor handler."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "DataHubAgentTaskDefinition",
            "namespace": "com.linkedin.pegasus2avro.task",
            "fields": [
              {
                "Relationship": {
                  "entityTypes": [
                    "aiAgent"
                  ],
                  "name": "TaskAgent"
                },
                "Searchable": {
                  "fieldName": "agentUrn",
                  "fieldType": "URN",
                  "queryByDefault": false
                },
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "entityTypes": [
                  "aiAgent"
                ],
                "type": "string",
                "name": "agent",
                "doc": "The agent to execute this task."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "instructions",
                "default": null,
                "doc": "Instructions describing what the agent should accomplish when this task runs.\nInjected into the agent's prompt alongside trigger context."
              },
              {
                "type": "boolean",
                "name": "allowHumanInput",
                "default": false,
                "doc": "Whether the agent is allowed to pause execution and request\nhuman input via the ask_human_for_input tool.\nWhen false (the default), the agent runs fully autonomously."
              }
            ],
            "doc": "Agent-specific parameters for a task with taskType = AGENT_TASK.\n\nSeparated into its own record so that future task types (e.g. RUN_EVALS)\ncan have their own definition records without polluting the base task model."
          }
        ],
        "name": "agentTaskDefinition",
        "default": null,
        "doc": "Agent-specific task parameters. Required when taskType = AGENT_TASK.\nContains the agent URN and instructions for the agent."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "DataHubEvalTaskDefinition",
            "namespace": "com.linkedin.pegasus2avro.task",
            "fields": [
              {
                "Searchable": {
                  "fieldName": "evalAgent",
                  "fieldType": "URN",
                  "queryByDefault": false
                },
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": [
                  "null",
                  "string"
                ],
                "name": "agent",
                "default": null,
                "doc": "Run all evals for this agent. The executor resolves evals for\nthis agent at runtime, so adding or removing evals does not\nrequire updating the task definition.\n\nWhen absent, targets evals for the default Ask DataHub base agent.\nUsed by scheduled tasks and the runEvalGroup mutation.\nMutually exclusive with evalUrns -- if both are set, evalUrns takes precedence."
              },
              {
                "Urn": "Urn",
                "urn_is_array": true,
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": "string"
                  }
                ],
                "name": "evalUrns",
                "default": null,
                "doc": "Run specific eval(s) by URN. Used for on-demand runs via the\nrunEvals mutation. When set, agentUrn is ignored."
              },
              {
                "Relationship": {
                  "entityTypes": [
                    "actionRequest"
                  ],
                  "name": "EvalActionRequest"
                },
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "entityTypes": [
                  "actionRequest"
                ],
                "type": [
                  "null",
                  "string"
                ],
                "name": "actionRequestUrn",
                "default": null,
                "doc": "Optional action request URN that triggered this eval run\n(e.g. a Context Hub proposal). When present, the executor tags\nall resulting EvalRunEvent aspects with this URN so results can\nbe filtered to show proposal-specific vs production runs."
              }
            ],
            "doc": "Eval-specific parameters for a task with taskType = EVAL_TASK.\n\nThis definition serves two purposes:\n\n1. **On-demand execution args** \u2014 When EvalService creates an ExecutionRequest\n   (task=RUN_TASK, taskType=EVAL_TASK), the executor reads these fields from\n   the execution request args to know what to run.\n\n2. **Scheduled task definition** \u2014 When a dataHubTask entity is created with\n   taskType=EVAL_TASK, this definition tells the TaskFetcher/Scheduler which\n   agent's evals to run on each cron trigger. The executor resolves the\n   agent's evals at runtime.\n\nThe executor accepts two arg shapes (mutually exclusive):\n  - evalUrns: run specific evals by URN (from runEvals mutation)\n  - agent: resolve and run all evals for an agent (from runEvalGroup\n    mutation or scheduled tasks). Absent = Ask DataHub base agent."
          }
        ],
        "name": "evalTaskDefinition",
        "default": null,
        "doc": "Eval-specific task parameters. Required when taskType = EVAL_TASK.\nDefines which evals to run and optional agent context overrides."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "DataHubIngestionTaskDefinition",
            "namespace": "com.linkedin.pegasus2avro.task",
            "fields": [
              {
                "Relationship": {
                  "entityTypes": [
                    "aiAgent"
                  ],
                  "name": "IngestionTaskAgent"
                },
                "Searchable": {
                  "addToFilters": true,
                  "fieldName": "ingestionTaskAgent",
                  "fieldType": "URN",
                  "queryByDefault": false
                },
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "entityTypes": [
                  "aiAgent"
                ],
                "type": [
                  "null",
                  "string"
                ],
                "name": "agent",
                "default": null,
                "doc": "Owner agent \u2014 UI grouping, \"tasks for this agent\" filter."
              },
              {
                "Relationship": {
                  "entityTypes": [
                    "dataHubIngestionSource"
                  ],
                  "name": "TaskIngestionSource"
                },
                "Searchable": {
                  "addToFilters": true,
                  "fieldName": "taskIngestionSource",
                  "fieldType": "URN",
                  "queryByDefault": false
                },
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "entityTypes": [
                  "dataHubIngestionSource"
                ],
                "type": "string",
                "name": "ingestionSourceUrn",
                "doc": "The ingestion recipe this task references."
              }
            ],
            "doc": "Per-type config for INGESTION_TASK. Mirrors the agentTaskDefinition /\nevalTaskDefinition pattern. Today holds the owner-agent ref + the single\nrecipe URN; future fields (run policy, environment overrides, retry\nstrategy) land here without disrupting the parent aspect.\n\nThe agent on this definition is a passive owner (label/grouping) \u2014 it does\nnot actively participate in the ingestion run. Recipes continue to be\nscheduled by the IngestionScheduler on their own DataHubIngestionSourceInfo\nschedules; this task only adds an on-demand \"Run Now\" affordance and a\nnavigation link from the agent."
          }
        ],
        "name": "ingestionTaskDefinition",
        "default": null,
        "doc": "Ingestion-specific task parameters. Required when taskType = INGESTION_TASK.\nReferences a DataHubIngestionSource recipe (which keeps its own schedule)\nand the owning agent (used for grouping/labelling only)."
      },
      {
        "type": {
          "type": "record",
          "name": "DataHubTaskTrigger",
          "namespace": "com.linkedin.pegasus2avro.task",
          "fields": [
            {
              "type": [
                "null",
                {
                  "type": "record",
                  "name": "DataHubTaskSchedule",
                  "namespace": "com.linkedin.pegasus2avro.task",
                  "fields": [
                    {
                      "type": "string",
                      "name": "interval",
                      "doc": "A cron-formatted execution interval, e.g. 0 1 * * * for daily at 1am"
                    },
                    {
                      "type": "string",
                      "name": "timezone",
                      "doc": "Timezone in which the cron interval applies, e.g. America/Los_Angeles or UTC"
                    }
                  ],
                  "doc": "A cron-based schedule for triggering task runs."
                }
              ],
              "name": "schedule",
              "default": null,
              "doc": "Cron-based schedule for periodic task execution"
            },
            {
              "type": [
                "null",
                {
                  "type": "record",
                  "name": "DataHubTaskEventTrigger",
                  "namespace": "com.linkedin.pegasus2avro.task",
                  "fields": [
                    {
                      "type": {
                        "type": "enum",
                        "symbolDocs": {
                          "TASK_RUN_COMPLETED": "Fires when a task execution request finishes (success or failure).\nUse the event filter to narrow by source task URN or result status."
                        },
                        "name": "DataHubTaskEventType",
                        "namespace": "com.linkedin.pegasus2avro.task",
                        "symbols": [
                          "TASK_RUN_COMPLETED"
                        ],
                        "doc": "Well-known event types that can trigger a DataHub Task."
                      },
                      "name": "eventType",
                      "doc": "The type of event that triggers this task."
                    },
                    {
                      "type": [
                        "null",
                        {
                          "type": "record",
                          "name": "DataHubTaskEventFilter",
                          "namespace": "com.linkedin.pegasus2avro.task",
                          "fields": [
                            {
                              "Searchable": {
                                "fieldName": "sourceTaskUrn",
                                "fieldType": "URN",
                                "queryByDefault": false
                              },
                              "java": {
                                "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                              },
                              "Urn": "Urn",
                              "type": [
                                "null",
                                "string"
                              ],
                              "name": "sourceTaskUrn",
                              "default": null,
                              "doc": "For task chaining: only trigger when this specific task completes."
                            },
                            {
                              "type": [
                                "null",
                                "string"
                              ],
                              "name": "resultStatus",
                              "default": null,
                              "doc": "Only trigger when the run finishes with this status,\ne.g. SUCCEEDED, FAILED"
                            },
                            {
                              "type": [
                                "null",
                                {
                                  "type": "map",
                                  "values": "string"
                                }
                              ],
                              "name": "parameters",
                              "default": null,
                              "doc": "Extensible key-value filter criteria for future event types.\nKeys and values are event-type-specific."
                            }
                          ],
                          "doc": "Filter criteria for narrowing which events trigger a task.\n\nFor task chaining (eventType = TASK_RUN_COMPLETED), use sourceTaskUrn\nto only trigger when a specific upstream task finishes, and resultStatus\nto filter on outcome (e.g. only on success)."
                        }
                      ],
                      "name": "filter",
                      "default": null,
                      "doc": "Optional filter to narrow which events of the given type actually trigger the task."
                    }
                  ],
                  "doc": "Configuration for event-based task triggering."
                }
              ],
              "name": "eventTrigger",
              "default": null,
              "doc": "Event-based trigger for reactive task execution (e.g. task chaining)"
            }
          ],
          "doc": "Trigger configuration for a task definition.\n\nA task may have a cron schedule, an event trigger, or both.\nAt least one must be provided for the task to be executable."
        },
        "name": "trigger",
        "doc": "How and when this task should be triggered"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD",
          "queryByDefault": false
        },
        "type": {
          "type": "enum",
          "symbolDocs": {
            "ACTIVE": "The task is scheduled and will execute when triggered.",
            "INACTIVE": "The task is retained but will not execute."
          },
          "name": "DataHubTaskState",
          "namespace": "com.linkedin.pegasus2avro.task",
          "symbols": [
            "ACTIVE",
            "INACTIVE"
          ],
          "doc": "The operational state of a task definition."
        },
        "name": "state",
        "default": "ACTIVE",
        "doc": "The operational state of this task definition.\nINACTIVE tasks are retained but not executed."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "DataHubTaskSource",
            "namespace": "com.linkedin.pegasus2avro.task",
            "fields": [
              {
                "Searchable": {
                  "fieldName": "sourceType",
                  "fieldType": "KEYWORD",
                  "queryByDefault": false
                },
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "SYSTEM": "A system-internal task, bootstrapped at deployment time."
                  },
                  "name": "DataHubTaskSourceType",
                  "namespace": "com.linkedin.pegasus2avro.task",
                  "symbols": [
                    "SYSTEM"
                  ],
                  "doc": "The origin type of a task definition."
                },
                "name": "type",
                "doc": "The source type of the task"
              }
            ],
            "doc": "The source or origin of a task definition."
          }
        ],
        "name": "source",
        "default": null,
        "doc": "The source or origin of the task definition.\nSystem tasks (source.type = SYSTEM) are bootstrapped at deployment time."
      },
      {
        "Relationship": {
          "entityTypes": [
            "corpuser"
          ],
          "name": "TaskRunAs"
        },
        "Searchable": {
          "fieldType": "URN",
          "queryByDefault": false
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "entityTypes": [
          "corpuser"
        ],
        "type": [
          "null",
          "string"
        ],
        "name": "runAs",
        "default": null,
        "doc": "The identity (corpuser or corpGroup URN) under which this task's\nexecution requests are created. Determines the permissions context\nfor the agent during execution.\n\nIf not explicitly set, defaults to the user who created the task\n(i.e. the actor in the 'created' AuditStamp). This ensures that\nscheduled and event-triggered runs execute with a predictable,\nstable identity rather than depending on whoever happens to trigger them.\n\nTo set this to a service account other than yourself, the caller\nmust hold the MANAGE_SERVICE_ACCOUNTS platform privilege."
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "createdAt",
            "fieldType": "DATETIME",
            "queryByDefault": false
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "doc": "When this task was created"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "lastModifiedAt",
            "fieldType": "DATETIME",
            "queryByDefault": false
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "doc": "When this task was last modified"
      }
    ],
    "doc": "Configuration and metadata for a DataHub Task definition.\n\nTasks are scheduled or event-triggered units of work. The taskType enum\nroutes each task to the correct executor handler:\n\n  - AGENT_TASK: an LLM agent task. Requires agentTaskDefinition.\n\nTasks can be triggered by cron schedule, events (e.g. task chaining), or both."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "businessAttributes"
    },
    "name": "BusinessAttributes",
    "namespace": "com.linkedin.pegasus2avro.businessattribute",
    "fields": [
      {
        "Relationship": {
          "/businessAttributeUrn": {
            "entityTypes": [
              "businessAttribute"
            ],
            "name": "BusinessAttributeOf"
          }
        },
        "SearchableRef": {
          "/businessAttributeUrn": {
            "boostScore": 0.5,
            "fieldName": "businessAttributeRef",
            "fieldType": "URN",
            "refType": "businessAttribute"
          }
        },
        "type": [
          "null",
          {
            "type": "record",
            "name": "BusinessAttributeAssociation",
            "namespace": "com.linkedin.pegasus2avro.businessattribute",
            "fields": [
              {
                "Searchable": {
                  "fieldName": "schemaFieldBusinessAttribute",
                  "includeSystemModifiedAt": true,
                  "queryByDefault": false,
                  "systemModifiedAtFieldName": "schemaFieldBusinessAttributeModifiedAt"
                },
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.BusinessAttributeUrn"
                },
                "Urn": "BusinessAttributeUrn",
                "type": "string",
                "name": "businessAttributeUrn",
                "doc": "Urn of the applied businessAttribute"
              }
            ]
          }
        ],
        "name": "businessAttribute",
        "default": null,
        "doc": "Business Attribute for this field."
      }
    ],
    "doc": "BusinessAttribute aspect used for applying it to an entity"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "businessAttributeKey",
      "keyForEntity": "businessAttribute",
      "entityCategory": "core",
      "entityAspects": [
        "businessAttributeInfo",
        "status",
        "ownership",
        "institutionalMemory"
      ]
    },
    "name": "BusinessAttributeKey",
    "namespace": "com.linkedin.pegasus2avro.businessattribute",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the Business Attribute."
      }
    ],
    "doc": "Key for a Query"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "businessAttributeInfo"
    },
    "name": "BusinessAttributeInfo",
    "namespace": "com.linkedin.pegasus2avro.businessattribute",
    "fields": [
      {
        "type": "string",
        "name": "fieldPath",
        "doc": "FieldPath uniquely identifying the SchemaField this metadata is associated with"
      },
      {
        "Searchable": {
          "boostScore": 0.1,
          "fieldName": "editedFieldDescriptions",
          "fieldType": "TEXT",
          "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",
            "queryByDefault": false
          },
          "/tags/*/tag": {
            "boostScore": 0.5,
            "fieldName": "editedFieldTags",
            "fieldType": "URN"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.GlobalTags"
        ],
        "name": "globalTags",
        "default": null,
        "doc": "Tags associated with the field"
      },
      {
        "Relationship": {
          "/terms/*/urn": {
            "entityTypes": [
              "glossaryTerm"
            ],
            "name": "EditableSchemaFieldWithGlossaryTerm"
          }
        },
        "Searchable": {
          "/terms/*/attribution/actor": {
            "fieldName": "editedFieldTermAttributionActors",
            "fieldType": "URN",
            "queryByDefault": false
          },
          "/terms/*/attribution/source": {
            "fieldName": "editedFieldTermAttributionSources",
            "fieldType": "URN",
            "queryByDefault": false
          },
          "/terms/*/attribution/time": {
            "fieldName": "editedFieldTermAttributionDates",
            "fieldType": "DATETIME",
            "queryByDefault": false
          },
          "/terms/*/urn": {
            "boostScore": 0.5,
            "fieldName": "editedFieldGlossaryTerms",
            "fieldType": "URN",
            "includeSystemModifiedAt": true,
            "systemModifiedAtFieldName": "schemaFieldTermsModifiedAt"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.GlossaryTerms"
        ],
        "name": "glossaryTerms",
        "default": null,
        "doc": "Glossary terms associated with the field"
      },
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "default": {
          "actor": "urn:li:corpuser:unknown",
          "impersonator": null,
          "time": 0,
          "message": null
        },
        "doc": "An AuditStamp corresponding to the creation of this resource/association/sub-resource. A value of 0 for time indicates missing data."
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "default": {
          "actor": "urn:li:corpuser:unknown",
          "impersonator": null,
          "time": 0,
          "message": null
        },
        "doc": "An AuditStamp corresponding to the last modification of this resource/association/sub-resource. If no modification has happened since creation, lastModified should be the same as created. A value of 0 for time indicates missing data."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "deleted",
        "default": null,
        "doc": "An AuditStamp corresponding to the deletion of this resource/association/sub-resource. Logically, deleted MUST have a later timestamp than creation. It may or may not have the same time as lastModified depending upon the resource/association/sub-resource semantics."
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM",
          "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"
  },
  "com.linkedin.pegasus2avro.tag.TagProperties",
  {
    "type": "record",
    "Aspect": {
      "name": "subscriptionInfo",
      "schemaVersion": 2
    },
    "name": "SubscriptionInfo",
    "namespace": "com.linkedin.pegasus2avro.subscription",
    "fields": [
      {
        "Searchable": {
          "fieldType": "URN"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "actorUrn",
        "doc": "Actor Urn who will be notified "
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "actorType",
        "doc": "Actor type"
      },
      {
        "Searchable": {
          "/*": {
            "fieldName": "subscriptionTypes",
            "fieldType": "KEYWORD"
          }
        },
        "type": {
          "type": "array",
          "items": {
            "type": "enum",
            "symbolDocs": {
              "ENTITY_CHANGE": "Triggered via direct changes on an entity.",
              "UPSTREAM_ENTITY_CHANGE": "Triggered via upstream changes on an entity."
            },
            "name": "SubscriptionType",
            "namespace": "com.linkedin.pegasus2avro.subscription",
            "symbols": [
              "ENTITY_CHANGE",
              "UPSTREAM_ENTITY_CHANGE"
            ],
            "doc": "Enum to define the different types of subscriptions."
          }
        },
        "name": "types",
        "doc": "The subscription types."
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "createdOn",
            "fieldType": "DATETIME"
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "createdOn",
        "doc": "AuditStamp for when the subscription was created"
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "updatedOn",
        "doc": "AuditStamp for when the subscription was updated"
      },
      {
        "Searchable": {
          "fieldType": "URN"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "entityUrn",
        "default": null,
        "doc": "Optional entity Urn - top level for now (Dataset, container etc. )"
      },
      {
        "Relationship": {
          "/*/filter/includeAssertions/*": {
            "entityTypes": [
              "assertion"
            ],
            "name": "SubscribedAssertions"
          }
        },
        "Searchable": {
          "/*/entityChangeType": {
            "fieldName": "entityChangeTypes",
            "fieldType": "KEYWORD"
          },
          "/*/filter/includeAssertions/*": {
            "fieldName": "subscribedAssertions",
            "fieldType": "URN"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.subscription.EntityChangeDetails"
          }
        ],
        "name": "entityChangeTypes",
        "default": null,
        "doc": "Change types that trigger a notification for the subscription."
      },
      {
        "Searchable": {
          "/*/sourceEntity": {
            "fieldName": "managedBySourceEntities",
            "fieldType": "URN"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "SubscriptionManagedBy",
              "namespace": "com.linkedin.pegasus2avro.subscription",
              "fields": [
                {
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "type": "string",
                  "name": "sourceEntity",
                  "doc": "The source entity managing this subscription."
                },
                {
                  "type": [
                    "null",
                    {
                      "type": "array",
                      "items": "com.linkedin.pegasus2avro.subscription.EntityChangeType"
                    }
                  ],
                  "name": "lastAppliedChangeTypes",
                  "default": null,
                  "doc": "Optional list of typed change categories most recently applied by this source entity."
                }
              ]
            }
          }
        ],
        "name": "managedBy",
        "default": null,
        "doc": "Operational metadata about source entities currently managing this subscription.\nA subscription may be managed by multiple source entities."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.subscription.SubscriptionNotificationConfig"
        ],
        "name": "notificationConfig",
        "default": null,
        "doc": "Optional notification config."
      }
    ],
    "doc": "Subscription info."
  },
  {
    "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",
      "schemaVersion": 2
    },
    "name": "Domains",
    "namespace": "com.linkedin.pegasus2avro.domain",
    "fields": [
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "domain"
            ],
            "name": "AssociatedWith"
          }
        },
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldName": "domains",
            "fieldType": "URN",
            "filterNameOverride": "In Domain",
            "hasValuesFieldName": "hasDomain"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "domains",
        "doc": "The Domains attached to an Asset"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "DomainAssociation",
              "namespace": "com.linkedin.pegasus2avro.domain",
              "fields": [
                {
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "type": "string",
                  "name": "domain",
                  "doc": "Urn of the associated domain. Corresponds to an entry in the parallel domains array."
                },
                {
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "context",
                  "default": null,
                  "doc": "Additional context about the association"
                },
                {
                  "Searchable": {
                    "/actor": {
                      "fieldName": "domainAttributionActors",
                      "fieldType": "URN",
                      "queryByDefault": false
                    },
                    "/source": {
                      "fieldName": "domainAttributionSources",
                      "fieldType": "URN",
                      "queryByDefault": false
                    },
                    "/time": {
                      "fieldName": "domainAttributionDates",
                      "fieldType": "DATETIME",
                      "queryByDefault": false
                    }
                  },
                  "type": [
                    "null",
                    "com.linkedin.pegasus2avro.common.MetadataAttribution"
                  ],
                  "name": "attribution",
                  "default": null,
                  "doc": "Information about who, why, and how this domain was applied.\nsourceDetail may carry flags such as 'propagated'='true' when set via glossary tree propagation."
                }
              ],
              "doc": "Properties of an applied domain association."
            }
          }
        ],
        "name": "domainAssociations",
        "default": null,
        "doc": "Additional per-domain association metadata such as attribution and propagation source.\nA superset of the domains field; entries correspond by domain URN.\nInitial migration handled by the DomainsMigrationMutator;\nthe two fields are kept in sync via the DomainsSyncMutationHook."
      }
    ],
    "doc": "Links from an Asset to its Domains"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "globalSettingsInfo",
      "schemaVersion": 5
    },
    "name": "GlobalSettingsInfo",
    "namespace": "com.linkedin.pegasus2avro.settings.global",
    "fields": [
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "GlobalIntegrationSettings",
            "namespace": "com.linkedin.pegasus2avro.settings.global",
            "fields": [
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "SlackIntegrationSettings",
                    "namespace": "com.linkedin.pegasus2avro.settings.global",
                    "fields": [
                      {
                        "deprecated": true,
                        "type": "boolean",
                        "name": "enabled",
                        "default": true,
                        "doc": "Whether the slack integration is enabled or not.\nDeprecated! This is no longer used in favor of using the connections abstraction.\nIf a connection is present, then this is enabled."
                      },
                      {
                        "deprecated": true,
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "encryptedBotToken",
                        "default": null,
                        "doc": "An encrypted bot token.\nDeprecated! This is no longer used in favor of using the connections abstraction."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "defaultChannelName",
                        "default": null,
                        "doc": "A default slack channel to use."
                      },
                      {
                        "type": [
                          "null",
                          "boolean"
                        ],
                        "name": "datahubAtMentionEnabled",
                        "default": null,
                        "doc": "Whether the Slack @DataHub bot mention functionality is enabled.\nIf null, use the default value from feature flags."
                      },
                      {
                        "type": {
                          "type": "array",
                          "items": {
                            "type": "record",
                            "name": "SlackBotServiceAccountMapping",
                            "namespace": "com.linkedin.pegasus2avro.settings.global",
                            "fields": [
                              {
                                "type": "string",
                                "name": "botId",
                                "doc": "The Slack bot_id (e.g. \"B01ABC23DEF\") of the authoring bot."
                              },
                              {
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "Urn": "Urn",
                                "type": "string",
                                "name": "serviceAccountUrn",
                                "doc": "URN of the DataHub corp user to impersonate for requests originating\nfrom this bot_id. Must point to a corpUser, typically a service account."
                              },
                              {
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "description",
                                "default": null,
                                "doc": "Optional human-friendly label describing the bot, shown in the settings UI."
                              }
                            ],
                            "doc": "Mapping from a Slack bot_id to a DataHub service account user URN.\n\nWhen the integrations service receives a Slack app_mention authored by a bot\nwhose bot_id matches an entry here, the bot is allowed to use Ask DataHub\nand the question is attributed to the mapped service account rather than\nrequiring a human user in the thread."
                          }
                        },
                        "name": "botServiceAccountMappings",
                        "default": [],
                        "doc": "Mappings from Slack bot_id to DataHub service account URN. When a Slack\napp_mention is authored by a bot whose bot_id matches an entry here, the\nintegrations service permits the mention (skipping the usual human-author\nrequirement) and attributes the question to the mapped service account."
                      }
                    ],
                    "doc": "Slack integration settings."
                  }
                ],
                "name": "slackSettings",
                "default": null,
                "doc": "Slack integration settings."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "EmailIntegrationSettings",
                    "namespace": "com.linkedin.pegasus2avro.settings.global",
                    "fields": [
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "defaultEmail",
                        "default": null,
                        "doc": "The default email address to use for global notifications."
                      }
                    ],
                    "doc": "Email integration settings. Enabled by default and only disable-able via the application configs."
                  }
                ],
                "name": "emailSettings",
                "default": null,
                "doc": "Email integration settings."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "TeamsIntegrationSettings",
                    "namespace": "com.linkedin.pegasus2avro.settings.global",
                    "fields": [
                      {
                        "deprecated": true,
                        "type": "boolean",
                        "name": "enabled",
                        "default": true,
                        "doc": "Whether the Teams integration is enabled or not.\nDeprecated! This is no longer used in favor of using the connections abstraction.\nIf a connection is present, then this is enabled."
                      },
                      {
                        "deprecated": true,
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "encryptedBotToken",
                        "default": null,
                        "doc": "An encrypted bot token.\nDeprecated! This is no longer used in favor of using the connections abstraction."
                      },
                      {
                        "deprecated": true,
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "defaultChannelName",
                        "default": null,
                        "doc": "A default Teams channel to use.\nDeprecated! Use defaultChannel instead."
                      },
                      {
                        "type": [
                          "null",
                          "com.linkedin.pegasus2avro.settings.global.TeamsChannel"
                        ],
                        "name": "defaultChannel",
                        "default": null,
                        "doc": "A default Teams channel to route notifications to."
                      }
                    ],
                    "doc": "Teams integration settings."
                  }
                ],
                "name": "teamsSettings",
                "default": null,
                "doc": "Teams integration settings."
              }
            ],
            "doc": "Native DataHub Integrations, supported on the UI."
          }
        ],
        "name": "integrations",
        "default": null,
        "doc": "Integrations between DataHub & other platforms."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "GlobalNotificationSettings",
            "namespace": "com.linkedin.pegasus2avro.settings.global",
            "fields": [
              {
                "type": [
                  "null",
                  {
                    "type": "map",
                    "values": "com.linkedin.pegasus2avro.settings.NotificationSetting"
                  }
                ],
                "name": "settings",
                "default": null,
                "doc": "Global / platform notification settings.\nA map of notification scenario type to the settings associated with it.\nFor a list of all scenario types to notify on, check out NotificationScenarioType enum."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "GlobalIncidentsSettings",
                    "namespace": "com.linkedin.pegasus2avro.settings.global",
                    "fields": [
                      {
                        "type": "com.linkedin.pegasus2avro.settings.NotificationSetting",
                        "name": "broadcastNewIncidentNotification",
                        "doc": "Send a 'broadcast' notification when a new incident has been created. A broadcast is a notification that\nis sent to a general purpose channel, as opposed to a specific user or group member directly."
                      },
                      {
                        "type": "com.linkedin.pegasus2avro.settings.NotificationSetting",
                        "name": "broadcastIncidentStatusChangeNotification",
                        "doc": "Send a 'broadcast' notification when an incident status has changed. A broadcast is a notification that\nis sent to a general purpose channel, as opposed to a specific user or group member directly."
                      }
                    ]
                  }
                ],
                "name": "incidents",
                "default": null,
                "doc": "Settings related to asset incidents.\nDeprecated! Use 'settings' for configuring incidents settings instead."
              }
            ],
            "doc": "DataHub global notification settings"
          }
        ],
        "name": "notifications",
        "default": null,
        "doc": "Global notifications settings"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "SsoSettings",
            "namespace": "com.linkedin.pegasus2avro.settings.global",
            "fields": [
              {
                "type": "string",
                "name": "baseUrl",
                "doc": "Auth base URL."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "OidcSettings",
                    "namespace": "com.linkedin.pegasus2avro.settings.global",
                    "fields": [
                      {
                        "type": "boolean",
                        "name": "enabled",
                        "doc": "Whether OIDC SSO is enabled."
                      },
                      {
                        "type": "string",
                        "name": "clientId",
                        "doc": "Unique client id issued by the identity provider."
                      },
                      {
                        "type": "string",
                        "name": "clientSecret",
                        "doc": "Unique client secret issued by the identity provider."
                      },
                      {
                        "type": "string",
                        "name": "discoveryUri",
                        "doc": "The IdP OIDC discovery url."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "userNameClaim",
                        "default": null,
                        "doc": "ADVANCED. The attribute / claim used to derive the DataHub username. Defaults to \"preferred_username\"."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "userNameClaimRegex",
                        "default": null,
                        "doc": "ADVANCED. TThe regex used to parse the DataHub username from the user name claim. Defaults to (.*) (all)."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "scope",
                        "default": null,
                        "doc": "ADVANCED. String representing the requested scope from the IdP. Defaults to \"oidc email profile\"."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "clientAuthenticationMethod",
                        "default": null,
                        "doc": "ADVANCED. Which authentication method to use to pass credentials (clientId and clientSecret) to the token endpoint: Defaults to \"client_secret_basic\"."
                      },
                      {
                        "type": [
                          "null",
                          "boolean"
                        ],
                        "name": "jitProvisioningEnabled",
                        "default": null,
                        "doc": "ADVANCED. Whether DataHub users should be provisioned on login if they do not exist. Defaults to true."
                      },
                      {
                        "type": [
                          "null",
                          "boolean"
                        ],
                        "name": "preProvisioningRequired",
                        "default": null,
                        "doc": "ADVANCED. Whether the user should already exist in DataHub on login, failing login if they are not. Defaults to false."
                      },
                      {
                        "type": [
                          "null",
                          "boolean"
                        ],
                        "name": "extractGroupsEnabled",
                        "default": null,
                        "doc": "ADVANCED. Whether groups should be extracted from a claim in the OIDC profile. Only applies if JIT provisioning is enabled. Groups will be created if they do not exist. Defaults to true."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "groupsClaim",
                        "default": null,
                        "doc": "ADVANCED. The OIDC claim to extract groups information from. Defaults to 'groups'."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "responseType",
                        "default": null,
                        "doc": "ADVANCED. Response type."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "responseMode",
                        "default": null,
                        "doc": "ADVANCED. Response mode."
                      },
                      {
                        "type": [
                          "null",
                          "boolean"
                        ],
                        "name": "useNonce",
                        "default": null,
                        "doc": "ADVANCED. Use Nonce."
                      },
                      {
                        "type": [
                          "null",
                          "long"
                        ],
                        "name": "readTimeout",
                        "default": null,
                        "doc": "ADVANCED. Read timeout."
                      },
                      {
                        "type": [
                          "null",
                          "boolean"
                        ],
                        "name": "extractJwtAccessTokenClaims",
                        "default": null,
                        "doc": "ADVANCED. Whether to extract claims from JWT access token.  Defaults to false."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "preferredJwsAlgorithm",
                        "default": null,
                        "doc": " ADVANCED. Which jws algorithm to use. Unused."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "preferredJwsAlgorithm2",
                        "default": null,
                        "doc": " ADVANCED. Which jws algorithm to use."
                      }
                    ],
                    "doc": "Settings for OIDC SSO integration."
                  }
                ],
                "name": "oidcSettings",
                "default": null,
                "doc": "Optional OIDC SSO settings."
              }
            ],
            "doc": "SSO Integrations, supported on the UI."
          }
        ],
        "name": "sso",
        "default": null,
        "doc": "SSO integrations between DataHub and identity providers"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "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"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "DocumentationAiSettings",
            "namespace": "com.linkedin.pegasus2avro.settings.global",
            "fields": [
              {
                "type": "boolean",
                "name": "enabled",
                "default": true,
                "doc": "Whether or not AI-generated documentation is enabled."
              },
              {
                "type": {
                  "type": "array",
                  "items": "com.linkedin.pegasus2avro.settings.global.AiInstruction"
                },
                "name": "instructions",
                "default": [],
                "doc": "Custom instructions to inject into the AI documentation model prompt."
              }
            ],
            "doc": "Settings related to AI-powered documentation."
          }
        ],
        "name": "documentationAi",
        "default": null,
        "doc": "Settings related to AI-powered documentation."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.settings.global.AiAssistantSettings"
        ],
        "name": "aiAssistant",
        "default": null,
        "doc": "Settings related to AI-powered chat assistant (Ask DataHub)."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "GlobalVisualSettings",
            "namespace": "com.linkedin.pegasus2avro.settings.global",
            "fields": [
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "HelpLink",
                    "namespace": "com.linkedin.pegasus2avro.settings.global",
                    "fields": [
                      {
                        "type": "boolean",
                        "name": "isEnabled",
                        "doc": "Whether or not this link should be shown in the UI"
                      },
                      {
                        "type": "string",
                        "name": "label",
                        "doc": "The label of this help link"
                      },
                      {
                        "type": "string",
                        "name": "link",
                        "doc": "The url or mailto link that this links to"
                      }
                    ],
                    "doc": "Information regarding the help link dislayed in the UI"
                  }
                ],
                "name": "helpLink",
                "default": null,
                "doc": "The configurable help link shown in the UI"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "customLogoUrl",
                "default": null,
                "doc": "The Url for a custom logo to display in the UI"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "customOrgName",
                "default": null,
                "doc": "A customized name for organization display preferences"
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "SampleDataSettings",
                    "namespace": "com.linkedin.pegasus2avro.settings.global",
                    "fields": [
                      {
                        "type": {
                          "type": "enum",
                          "symbolDocs": {
                            "DISABLED": "Sample data is disabled and hidden from the platform.",
                            "ENABLED": "Sample data is enabled and visible throughout the platform."
                          },
                          "name": "SampleDataStatus",
                          "namespace": "com.linkedin.pegasus2avro.settings.global",
                          "symbols": [
                            "ENABLED",
                            "DISABLED"
                          ]
                        },
                        "name": "sampleDataStatus",
                        "doc": "Status of sample data visibility in the platform.\nControls which types of sample data entities are visible.\nOnly applicable for free trial instances."
                      }
                    ],
                    "doc": "Settings related to sample data, used to aid in initial onboarding."
                  }
                ],
                "name": "sampleDataSettings",
                "default": null,
                "doc": "Settings related to sample data, used to aid in initial onboarding."
              }
            ],
            "doc": "Global settings for the UI"
          }
        ],
        "name": "visual",
        "default": null,
        "doc": "Global settings related to the UI and what's displayed in the app"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "AiPluginSettings",
            "namespace": "com.linkedin.pegasus2avro.settings.global",
            "fields": [
              {
                "type": {
                  "type": "array",
                  "items": {
                    "type": "record",
                    "name": "AiPluginConfig",
                    "namespace": "com.linkedin.pegasus2avro.settings.global",
                    "fields": [
                      {
                        "type": "string",
                        "name": "id",
                        "doc": "Unique identifier for this plugin configuration.\nTypically the service URN string for easy correlation.\nExample: urn:li:service:glean-search"
                      },
                      {
                        "type": {
                          "type": "enum",
                          "symbolDocs": {
                            "MCP_SERVER": "Model Context Protocol (MCP) server.\nService entity should have McpServerProperties aspect."
                          },
                          "name": "AiPluginType",
                          "namespace": "com.linkedin.pegasus2avro.settings.global",
                          "symbols": [
                            "MCP_SERVER"
                          ]
                        },
                        "name": "type",
                        "doc": "Type of AI plugin (determines how the agent uses it)."
                      },
                      {
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "type": "string",
                        "name": "serviceUrn",
                        "doc": "Reference to the Service entity (catalog entry).\nExample: urn:li:service:glean-search"
                      },
                      {
                        "type": "boolean",
                        "name": "enabled",
                        "default": true,
                        "doc": "Whether this plugin is enabled for Ask DataHub.\nDisabled plugins are not available to the agent."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "instructions",
                        "default": null,
                        "doc": "Custom instructions for the LLM when using this plugin's tools.\nInjected into the agent's system prompt.\nExample: Use Glean for searching company documentation and wikis."
                      },
                      {
                        "type": {
                          "type": "enum",
                          "symbolDocs": {
                            "NONE": "No authentication required (public API).",
                            "SHARED_API_KEY": "System-wide API key shared across all users.\nConfiguration in sharedApiKeyConfig.",
                            "USER_API_KEY": "User provides their own API key.\nConfiguration in userApiKeyConfig.",
                            "USER_OAUTH": "User authenticates via OAuth2 flow.\nConfiguration in oauthConfig."
                          },
                          "name": "AiPluginAuthType",
                          "namespace": "com.linkedin.pegasus2avro.settings.global",
                          "symbols": [
                            "NONE",
                            "SHARED_API_KEY",
                            "USER_API_KEY",
                            "USER_OAUTH"
                          ]
                        },
                        "name": "authType",
                        "doc": "How this plugin authenticates requests."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "OAuthAiPluginConfig",
                            "namespace": "com.linkedin.pegasus2avro.settings.global",
                            "fields": [
                              {
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "Urn": "Urn",
                                "type": "string",
                                "name": "serverUrn",
                                "doc": "URN of the OAuthAuthorizationServer that provides OAuth configuration.\nContains clientId, authorization URL, token URL, scopes, and auth injection settings."
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "array",
                                    "items": "string"
                                  }
                                ],
                                "name": "requiredScopes",
                                "default": null,
                                "doc": "Additional scopes required by this plugin.\nMerged with the authorization server's base scopes when user connects."
                              }
                            ]
                          }
                        ],
                        "name": "oauthConfig",
                        "default": null,
                        "doc": "OAuth configuration.\nRequired when authType is USER_OAUTH."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "SharedApiKeyAiPluginConfig",
                            "namespace": "com.linkedin.pegasus2avro.settings.global",
                            "fields": [
                              {
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "Urn": "Urn",
                                "type": "string",
                                "name": "credentialUrn",
                                "doc": "URN of DataHubConnection containing the shared API key.\nThe DataHubConnection is owned by the Service entity.\nExample: urn:li:dataHubConnection:urn_li_service_internal-tools__apiKey\nNote: Uses double-underscore separator (not tuple format) since DataHubConnectionKey has a single id field."
                              },
                              {
                                "type": {
                                  "type": "enum",
                                  "name": "AuthInjectionLocation",
                                  "namespace": "com.linkedin.pegasus2avro.settings.global",
                                  "symbols": [
                                    "HEADER",
                                    "QUERY_PARAM"
                                  ]
                                },
                                "name": "authLocation",
                                "default": "HEADER",
                                "doc": "Where to inject the API key in HTTP requests."
                              },
                              {
                                "type": "string",
                                "name": "authHeaderName",
                                "default": "Authorization",
                                "doc": "For HEADER: which header name to use."
                              },
                              {
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "authScheme",
                                "default": null,
                                "doc": "For HEADER: optional scheme prefix (e.g., \"Bearer\", \"ApiKey\")."
                              },
                              {
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "authQueryParam",
                                "default": null,
                                "doc": "For QUERY_PARAM: which query parameter name to use."
                              }
                            ]
                          }
                        ],
                        "name": "sharedApiKeyConfig",
                        "default": null,
                        "doc": "Shared API key configuration.\nRequired when authType is SHARED_API_KEY.\n\nAuth injection settings are embedded directly because shared API keys\ndon't need OAuth configuration."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "UserApiKeyAiPluginConfig",
                            "namespace": "com.linkedin.pegasus2avro.settings.global",
                            "fields": [
                              {
                                "type": "com.linkedin.pegasus2avro.settings.global.AuthInjectionLocation",
                                "name": "authLocation",
                                "default": "HEADER",
                                "doc": "Where to inject the API key in HTTP requests."
                              },
                              {
                                "type": "string",
                                "name": "authHeaderName",
                                "default": "Authorization",
                                "doc": "For HEADER: which header name to use."
                              },
                              {
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "authScheme",
                                "default": null,
                                "doc": "For HEADER: optional scheme prefix (e.g., \"Bearer\", \"ApiKey\")."
                              },
                              {
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "authQueryParam",
                                "default": null,
                                "doc": "For QUERY_PARAM: which query parameter name to use."
                              }
                            ]
                          }
                        ],
                        "name": "userApiKeyConfig",
                        "default": null,
                        "doc": "User API key configuration.\nRequired when authType is USER_API_KEY.\n\nUser credentials are stored in DataHubConnection keyed by (userUrn, serviceId).\nThis config defines how to inject the user's API key into requests."
                      }
                    ],
                    "doc": "Ask DataHub configuration for an AI plugin.\n\nThis record configures how a Service entity is used by the Ask DataHub agent.\nThe Service entity contains catalog info (URL, transport), while this record\ncontains agent-specific settings (auth, instructions, enabled).\n\nStored in AiPluginSettings.plugins array."
                  }
                },
                "name": "plugins",
                "default": [],
                "doc": "List of configured AI plugins.\nEach plugin references a Service entity and provides agent-specific settings."
              }
            ],
            "doc": "Settings for AI plugins (MCP servers, etc.) in Ask DataHub.\nThis is a wrapper object following the GlobalSettings pattern."
          }
        ],
        "name": "aiPluginSettings",
        "default": null,
        "doc": "AI plugin settings for Ask DataHub (MCP servers, etc.)."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "McpServerSettings",
            "namespace": "com.linkedin.pegasus2avro.settings.global",
            "fields": [
              {
                "type": {
                  "type": "array",
                  "items": {
                    "type": "record",
                    "name": "McpServerConfig",
                    "namespace": "com.linkedin.pegasus2avro.settings.global",
                    "fields": [
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "slug",
                        "default": null,
                        "doc": "URL-safe unique identifier used as the path segment in /mcp/:slug.\nAbsent only for defaultMcpServerOverrides on the default server."
                      },
                      {
                        "type": "string",
                        "name": "name",
                        "doc": "Human-readable display name for this server."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "description",
                        "default": null,
                        "doc": "Short description of the MCP server."
                      },
                      {
                        "type": "boolean",
                        "name": "enabled",
                        "default": true,
                        "doc": "Whether this server is active and should be mounted by the dispatcher.\nDefaults to true."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "customInstructions",
                        "default": null,
                        "doc": "Optional custom system prompt / instructions for this server's scope."
                      },
                      {
                        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                        "name": "created",
                        "doc": "Audit stamp for when this server was created."
                      },
                      {
                        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                        "name": "lastModified",
                        "doc": "Audit stamp for when this server was last modified."
                      }
                    ],
                    "doc": "Configuration for a DataHub-hosted MCP server.\nEach scoped server is exposed at /mcp/:slug; the default server at /mcp uses this\ntype for overrides (slug absent)."
                  }
                },
                "name": "servers",
                "default": [],
                "doc": "List of configured scoped MCP servers."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.settings.global.McpServerConfig"
                ],
                "name": "defaultMcpServerOverrides",
                "default": null,
                "doc": "Optional overrides applied to the default MCP server (exposed at /mcp with no slug).\nWhen absent, the default server exposes all tools with no custom instructions."
              }
            ],
            "doc": "Settings for DataHub-hosted MCP servers (one per slug, exposed at /mcp/:slug).\nThis is a wrapper object following the GlobalSettings pattern."
          }
        ],
        "name": "mcpServers",
        "default": null,
        "doc": "Settings for DataHub-hosted MCP servers (one per slug, exposed at /mcp/:slug)."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "MaintenanceWindowSettings",
            "namespace": "com.linkedin.pegasus2avro.settings.global",
            "fields": [
              {
                "type": "boolean",
                "name": "enabled",
                "default": false,
                "doc": "Whether maintenance mode is currently active."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "message",
                "default": null,
                "doc": "Message to display to users during maintenance."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "enum",
                    "symbolDocs": {
                      "CRITICAL": "Critical maintenance (e.g., major outage or emergency maintenance).",
                      "INFO": "Informational maintenance notice (e.g., scheduled maintenance window).",
                      "WARNING": "Warning level maintenance (e.g., degraded performance expected)."
                    },
                    "name": "MaintenanceSeverity",
                    "namespace": "com.linkedin.pegasus2avro.settings.global",
                    "symbols": [
                      "INFO",
                      "WARNING",
                      "CRITICAL"
                    ],
                    "doc": "Severity level for maintenance window announcements."
                  }
                ],
                "name": "severity",
                "default": null,
                "doc": "Severity level affecting banner color."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "linkUrl",
                "default": null,
                "doc": "Optional URL for more details (e.g., status page)."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "linkText",
                "default": null,
                "doc": "Optional text for the link (defaults to \"Learn more\" if linkUrl provided)."
              },
              {
                "type": [
                  "null",
                  "long"
                ],
                "name": "enabledAt",
                "default": null,
                "doc": "Timestamp when maintenance mode was enabled (epoch millis)."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "enabledBy",
                "default": null,
                "doc": "URN of user who enabled maintenance mode."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.policy.DataHubActorFilter"
                ],
                "name": "audience",
                "default": null,
                "doc": "Audience filter controlling which users see the banner.\nNull/absent = visible to all authenticated users. Evaluated client-side."
              }
            ],
            "doc": "Settings for platform-wide maintenance window announcements.\nWhen enabled, a banner is displayed to all authenticated users."
          }
        ],
        "name": "maintenanceWindow",
        "default": null,
        "doc": "Settings for platform-wide maintenance window announcements"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "AiContextSettings",
            "namespace": "com.linkedin.pegasus2avro.settings.global",
            "fields": [
              {
                "type": {
                  "type": "record",
                  "name": "ContextEvaluationSettings",
                  "namespace": "com.linkedin.pegasus2avro.settings.global",
                  "fields": [
                    {
                      "type": "boolean",
                      "name": "enabled",
                      "default": false,
                      "doc": "Whether the evaluation suite is enabled for this space."
                    },
                    {
                      "type": {
                        "type": "record",
                        "name": "ContextTaskSchedule",
                        "namespace": "com.linkedin.pegasus2avro.settings.global",
                        "fields": [
                          {
                            "type": {
                              "type": "enum",
                              "name": "ContextTaskFrequency",
                              "namespace": "com.linkedin.pegasus2avro.settings.global",
                              "symbols": [
                                "DAILY"
                              ],
                              "doc": "How frequently an AI context task (generation or evaluation) runs."
                            },
                            "name": "frequency",
                            "default": "DAILY"
                          }
                        ],
                        "doc": "Schedule configuration for an AI context task (generation or evaluation).\nModeled as a record so additional fields (e.g. timezone, custom cron) can be added\nin the future without changing the type of the referencing field."
                      },
                      "name": "schedule",
                      "default": {
                        "frequency": "DAILY"
                      },
                      "doc": "How often the evaluation suite runs."
                    }
                  ],
                  "doc": "Settings controlling the context evaluation suite within a context space."
                },
                "name": "evaluation",
                "default": {
                  "schedule": {
                    "frequency": "DAILY"
                  },
                  "enabled": false
                },
                "doc": "Settings for the evaluation suite."
              }
            ],
            "doc": "Global settings for AI-powered context evaluation.\n\nContext document generation is configured separately as a system ingestion source.\nThis record holds settings for the evaluation suite that scores context documents."
          }
        ],
        "name": "aiContext",
        "default": null,
        "doc": "Settings for AI-powered context document generation and evaluation."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "McpSettings",
            "namespace": "com.linkedin.pegasus2avro.settings.global",
            "fields": [
              {
                "type": "boolean",
                "name": "observationTelemetryEnabled",
                "default": true,
                "doc": "Whether telemetry emitted by MCP tools (e.g. note_metadata_observation) is enabled.\nWhen false the integrations service skips all Mixpanel / tracking calls for MCP-originated events."
              }
            ],
            "doc": "Settings related to MCP (Model Context Protocol) server behaviour."
          }
        ],
        "name": "mcpSettings",
        "default": null,
        "doc": "Settings related to MCP (Model Context Protocol) server behaviour."
      }
    ],
    "doc": "DataHub Global platform settings. Careful - these should not be modified by the outside world!"
  },
  {
    "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"
  },
  "com.linkedin.pegasus2avro.dataplatform.DataPlatformInfo",
  {
    "type": "record",
    "Aspect": {
      "name": "slackUserInfo"
    },
    "name": "SlackUserInfo",
    "namespace": "com.linkedin.pegasus2avro.dataplatform.slack",
    "fields": [
      {
        "Relationship": {
          "entityTypes": [
            "dataPlatformInstance"
          ],
          "name": "PartOfSlackWorkspace"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "entityTypes": [
          "dataPlatformInstance"
        ],
        "type": "string",
        "name": "slackInstance",
        "doc": "The dataplatform instance that this Slack member belongs to."
      },
      {
        "type": "string",
        "name": "id",
        "doc": "The unique identifier for the Slack member."
      },
      {
        "type": "string",
        "name": "name",
        "doc": "The username of the Slack member."
      },
      {
        "type": "string",
        "name": "realName",
        "doc": "The real name of the Slack member."
      },
      {
        "type": "string",
        "name": "displayName",
        "doc": "The display name of the Slack member."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "email",
        "default": null,
        "doc": "The email associated with the Slack member."
      },
      {
        "type": "string",
        "name": "teamId",
        "doc": "The ID associated with the Slack team."
      },
      {
        "type": "boolean",
        "name": "isDeleted",
        "doc": "Whether the member is deleted or not."
      },
      {
        "type": "boolean",
        "name": "isAdmin",
        "doc": "Whether the member is an admin."
      },
      {
        "type": "boolean",
        "name": "isOwner",
        "doc": "Whether the member is an owner."
      },
      {
        "type": "boolean",
        "name": "isPrimaryOwner",
        "doc": "Whether the member is a primary owner."
      },
      {
        "type": "boolean",
        "name": "isBot",
        "doc": "Whether the member is a bot."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "timezone",
        "default": null,
        "doc": "The timezone of the Slack member."
      },
      {
        "type": [
          "null",
          "int"
        ],
        "name": "timezoneOffset",
        "default": null,
        "doc": "The timezone offset of the Slack member."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "title",
        "default": null,
        "doc": "The title of the Slack member."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "phone",
        "default": null,
        "doc": "The phone number of the Slack member."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "profilePictureUrl",
        "default": null,
        "doc": "The URL of the member's profile picture."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "statusText",
        "default": null,
        "doc": "The status text of the Slack member."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "statusEmoji",
        "default": null,
        "doc": "The status emoji of the Slack member."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "lastUpdatedSeconds",
        "default": null,
        "doc": "The timestamp of when the member was last updated. (in seconds)"
      }
    ],
    "doc": "Information about a Slack user."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubIngestionSourceInfo",
      "schemaVersion": 2
    },
    "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": [
              {
                "Searchable": {
                  "addHasValuesToFilters": true,
                  "fieldType": "KEYWORD",
                  "hasValuesFieldName": "hasScheduleInterval",
                  "queryByDefault": false
                },
                "type": "string",
                "name": "interval",
                "doc": "A cron-formatted execution interval, as a cron string, e.g. * * * * *"
              },
              {
                "type": "string",
                "name": "timezone",
                "doc": "Timezone in which the cron interval applies, e.g. America/Los Angeles"
              }
            ],
            "doc": "The schedule associated with an ingestion source."
          }
        ],
        "name": "schedule",
        "default": null,
        "doc": "The schedule on which the ingestion source is executed"
      },
      {
        "type": {
          "type": "record",
          "name": "DataHubIngestionSourceConfig",
          "namespace": "com.linkedin.pegasus2avro.ingestion",
          "fields": [
            {
              "type": "string",
              "name": "recipe",
              "doc": "The JSON recipe to use for ingestion"
            },
            {
              "type": [
                "null",
                "string"
              ],
              "name": "version",
              "default": null,
              "doc": "The PyPI version of the datahub CLI to use when executing a recipe"
            },
            {
              "Searchable": {
                "fieldName": "sourceExecutorId",
                "fieldType": "KEYWORD",
                "queryByDefault": false
              },
              "type": [
                "null",
                "string"
              ],
              "name": "executorId",
              "default": null,
              "doc": "The id of the executor pool to use to execute the ingestion run"
            },
            {
              "type": [
                "null",
                "boolean"
              ],
              "name": "debugMode",
              "default": null,
              "doc": "Whether or not to run this ingestion source in debug mode"
            },
            {
              "type": [
                "null",
                {
                  "type": "map",
                  "values": "string"
                }
              ],
              "name": "extraArgs",
              "default": null,
              "doc": "Extra arguments for the ingestion run."
            }
          ]
        },
        "name": "config",
        "doc": "Parameters associated with the Ingestion Source"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "DataHubIngestionSourceSource",
            "namespace": "com.linkedin.pegasus2avro.ingestion",
            "fields": [
              {
                "Searchable": {
                  "fieldName": "sourceType",
                  "fieldType": "KEYWORD",
                  "queryByDefault": false
                },
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "SYSTEM": "A system internal source, e.g. for running search indexing operations, feature computation, etc."
                  },
                  "name": "DataHubIngestionSourceSourceType",
                  "namespace": "com.linkedin.pegasus2avro.ingestion",
                  "symbols": [
                    "SYSTEM"
                  ]
                },
                "name": "type",
                "doc": "The source type of the ingestion source"
              }
            ]
          }
        ],
        "name": "source",
        "default": null,
        "doc": "The source or origin of the Ingestion Source\n\nCurrently CLI and UI do not provide an explicit source."
      }
    ],
    "doc": "Info about a DataHub ingestion source"
  },
  {
    "type": "record",
    "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": "queryUsageStatistics",
      "type": "timeseries"
    },
    "name": "QueryUsageStatistics",
    "namespace": "com.linkedin.pegasus2avro.query",
    "fields": [
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "int"
        ],
        "name": "queryCount",
        "default": null,
        "doc": "Total query count in this bucket"
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "double"
        ],
        "name": "queryCost",
        "default": null,
        "doc": "Query cost for this query and bucket"
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "long"
        ],
        "name": "lastExecutedAt",
        "default": null,
        "doc": "Last executed timestamp"
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "int"
        ],
        "name": "uniqueUserCount",
        "default": null,
        "doc": "Unique user count"
      },
      {
        "TimeseriesFieldCollection": {
          "key": "user"
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.dataset.DatasetUserUsageCounts"
          }
        ],
        "name": "userCounts",
        "default": null,
        "doc": "Users within this bucket, with frequency counts"
      }
    ],
    "doc": "Stats corresponding to dataset's usage."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "querySubjects"
    },
    "name": "QuerySubjects",
    "namespace": "com.linkedin.pegasus2avro.query",
    "fields": [
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "QuerySubject",
            "namespace": "com.linkedin.pegasus2avro.query",
            "fields": [
              {
                "Searchable": {
                  "fieldName": "entities",
                  "fieldType": "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": "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": "com.linkedin.pegasus2avro.query.QueryStatement",
        "name": "statement",
        "doc": "The Query Statement."
      },
      {
        "Searchable": {},
        "type": {
          "type": "enum",
          "symbolDocs": {
            "MANUAL": "The query was entered manually by a user (via the UI).",
            "SYSTEM": "The query was discovered by a crawler."
          },
          "name": "QuerySource",
          "namespace": "com.linkedin.pegasus2avro.query",
          "symbols": [
            "MANUAL",
            "SYSTEM"
          ]
        },
        "name": "source",
        "doc": "The source of the Query"
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldType": "WORD_GRAM"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "name",
        "default": null,
        "doc": "Optional display name to identify the query."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "The Query description."
      },
      {
        "Searchable": {
          "/actor": {
            "fieldName": "createdBy",
            "fieldType": "URN"
          },
          "/time": {
            "fieldName": "createdAt",
            "fieldType": "DATETIME"
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "doc": "Audit stamp capturing the time and actor who created the Query."
      },
      {
        "Searchable": {
          "/actor": {
            "fieldName": "lastModifiedBy",
            "fieldType": "URN"
          },
          "/time": {
            "fieldName": "lastModifiedAt",
            "fieldType": "DATETIME"
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "doc": "Audit stamp capturing the time and actor who last modified the Query."
      },
      {
        "Searchable": {
          "addToFilters": false,
          "fieldType": "URN",
          "queryByDefault": false
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "origin",
        "default": null,
        "doc": "The origin of the Query.\nThis is the source of the Query (e.g. a View, Stored Procedure, dbt Model, etc.) that the Query was created from."
      }
    ],
    "doc": "Information about a Query against one or more data assets (e.g. Tables or Views)."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "queryUsageFeatures"
    },
    "name": "QueryUsageFeatures",
    "namespace": "com.linkedin.pegasus2avro.query",
    "fields": [
      {
        "Searchable": {
          "fieldName": "queryCountLast30DaysFeature",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "queryCountLast30Days",
        "default": null,
        "doc": "Number of times this query was executed in the last 30 days"
      },
      {
        "Searchable": {
          "fieldName": "queryCountFeature",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "queryCountTotal",
        "default": null,
        "doc": "Query count total \nTotal number of executions of this query"
      },
      {
        "Searchable": {
          "/*": {
            "fieldName": "topUsersLast30DaysFeature",
            "fieldType": "URN",
            "hasValuesFieldName": "hasTopUsersLast30DaysFeature"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "topUsersLast30Days",
        "default": null,
        "doc": "Top users of this query in the last 30 days"
      },
      {
        "Searchable": {
          "fieldName": "queryCostLast30DaysFeature"
        },
        "type": [
          "null",
          "double"
        ],
        "name": "queryCostLast30Days",
        "default": null,
        "doc": "Total cost of this query in the last 30 days"
      },
      {
        "Searchable": {
          "fieldName": "runsPercentileLast30days"
        },
        "type": [
          "null",
          "int"
        ],
        "name": "runsPercentileLast30days",
        "default": null,
        "doc": "The percentile rank of this query based on runs last 30 days"
      },
      {
        "Searchable": {
          "fieldName": "lastExecutedAtFeature",
          "fieldType": "DATETIME"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "lastExecutedAt",
        "default": null,
        "doc": "Last time this query was executed"
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "inferredNeighbors"
    },
    "name": "InferredNeighbors",
    "namespace": "com.linkedin.pegasus2avro.inferred",
    "fields": [
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "InferredNeighbor",
            "namespace": "com.linkedin.pegasus2avro.inferred",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "urn",
                "doc": "Urn of inferred neighbor entity"
              },
              {
                "type": {
                  "type": "record",
                  "name": "InferredMetadataSource",
                  "namespace": "com.linkedin.pegasus2avro.inferred",
                  "fields": [
                    {
                      "type": "string",
                      "name": "algorithm",
                      "doc": "Algorithm used for inference"
                    },
                    {
                      "type": [
                        "null",
                        "float"
                      ],
                      "name": "score",
                      "default": null,
                      "doc": "Inference score - can be used to decide rank of inference\nFor same algorithm, higher score represents higher confidence in inference.\nThis score is not intended to be compared across multiple algorithms."
                    },
                    {
                      "type": [
                        "null",
                        {
                          "type": "map",
                          "values": "string"
                        }
                      ],
                      "name": "context",
                      "default": null,
                      "doc": "Additional details about this inference"
                    },
                    {
                      "type": [
                        "null",
                        {
                          "type": "array",
                          "items": {
                            "type": "enum",
                            "symbolDocs": {
                              "DATASET_PLATFORM": "Platform of dataset",
                              "DATASET_SCHEMA": "Schema of dataset",
                              "ENTITY_DESCRIPTION": "Description of entity",
                              "ENTITY_NAME": "Name of entity",
                              "FIELD_DATA_TYPE": "Datatype of dataset field",
                              "FIELD_DESCRIPTION": "Description of dataset field",
                              "FIELD_NAME": "Name of dataset field",
                              "FIELD_PARENT_DATASET": "Dataset containing the field",
                              "LINEAGE": "Lineage of entity"
                            },
                            "name": "SimilarityFactor",
                            "namespace": "com.linkedin.pegasus2avro.inferred",
                            "symbols": [
                              "ENTITY_NAME",
                              "ENTITY_DESCRIPTION",
                              "LINEAGE",
                              "DATASET_SCHEMA",
                              "DATASET_PLATFORM",
                              "FIELD_NAME",
                              "FIELD_DESCRIPTION",
                              "FIELD_DATA_TYPE",
                              "FIELD_PARENT_DATASET"
                            ],
                            "doc": "Factors related to an entity"
                          }
                        }
                      ],
                      "name": "similarityFactors",
                      "default": null,
                      "doc": "Primary factors contributing to this inference\nOrdering of the array indicates rank."
                    }
                  ],
                  "doc": "Provenace details corresponding to an inference"
                },
                "name": "source",
                "doc": "Provenance details about this inference"
              }
            ],
            "doc": "Records Urn of inferred neighbor entity and its provenance"
          }
        },
        "name": "inferredNeighbors",
        "doc": "Neighbors of an entity as determined by algorithm"
      }
    ],
    "doc": "Aspect for representing neighbor entities as inferred by various algorithms"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "schemaFieldsInferredNeighbors"
    },
    "name": "SchemaFieldsInferredNeighbors",
    "namespace": "com.linkedin.pegasus2avro.inferred",
    "fields": [
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "SchemaFieldInferredNeighbors",
            "namespace": "com.linkedin.pegasus2avro.inferred",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "fieldUrn",
                "doc": "SchemaField Urn"
              },
              {
                "type": {
                  "type": "array",
                  "items": "com.linkedin.pegasus2avro.inferred.InferredNeighbor"
                },
                "name": "inferredNeighbors",
                "doc": "Neighbors of a schema field as determined by algorithm"
              }
            ],
            "doc": "Neighbors for a particular schema field as inferred by various algorithms"
          }
        },
        "name": "schemaFieldsInferredNeighbors",
        "doc": "Neighbors of dataset's schema fields as determined by algorithm"
      }
    ],
    "doc": "Aspect for representing Neighbors of dataset's schema fields as determined by algorithm"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "schemaFieldsInferredMetadata"
    },
    "name": "SchemaFieldsInferredMetadata",
    "namespace": "com.linkedin.pegasus2avro.inferred",
    "fields": [
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "SchemaFieldInferredMetadata",
            "namespace": "com.linkedin.pegasus2avro.inferred",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "fieldUrn",
                "doc": "SchemaField Urn this metadata is associated with"
              },
              {
                "Searchable": {
                  "/*/description": {
                    "fieldName": "inferredFieldDescriptions",
                    "fieldType": "TEXT"
                  }
                },
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": {
                      "type": "record",
                      "name": "InferredDescription",
                      "namespace": "com.linkedin.pegasus2avro.inferred",
                      "fields": [
                        {
                          "type": "string",
                          "name": "description",
                          "doc": "Inferred description text"
                        },
                        {
                          "type": "com.linkedin.pegasus2avro.inferred.InferredMetadataSource",
                          "name": "source",
                          "doc": "Provenance details about this inference"
                        }
                      ],
                      "doc": "Records inferred description and its provenance"
                    }
                  }
                ],
                "name": "inferredDescriptions",
                "default": null,
                "doc": "Inferred descriptions for schema field"
              },
              {
                "Searchable": {
                  "/*/tags/*": {
                    "fieldName": "inferredFieldTags",
                    "fieldType": "URN"
                  }
                },
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": {
                      "type": "record",
                      "name": "InferredTags",
                      "namespace": "com.linkedin.pegasus2avro.inferred",
                      "fields": [
                        {
                          "Urn": "Urn",
                          "urn_is_array": true,
                          "type": {
                            "type": "array",
                            "items": "string"
                          },
                          "name": "tags",
                          "doc": "Urns of inferred Tag"
                        },
                        {
                          "type": "com.linkedin.pegasus2avro.inferred.InferredMetadataSource",
                          "name": "source",
                          "doc": "Provenance details about this inference"
                        }
                      ],
                      "doc": "Records inferred tags along with their provenance\nAll tags in this record share same provenance"
                    }
                  }
                ],
                "name": "inferredTags",
                "default": null,
                "doc": "Inferred tags for schema field"
              },
              {
                "Searchable": {
                  "/*/glossaryTerms/*": {
                    "fieldName": "inferredFieldGlossaryTerms",
                    "fieldType": "URN"
                  }
                },
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": {
                      "type": "record",
                      "name": "InferredGlossaryTerms",
                      "namespace": "com.linkedin.pegasus2avro.inferred",
                      "fields": [
                        {
                          "Urn": "Urn",
                          "urn_is_array": true,
                          "type": {
                            "type": "array",
                            "items": "string"
                          },
                          "name": "glossaryTerms",
                          "doc": "Urn of inferred glossary term"
                        },
                        {
                          "type": "com.linkedin.pegasus2avro.inferred.InferredMetadataSource",
                          "name": "source",
                          "doc": "Provenance details about this inference"
                        }
                      ],
                      "doc": "Records inferred glossary terms along with their provenance\nAll glossary terms from this record share same provenance"
                    }
                  }
                ],
                "name": "inferredGlossaryTerms",
                "default": null,
                "doc": "Inferred glossary terms for schema field"
              }
            ],
            "doc": "Inferred Metadata for dataset schema fields"
          }
        },
        "name": "schemaFieldsInferredMetadata",
        "doc": "Inferred Metadata for dataset's schema fields"
      }
    ],
    "doc": "Aspect for representing Inferred Metadata for dataset's schema fields"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "inferredMetadata",
      "schemaVersion": 2
    },
    "name": "InferredMetadata",
    "namespace": "com.linkedin.pegasus2avro.inferred",
    "fields": [
      {
        "Searchable": {
          "/*/description": {
            "fieldName": "inferredDescriptions",
            "fieldType": "TEXT"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.inferred.InferredDescription"
          }
        ],
        "name": "inferredDescriptions",
        "default": null,
        "doc": "Inferred descriptions for entity"
      },
      {
        "Searchable": {
          "/*/tags/*": {
            "fieldName": "inferredTags",
            "fieldType": "URN"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.inferred.InferredTags"
          }
        ],
        "name": "inferredTags",
        "default": null,
        "doc": "Inferred tags for entity"
      },
      {
        "Searchable": {
          "/*/glossaryTerms/*": {
            "fieldName": "inferredGlossaryTerms",
            "fieldType": "URN"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.inferred.InferredGlossaryTerms"
          }
        ],
        "name": "inferredGlossaryTerms",
        "default": null,
        "doc": "Inferred glossary terms for entity"
      },
      {
        "Searchable": {
          "/*/owners/*/owner": {
            "fieldName": "inferredOwners",
            "fieldType": "URN",
            "queryByDefault": false
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "InferredOwners",
              "namespace": "com.linkedin.pegasus2avro.inferred",
              "fields": [
                {
                  "type": {
                    "type": "array",
                    "items": "com.linkedin.pegasus2avro.common.Owner"
                  },
                  "name": "owners",
                  "doc": "Inferred ownership details"
                },
                {
                  "type": "com.linkedin.pegasus2avro.inferred.InferredMetadataSource",
                  "name": "source",
                  "doc": "Provenance details about this inference"
                }
              ],
              "doc": "Records inferred ownership information along with its provenance\nAll owners in this record share same provenance"
            }
          }
        ],
        "name": "inferredOwners",
        "default": null,
        "doc": "Inferred owners for entity"
      }
    ],
    "doc": "Inferred Metadata for entities"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubViewInfo",
      "schemaVersion": 2
    },
    "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."
  },
  "com.linkedin.pegasus2avro.glossary.GlossaryTermInfo",
  "com.linkedin.pegasus2avro.glossary.GlossaryRelatedTerms",
  "com.linkedin.pegasus2avro.glossary.GlossaryNodeInfo",
  {
    "type": "record",
    "Aspect": {
      "name": "assertionDryRunEvent",
      "type": "timeseries"
    },
    "name": "AssertionDryRunEvent",
    "namespace": "com.linkedin.pegasus2avro.assertion",
    "fields": [
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      },
      {
        "TimeseriesField": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "asserteeUrn"
      },
      {
        "TimeseriesField": {},
        "type": {
          "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 dry run as per this timeseries event."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "AssertionDryRunResult",
            "namespace": "com.linkedin.pegasus2avro.assertion",
            "fields": [
              {
                "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",
                  {
                    "type": "map",
                    "values": "string"
                  }
                ],
                "name": "nativeResults",
                "default": null,
                "doc": "Other results of evaluation"
              },
              {
                "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",
                            "EVALUATOR_NOT_FOUND": " No evaluator registered for the assertion type",
                            "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",
                            "METRIC_PERSISTENCE_FAILED": " Failed to persist collected metric values",
                            "METRIC_RESOLVER_INVALID_SOURCE_TYPE": " Metric resolver received an invalid source type",
                            "METRIC_RESOLVER_UNSUPPORTED_METRIC": " Metric resolver does not support the requested metric",
                            "MISSING_EVALUATION_PARAMETERS": " Missing evaluation parameters for assertion execution",
                            "NO_MATURE_BUCKET": " No new mature time bucket is available to evaluate",
                            "RESULT_EMISSION_FAILED": " Failed to emit assertion run event",
                            "SMART_ASSERTION_NOT_ENABLED": " Smart (AI-inferred) assertion cannot be evaluated because the online\n smart assertions pipeline is disabled",
                            "SOURCE_CONNECTION_ERROR": " Source is unreachable",
                            "SOURCE_QUERY_FAILED": " Source query failed to execute",
                            "STATE_PERSISTENCE_FAILED": " Failed to persist assertion state",
                            "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",
                            "MISSING_EVALUATION_PARAMETERS",
                            "EVALUATOR_NOT_FOUND",
                            "METRIC_RESOLVER_UNSUPPORTED_METRIC",
                            "METRIC_RESOLVER_INVALID_SOURCE_TYPE",
                            "STATE_PERSISTENCE_FAILED",
                            "METRIC_PERSISTENCE_FAILED",
                            "RESULT_EMISSION_FAILED",
                            "NO_MATURE_BUCKET",
                            "SMART_ASSERTION_NOT_ENABLED",
                            "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 dry running an assertion.\n\nA subset of AssertionResult without the @Searchables."
          }
        ],
        "name": "result",
        "default": null,
        "doc": "Results of assertion, present if the status is COMPLETE"
      },
      {
        "type": [
          "null",
          {
            "type": "map",
            "values": "string"
          }
        ],
        "name": "runtimeContext",
        "default": null,
        "doc": "Runtime parameters of evaluation"
      }
    ],
    "doc": "An event produced when assertion is executed in dry-run mode, e.g.\nwhen an assertion is being \"dark-tested\".\n\nThis is used primarily in Acryl Observe to test assertion inference before production release.\n\nA subset of AssertionRunEvent without the @Searchables."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "assertionRunSummary"
    },
    "name": "AssertionRunSummary",
    "namespace": "com.linkedin.pegasus2avro.assertion",
    "fields": [
      {
        "Searchable": {
          "fieldName": "lastFailedAtMillis",
          "fieldType": "DATETIME"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "lastFailedAtMillis",
        "default": null,
        "doc": "The last failure event timestamp field as epoch at UTC in milliseconds."
      },
      {
        "Searchable": {
          "fieldName": "lastErroredAtMillis",
          "fieldType": "DATETIME"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "lastErroredAtMillis",
        "default": null,
        "doc": "The last error event timestamp field as epoch at UTC in milliseconds."
      },
      {
        "Searchable": {
          "fieldName": "lastPassedAtMillis",
          "fieldType": "DATETIME"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "lastPassedAtMillis",
        "default": null,
        "doc": "The last pass event timestamp field as epoch at UTC in milliseconds."
      },
      {
        "Searchable": {
          "fieldName": "lastInitializedAtMillis",
          "fieldType": "DATETIME"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "lastInitializedAtMillis",
        "default": null,
        "doc": "The last initialized event timestamp field as epoch at UTC in milliseconds."
      },
      {
        "Searchable": {
          "addToFilters": true,
          "fieldName": "assertionStatus",
          "fieldType": "KEYWORD"
        },
        "type": [
          "null",
          {
            "type": "enum",
            "name": "AssertionStatus",
            "namespace": "com.linkedin.pegasus2avro.assertion",
            "symbols": [
              "PASSING",
              "FAILING",
              "ERROR",
              "INIT"
            ],
            "doc": "Latest assertion status derived from run results and monitor errors."
          }
        ],
        "name": "assertionStatus",
        "default": null,
        "doc": "The latest assertion status, incorporating run results and monitor errors."
      }
    ],
    "doc": "Derived.\nTracks the latest summary details of an assertion."
  },
  "com.linkedin.pegasus2avro.assertion.AssertionNote",
  "com.linkedin.pegasus2avro.assertion.AssertionInferenceDetails",
  {
    "type": "record",
    "Aspect": {
      "name": "assertionRunEvent",
      "schemaVersion": 6,
      "type": "timeseries"
    },
    "name": "AssertionRunEvent",
    "namespace": "com.linkedin.pegasus2avro.assertion",
    "fields": [
      {
        "Searchable": {
          "fieldName": "lastCompletedTime",
          "fieldType": "DATETIME"
        },
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milliseconds."
      },
      {
        "type": "string",
        "name": "runId",
        "doc": " Native (platform-specific) identifier for this run"
      },
      {
        "TimeseriesField": {},
        "UrnValidation": {
          "entityTypes": [
            "dataset"
          ],
          "exist": false,
          "strict": true
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "asserteeUrn"
      },
      {
        "TimeseriesField": {},
        "type": "com.linkedin.pegasus2avro.assertion.AssertionRunStatus",
        "name": "status",
        "doc": "The status of the assertion run as per this timeseries event."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "AssertionResult",
            "namespace": "com.linkedin.pegasus2avro.assertion",
            "fields": [
              {
                "Relationship": {
                  "/datasetAssertion/dataset": null,
                  "/datasetAssertion/fields/*": null,
                  "/fieldAssertion/entity": null,
                  "/freshnessAssertion/entity": null,
                  "/schemaAssertion/entity": null,
                  "/sqlAssertion/entity": null,
                  "/volumeAssertion/entity": null
                },
                "Searchable": {
                  "/customProperties/*": null,
                  "/datasetAssertion/aggregation": null,
                  "/datasetAssertion/dataset": null,
                  "/datasetAssertion/fields/*": null,
                  "/datasetAssertion/scope": null,
                  "/externalUrl": null,
                  "/fieldAssertion/entity": null,
                  "/fieldAssertion/fieldPath": null,
                  "/fieldAssertion/type": null,
                  "/freshnessAssertion/entity": null,
                  "/freshnessAssertion/schedule/type": null,
                  "/freshnessAssertion/type": null,
                  "/schemaAssertion/entity": null,
                  "/source/type": null,
                  "/sqlAssertion/entity": null,
                  "/sqlAssertion/type": null,
                  "/type": null,
                  "/volumeAssertion/entity": null,
                  "/volumeAssertion/type": null
                },
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.assertion.AssertionInfo"
                ],
                "name": "assertion",
                "default": null,
                "doc": "Acryl Only! An assertion without any searchable or relationship annotations."
              },
              {
                "Relationship": {
                  "/datasetAssertion/dataset": null,
                  "/datasetAssertion/fields/*": null,
                  "/fieldAssertion/entity": null,
                  "/freshnessAssertion/entity": null,
                  "/schemaAssertion/entity": null,
                  "/sqlAssertion/entity": null,
                  "/volumeAssertion/entity": null
                },
                "Searchable": {
                  "/customProperties/*": null,
                  "/datasetAssertion/aggregation": null,
                  "/datasetAssertion/dataset": null,
                  "/datasetAssertion/fields/*": null,
                  "/datasetAssertion/scope": null,
                  "/externalUrl": null,
                  "/fieldAssertion/entity": null,
                  "/fieldAssertion/fieldMetricAssertion/field/path": null,
                  "/fieldAssertion/fieldValuesAssertion/field/path": null,
                  "/fieldAssertion/type": null,
                  "/freshnessAssertion/entity": null,
                  "/freshnessAssertion/schedule/type": null,
                  "/freshnessAssertion/type": null,
                  "/schemaAssertion/entity": null,
                  "/source/type": null,
                  "/sqlAssertion/entity": null,
                  "/sqlAssertion/type": null,
                  "/type": null,
                  "/volumeAssertion/entity": null,
                  "/volumeAssertion/type": null
                },
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.assertion.AssertionInfo"
                ],
                "name": "baseAssertion",
                "default": null,
                "doc": "The optional AssertionInfo which contains the original/untransformed assertion that was predicted.\nThis field is used to store the original assertion that was made before the evaluation process.\nIt is optional and may not always be present in the AssertionRunEvent record.\nWhen present, it provides additional context about the original assertion that was made.\n\nAcryl Only! An assertion without any searchable or relationship annotations."
              },
              {
                "Searchable": {
                  "addToFilters": true,
                  "fieldName": "lastResultType",
                  "fieldType": "KEYWORD"
                },
                "TimeseriesField": {},
                "type": "com.linkedin.pegasus2avro.assertion.AssertionResultType",
                "name": "type",
                "doc": " The final result, e.g. either SUCCESS, FAILURE, or ERROR."
              },
              {
                "TimeseriesField": {},
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.assertion.AssertionResultSeverity"
                ],
                "name": "severity",
                "default": null,
                "doc": "The severity of a failure result. Only meaningful when type is FAILURE.\nIndicates how far the observed value deviated from expected bounds."
              },
              {
                "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",
                  "com.linkedin.pegasus2avro.assertion.AssertionResultError"
                ],
                "name": "error",
                "default": null,
                "doc": " The error object if AssertionResultType is an Error"
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.monitor.AssertionEvaluationParameters"
                ],
                "name": "parameters",
                "default": null,
                "doc": "Acryl Only! The parameters that were used for running the assertion."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.assertion.AssertionInferenceDetails"
                ],
                "name": "assertionInferenceDetails",
                "default": null,
                "doc": "The optional AssertionInferenceDetails which contains the settings used for the inferred assertion.\nThis field is used to store the settings used for the smart assertion.\nIt is optional and may not always be present in the AssertionRunEvent record.\nWhen present, it provides additional context about the settings used for the smart assertion."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.assertion.AssertionMetric"
                ],
                "name": "metric",
                "default": null,
                "doc": "Information about the metric that was sampled & used when evaluating the assertion.\n\nCurrently, this is only populated for Volume & Field Metric Assertions and used for anomaly\nlogging for Smart Assertions."
              }
            ],
            "doc": "The result of running an assertion"
          }
        ],
        "name": "result",
        "default": null,
        "doc": "Results of assertion, present if the status is COMPLETE"
      },
      {
        "type": [
          "null",
          {
            "type": "map",
            "values": "string"
          }
        ],
        "name": "runtimeContext",
        "default": null,
        "doc": "Runtime parameters of evaluation"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "BatchSpec",
            "namespace": "com.linkedin.pegasus2avro.assertion",
            "fields": [
              {
                "Searchable": {
                  "/*": {
                    "fieldType": "TEXT",
                    "queryByDefault": true
                  }
                },
                "type": {
                  "type": "map",
                  "values": "string"
                },
                "name": "customProperties",
                "default": {},
                "doc": "Custom property bag."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "nativeBatchId",
                "default": null,
                "doc": "The native identifier as specified by the system operating on the batch."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "query",
                "default": null,
                "doc": "A query that identifies a batch of data"
              },
              {
                "type": [
                  "null",
                  "int"
                ],
                "name": "limit",
                "default": null,
                "doc": "Any limit to the number of rows in the batch, if applied"
              }
            ],
            "doc": "A batch on which certain operations, e.g. data quality evaluation, is done."
          }
        ],
        "name": "batchSpec",
        "default": null,
        "doc": "Specification of the batch which this run is evaluating"
      },
      {
        "TimeseriesField": {},
        "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."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "executedQuery",
        "default": null,
        "doc": "The query (today: SQL) that the assertion runner executed for this run."
      }
    ],
    "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": "assertionActions"
    },
    "name": "AssertionActions",
    "namespace": "com.linkedin.pegasus2avro.assertion",
    "fields": [
      {
        "type": {
          "type": "array",
          "items": "com.linkedin.pegasus2avro.assertion.AssertionAction"
        },
        "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": "assertionAnalyticsRunEvent",
      "schemaVersion": 5,
      "type": "timeseries"
    },
    "name": "AssertionAnalyticsRunEvent",
    "namespace": "com.linkedin.pegasus2avro.assertion",
    "fields": [
      {
        "TimeseriesField": {},
        "type": "com.linkedin.pegasus2avro.assertion.AssertionType",
        "name": "type",
        "doc": "Type of assertion."
      },
      {
        "TimeseriesField": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "creator",
        "default": null,
        "doc": "Creator of the assertion."
      },
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldType": "URN",
            "hasValuesFieldName": "hasAsserteeDomain"
          }
        },
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "asserteeDomains",
        "default": null,
        "doc": "The Domains attached to the entity's parent Asset"
      },
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldType": "URN",
            "hasValuesFieldName": "hasAsserteeDataProduct"
          }
        },
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "asserteeDataProducts",
        "default": null,
        "doc": "The Data Products attached to the entity's parent Asset"
      },
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldType": "URN",
            "hasValuesFieldName": "hasAsserteeTags"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "asserteeTags",
        "default": null,
        "doc": "The Tags attached to the entity's parent Asset"
      },
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldType": "URN",
            "hasValuesFieldName": "hasAsserteeGlossaryTerms"
          }
        },
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "asserteeGlossaryTerms",
        "default": null,
        "doc": "The Glossary Terms attached to the entity's parent Asset"
      },
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldType": "URN",
            "hasValuesFieldName": "hasAsserteeOwners"
          }
        },
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "asserteeOwners",
        "default": null,
        "doc": "Parent Owner URN, e.g. urn:li:corpuser:ldap, urn:li:corpGroup:group_name, and urn:li:multiProduct:mp_name\n(Caveat: only corpuser is currently supported in the frontend.)"
      },
      {
        "Searchable": {
          "addToFilters": true,
          "fieldType": "URN"
        },
        "TimeseriesField": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "asserteeDataPlatform",
        "default": null,
        "doc": "Data Platform for parent"
      },
      {
        "Searchable": {
          "addToFilters": true,
          "fieldType": "URN"
        },
        "TimeseriesField": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "asserteeDataPlatformInstance",
        "default": null,
        "doc": "Instance of the parent's data platform (e.g. db instance)"
      },
      {
        "Searchable": {
          "addToFilters": true,
          "fieldType": "URN"
        },
        "TimeseriesField": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "asserteeContainer",
        "default": null,
        "doc": "The container of the parent"
      },
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldType": "URN",
            "hasValuesFieldName": "hasAsserteeSchemaFieldGlossaryTerms"
          }
        },
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "asserteeSchemaFieldGlossaryTerms",
        "default": null,
        "doc": "Only provided if the Assertion is of type 'Column'. The glossary terms associated with the target column."
      },
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldType": "URN",
            "hasValuesFieldName": "hasAsserteeSchemaFieldTags"
          }
        },
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "asserteeSchemaFieldTags",
        "default": null,
        "doc": "Only provided if the Assertion is of type 'Column'. The tags associated with the target column."
      },
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milliseconds."
      },
      {
        "type": "string",
        "name": "runId",
        "doc": " Native (platform-specific) identifier for this run"
      },
      {
        "TimeseriesField": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "asserteeUrn"
      },
      {
        "TimeseriesField": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "assertionUrn"
      },
      {
        "TimeseriesField": {},
        "type": "com.linkedin.pegasus2avro.assertion.AssertionRunStatus",
        "name": "status",
        "doc": "The status of the assertion run as per this timeseries event."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.assertion.AssertionResult"
        ],
        "name": "result",
        "default": null,
        "doc": "Results of assertion, present if the status is COMPLETE"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      }
    ],
    "doc": "An event representing the current status of evaluating an assertion on a batch.\nThis should be derrived from {@link AssertionRunEvent}.\n\nIt represents the subset of data used for analytics, and hydrates extra fields for filtering"
  },
  "com.linkedin.pegasus2avro.assertion.AssertionInfo",
  {
    "type": "record",
    "Aspect": {
      "name": "assertionInferenceAdjustmentRuleInfo",
      "schemaVersion": 1
    },
    "name": "AssertionInferenceAdjustmentRuleInfo",
    "namespace": "com.linkedin.pegasus2avro.assertion.adjustment",
    "fields": [
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "name",
        "doc": "Display name of the rule."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": {
          "type": "enum",
          "symbolDocs": {
            "DISABLED": "The rule is paused and ignored by training and evaluation.",
            "ENABLED": "The rule is actively applied during assertion-inference training and evaluation."
          },
          "name": "AssertionInferenceAdjustmentRuleMode",
          "namespace": "com.linkedin.pegasus2avro.assertion.adjustment",
          "symbols": [
            "ENABLED",
            "DISABLED"
          ],
          "doc": "The mode of an Assertion Inference Adjustment Rule."
        },
        "name": "mode",
        "default": "ENABLED",
        "doc": "The mode of the rule (ENABLED or DISABLED)."
      },
      {
        "type": {
          "type": "record",
          "name": "AssertionInferenceAdjustmentRuleFilter",
          "namespace": "com.linkedin.pegasus2avro.assertion.adjustment",
          "fields": [
            {
              "type": "com.linkedin.pegasus2avro.metadata.query.filter.Filter",
              "name": "filter",
              "doc": "The structured filter used to match entities the adjustment rule applies to."
            },
            {
              "type": [
                "null",
                "string"
              ],
              "name": "json",
              "default": null,
              "doc": "The serialized JSON representation of the filter, used for UI rendering.\nThe UI builds a logical predicate tree that is flattened into orFilters for GraphQL.\nThis string preserves the original tree structure so the UI can restore it."
            }
          ],
          "doc": "The filter criteria used to match entities for an Assertion Inference Adjustment Rule."
        },
        "name": "entityFilter",
        "doc": "The filter criteria used to match entities this rule applies to."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "AssertionInferenceExclusionConfig",
            "namespace": "com.linkedin.pegasus2avro.assertion.adjustment",
            "fields": [
              {
                "Searchable": {
                  "/*/fixedRange/endTimeMillis": {
                    "fieldName": "assertionInferenceFixedExclusionWindowEndTimes",
                    "fieldType": "DATETIME",
                    "queryByDefault": false
                  },
                  "/*/fixedRange/startTimeMillis": {
                    "fieldName": "assertionInferenceFixedExclusionWindowStartTimes",
                    "fieldType": "DATETIME",
                    "queryByDefault": false
                  },
                  "/*/holiday/name": {
                    "fieldName": "assertionInferenceHolidayExclusionWindowNames",
                    "fieldType": "KEYWORD",
                    "queryByDefault": false
                  },
                  "/*/holiday/region": {
                    "fieldName": "assertionInferenceHolidayExclusionWindowRegions",
                    "fieldType": "KEYWORD",
                    "queryByDefault": false
                  },
                  "/*/holiday/timezone": {
                    "fieldName": "assertionInferenceHolidayExclusionWindowTimezones",
                    "fieldType": "KEYWORD",
                    "queryByDefault": false
                  },
                  "/*/type": {
                    "fieldName": "assertionInferenceExclusionWindowTypes",
                    "fieldType": "KEYWORD",
                    "queryByDefault": false
                  },
                  "/*/weekly/daysOfWeek/*": {
                    "fieldName": "assertionInferenceWeeklyExclusionWindowDaysOfWeek",
                    "fieldType": "KEYWORD",
                    "queryByDefault": false
                  },
                  "/*/weekly/endTime": {
                    "fieldName": "assertionInferenceWeeklyExclusionWindowEndTimes",
                    "fieldType": "KEYWORD",
                    "queryByDefault": false
                  },
                  "/*/weekly/startTime": {
                    "fieldName": "assertionInferenceWeeklyExclusionWindowStartTimes",
                    "fieldType": "KEYWORD",
                    "queryByDefault": false
                  },
                  "/*/weekly/timezone": {
                    "fieldName": "assertionInferenceWeeklyExclusionWindowTimezones",
                    "fieldType": "KEYWORD",
                    "queryByDefault": false
                  }
                },
                "type": {
                  "type": "array",
                  "items": "com.linkedin.pegasus2avro.assertion.AssertionExclusionWindow"
                },
                "name": "exclusionWindows",
                "default": [],
                "doc": "The set of exclusion windows contributed by this rule."
              }
            ],
            "doc": "Configuration for exclusion windows applied by an Assertion Inference Adjustment Rule.\nWhen the rule's filter matches a dataset, these windows are unioned with any\nper-monitor exclusion windows at both training and evaluation time."
          }
        ],
        "name": "exclusionConfig",
        "default": null,
        "doc": "Optional exclusion-window configuration contributed by this rule.\nWhen set, its windows are unioned with per-monitor windows\nat training and evaluation time."
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "doc": "Audit stamp capturing when and by whom this rule was created."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "updated",
        "default": null,
        "doc": "Audit stamp capturing when and by whom this rule was last updated."
      }
    ],
    "doc": "Information about an Assertion Inference Adjustment Rule.\nAn Assertion Inference Adjustment Rule globally adjusts assertion-inference\ntraining and evaluation for entities matching a filter \u2014 for example, by contributing\nexclusion windows that cover known maintenance periods or holidays. Additional\nsibling configs (e.g. changepoints) may be added in the future."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "assertionAssignmentRuleInfo",
      "schemaVersion": 3
    },
    "name": "AssertionAssignmentRuleInfo",
    "namespace": "com.linkedin.pegasus2avro.assertion.rule",
    "fields": [
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "name",
        "doc": "Display name of the rule."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": {
          "type": "enum",
          "symbolDocs": {
            "DISABLED": "The rule is paused and not evaluating.",
            "ENABLED": "The rule is actively evaluating and assigning assertions."
          },
          "name": "AssertionAssignmentRuleMode",
          "namespace": "com.linkedin.pegasus2avro.assertion.rule",
          "symbols": [
            "ENABLED",
            "DISABLED"
          ],
          "doc": "The mode of an Assertion Assignment Rule."
        },
        "name": "mode",
        "default": "ENABLED",
        "doc": "The mode of the rule (ENABLED or DISABLED)."
      },
      {
        "type": {
          "type": "record",
          "name": "AssertionAssignmentRuleFilter",
          "namespace": "com.linkedin.pegasus2avro.assertion.rule",
          "fields": [
            {
              "type": "com.linkedin.pegasus2avro.metadata.query.filter.Filter",
              "name": "filter",
              "doc": "The structured filter used to match entities for assertion assignment."
            },
            {
              "type": [
                "null",
                "string"
              ],
              "name": "json",
              "default": null,
              "doc": "The serialized JSON representation of the filter, used for UI rendering.\nThe UI builds a logical predicate tree that is flattened into orFilters for GraphQL.\nThis string preserves the original tree structure so the UI can restore it."
            }
          ],
          "doc": "The filter criteria used to match entities for an Assertion Assignment Rule."
        },
        "name": "entityFilter",
        "doc": "The filter criteria used to match entities for assertion assignment."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "FreshnessAssertionAssignmentRuleConfig",
            "namespace": "com.linkedin.pegasus2avro.assertion.rule",
            "fields": [
              {
                "type": "boolean",
                "name": "enabled",
                "default": true,
                "doc": "Whether freshness assertion assignment is enabled."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.monitor.DatasetFreshnessAssertionParameters"
                ],
                "name": "preferredEvaluationParameters",
                "default": null,
                "doc": "Preferred parameters for freshness evaluation (source type, field spec, audit log spec, etc.)."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": "com.linkedin.pegasus2avro.assertion.AssertionAction"
                  }
                ],
                "name": "onSuccess",
                "default": null,
                "doc": "Actions to take when the assertion succeeds."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": "com.linkedin.pegasus2avro.assertion.AssertionAction"
                  }
                ],
                "name": "onFailure",
                "default": null,
                "doc": "Actions to take when the assertion fails."
              }
            ],
            "doc": "Configuration for freshness assertions in an Assertion Assignment Rule."
          }
        ],
        "name": "freshnessConfig",
        "default": null,
        "doc": "Configuration for freshness assertions."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "VolumeAssertionAssignmentRuleConfig",
            "namespace": "com.linkedin.pegasus2avro.assertion.rule",
            "fields": [
              {
                "type": "boolean",
                "name": "enabled",
                "default": true,
                "doc": "Whether volume assertion assignment is enabled."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.monitor.DatasetVolumeAssertionParameters"
                ],
                "name": "preferredEvaluationParameters",
                "default": null,
                "doc": "Preferred parameters for volume evaluation (source type, time bucketing strategy, etc.)."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": "com.linkedin.pegasus2avro.assertion.AssertionAction"
                  }
                ],
                "name": "onSuccess",
                "default": null,
                "doc": "Actions to take when the assertion succeeds."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": "com.linkedin.pegasus2avro.assertion.AssertionAction"
                  }
                ],
                "name": "onFailure",
                "default": null,
                "doc": "Actions to take when the assertion fails."
              }
            ],
            "doc": "Configuration for volume assertions in an Assertion Assignment Rule."
          }
        ],
        "name": "volumeConfig",
        "default": null,
        "doc": "Configuration for volume assertions."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "SubscriptionAssignmentRuleConfig",
            "namespace": "com.linkedin.pegasus2avro.assertion.rule",
            "fields": [
              {
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": {
                      "type": "record",
                      "name": "SubscriberAssignmentConfig",
                      "namespace": "com.linkedin.pegasus2avro.assertion.rule",
                      "fields": [
                        {
                          "java": {
                            "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                          },
                          "Urn": "Urn",
                          "type": "string",
                          "name": "subscriberUrn",
                          "doc": "The subscriber URN (corpuser or corpGroup)."
                        },
                        {
                          "type": {
                            "type": "array",
                            "items": "com.linkedin.pegasus2avro.subscription.EntityChangeType"
                          },
                          "name": "entityChangeTypes",
                          "doc": "Entity change types that trigger notifications for this subscriber."
                        }
                      ],
                      "doc": "Per-subscriber configuration within an Assertion Assignment Rule."
                    }
                  }
                ],
                "name": "subscriberConfigs",
                "default": null,
                "doc": "Per-subscriber notification configuration."
              }
            ],
            "doc": "Configuration for subscriptions in an Assertion Assignment Rule."
          }
        ],
        "name": "subscriptionConfig",
        "default": null,
        "doc": "Configuration for subscriptions."
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "createdTime",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "created",
        "default": null,
        "doc": "Audit stamp capturing when and by whom this rule was created."
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "updatedTime",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "updated",
        "default": null,
        "doc": "Audit stamp capturing when and by whom this rule was last updated."
      }
    ],
    "doc": "Information about an Assertion Assignment Rule.\nAn Assertion Assignment Rule automatically assigns assertions and subscriptions\nto entities matching a filter."
  },
  {
    "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"
  },
  "com.linkedin.pegasus2avro.ml.metadata.MLFeatureProperties",
  {
    "type": "record",
    "Aspect": {
      "name": "mlTrainingRunProperties"
    },
    "name": "MLTrainingRunProperties",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.url.Url",
          "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "externalUrl",
        "default": null,
        "doc": "URL where the reference exist"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "id",
        "default": null,
        "doc": "Run Id of the ML Training Run"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "outputUrls",
        "default": null,
        "doc": "List of URLs for the Outputs of the ML Training Run"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.ml.metadata.MLHyperParam"
          }
        ],
        "name": "hyperParams",
        "default": null,
        "doc": "Hyperparameters of the ML Training Run"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.ml.metadata.MLMetric"
          }
        ],
        "name": "trainingMetrics",
        "default": null,
        "doc": "Metrics of the ML Training Run"
      }
    ],
    "doc": "The inputs and outputs of this training run"
  },
  "com.linkedin.pegasus2avro.ml.metadata.MLFeatureTableProperties",
  "com.linkedin.pegasus2avro.ml.metadata.MLModelDeploymentProperties",
  {
    "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"
  },
  "com.linkedin.pegasus2avro.ml.metadata.Metrics",
  "com.linkedin.pegasus2avro.ml.metadata.MLModelProperties",
  {
    "type": "record",
    "Aspect": {
      "name": "editableMlPrimaryKeyProperties"
    },
    "name": "EditableMLPrimaryKeyProperties",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "Searchable": {
          "fieldName": "editedDescription",
          "fieldType": "TEXT"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Documentation of the MLPrimaryKey"
      }
    ],
    "doc": "Properties associated with a MLPrimaryKey editable from the UI"
  },
  "com.linkedin.pegasus2avro.ml.metadata.CaveatsAndRecommendations",
  "com.linkedin.pegasus2avro.ml.metadata.EthicalConsiderations",
  "com.linkedin.pegasus2avro.ml.metadata.MLMetric",
  "com.linkedin.pegasus2avro.ml.metadata.MLModelFactorPrompts",
  "com.linkedin.pegasus2avro.ml.metadata.MLHyperParam",
  "com.linkedin.pegasus2avro.ml.metadata.SourceCode",
  {
    "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"
  },
  "com.linkedin.pegasus2avro.ml.metadata.MLPrimaryKeyProperties",
  {
    "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"
  },
  "com.linkedin.pegasus2avro.ml.metadata.EvaluationData",
  "com.linkedin.pegasus2avro.ml.metadata.QuantitativeAnalyses",
  "com.linkedin.pegasus2avro.ml.metadata.MLModelGroupProperties",
  "com.linkedin.pegasus2avro.ml.metadata.IntendedUse",
  {
    "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"
  },
  "com.linkedin.pegasus2avro.ml.metadata.TrainingData",
  {
    "type": "record",
    "Aspect": {
      "name": "oauthAuthorizationServerKey",
      "keyForEntity": "oauthAuthorizationServer",
      "entityCategory": "core",
      "entityAspects": [
        "oauthAuthorizationServerProperties",
        "ownership",
        "status"
      ],
      "entityDoc": "An OAuth Authorization Server that DataHub can use to obtain tokens for calling external APIs."
    },
    "name": "OAuthAuthorizationServerKey",
    "namespace": "com.linkedin.pegasus2avro.oauth",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "Unique identifier for this authorization server.\nExamples: glean, snowflake, github"
      }
    ],
    "doc": "Key for an OAuth Authorization Server entity.\n\nAn OAuth Authorization Server represents an external OAuth provider\nthat DataHub can use to obtain tokens for calling external APIs.\nThis is for OUTBOUND OAuth (DataHub as client), not INBOUND auth\n(users authenticating to DataHub)."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "oauthAuthorizationServerProperties"
    },
    "name": "OAuthAuthorizationServerProperties",
    "namespace": "com.linkedin.pegasus2avro.oauth",
    "fields": [
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "displayName",
        "doc": "Display name shown in UI.\nExamples: Glean, Snowflake via Okta, Internal Tools API"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Description of what this authorization server provides access to."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "clientId",
        "default": null,
        "doc": "OAuth client ID (public, safe to expose in UI)."
      },
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "clientSecretUrn",
        "default": null,
        "doc": "URN of DataHubSecret containing OAuth client secret.\nNever stored as plain string - always encrypted."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "authorizationUrl",
        "default": null,
        "doc": "OAuth authorization endpoint URL.\nExample: https://accounts.google.com/o/oauth2/v2/auth"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "tokenUrl",
        "default": null,
        "doc": "OAuth token endpoint URL.\nExample: https://oauth2.googleapis.com/token"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "scopes",
        "default": null,
        "doc": "Default OAuth scopes to request.\nStored as array for UI chip rendering and scope merging."
      },
      {
        "type": {
          "type": "enum",
          "symbolDocs": {
            "BASIC": "HTTP Basic Auth: client_id:client_secret in Authorization header.",
            "CUSTOM": "Custom auth scheme: uses authScheme field to format the Authorization header.\nFormat: Authorization: {authScheme} {client_secret}\nExample: Token for dbt Cloud produces Authorization: Token {client_secret}",
            "NONE": "No client authentication (for public clients).",
            "POST_BODY": "Form POST body: client_id and client_secret as form parameters."
          },
          "name": "TokenAuthMethod",
          "namespace": "com.linkedin.pegasus2avro.oauth",
          "symbols": [
            "BASIC",
            "POST_BODY",
            "NONE",
            "CUSTOM"
          ]
        },
        "name": "tokenAuthMethod",
        "default": "POST_BODY",
        "doc": "How to authenticate at the token endpoint.\n- BASIC: client_id:client_secret in Authorization header\n- POST_BODY: client_id and client_secret in request body\n- NONE: No client authentication (public clients)\n- CUSTOM: Custom auth scheme using authScheme field (e.g., \"Token\" for dbt Cloud)"
      },
      {
        "type": [
          "null",
          {
            "type": "map",
            "values": "string"
          }
        ],
        "name": "additionalTokenParams",
        "default": null,
        "doc": "Additional parameters for token requests.\nExamples: Auth0 audience, Azure AD resource"
      },
      {
        "type": [
          "null",
          {
            "type": "map",
            "values": "string"
          }
        ],
        "name": "additionalAuthParams",
        "default": null,
        "doc": "Additional parameters for authorization URL.\nExamples: prompt=consent, tenant=my-org"
      },
      {
        "type": {
          "type": "enum",
          "symbolDocs": {
            "HEADER": "Send credential in HTTP header.",
            "QUERY_PARAM": "Send credential as query parameter."
          },
          "name": "AuthLocation",
          "namespace": "com.linkedin.pegasus2avro.oauth",
          "symbols": [
            "HEADER",
            "QUERY_PARAM"
          ]
        },
        "name": "authLocation",
        "default": "HEADER",
        "doc": "Where to inject the credential in HTTP requests."
      },
      {
        "type": "string",
        "name": "authHeaderName",
        "default": "Authorization",
        "doc": "For HEADER: which header name.\nDefault: Authorization"
      },
      {
        "type": [
          "string",
          "null"
        ],
        "name": "authScheme",
        "default": "Bearer",
        "doc": "For HEADER: scheme prefix before the token.\nDefault: Bearer (produces Authorization: Bearer TOKEN).\nSet to empty string for raw token (e.g., X-API-Key: TOKEN)."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "authQueryParam",
        "default": null,
        "doc": "For QUERY_PARAM: parameter name.\nExample: access_token produces ?access_token=TOKEN"
      }
    ],
    "doc": "Properties of an OAuth Authorization Server.\n\nThis represents an authorization server that DataHub can use to obtain tokens\nfor calling external APIs (OUTBOUND OAuth). It may be:\n- The service's own OAuth server (e.g., Glean, GitHub)\n- A third-party IDP configured for a service (e.g., Okta, Azure AD)\n\nThis entity contains OAuth configuration (how to get tokens) and auth injection\nsettings (how to use tokens). Actual credentials are stored separately in\nDataHubConnection entities.\n\nFor API key services, set supportedCredentialTypes to [API_KEY]. The auth injection\nsettings will be used, but OAuth config fields are optional."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubOAuthSessionInfo"
    },
    "name": "DataHubOAuthSessionInfo",
    "namespace": "com.linkedin.pegasus2avro.oauth.session",
    "fields": [
      {
        "type": "string",
        "name": "clientId",
        "doc": "The client ID of the OAuth2 registered client that owns this session."
      },
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "actorUrn",
        "doc": "The actor (user or service) on whose behalf this session was created."
      },
      {
        "type": "long",
        "name": "issuedAt",
        "doc": "When this session was created."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "expiresAt",
        "default": null,
        "doc": "When this session expires, if bounded."
      }
    ],
    "doc": "Metadata for a persisted OAuth2 session issued by the GMS authorization server.\nOne session entity exists per login; the refresh token JWT carries a sessionId claim\npointing back to this entity's key."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubOAuthClientInfo",
      "schemaVersion": 3
    },
    "name": "DataHubOAuthClientInfo",
    "namespace": "com.linkedin.pegasus2avro.oauth.client",
    "fields": [
      {
        "type": {
          "type": "enum",
          "symbolDocs": {
            "CONFIDENTIAL": "Confidential client \u2014 authenticates with a client secret.\nSuitable for server-side applications that can securely store credentials.",
            "PUBLIC": "Public client \u2014 cannot securely store a client secret.\nMust use PKCE for authorization code flow. No client secret is issued.\nSuitable for SPAs, native apps, and CLI tools."
          },
          "name": "OAuthClientType",
          "namespace": "com.linkedin.pegasus2avro.oauth.client",
          "symbols": [
            "CONFIDENTIAL",
            "PUBLIC"
          ],
          "doc": "Whether an OAuth2 client is confidential (has a secret) or public (relies on PKCE only)."
        },
        "name": "clientType",
        "default": "CONFIDENTIAL",
        "doc": "Whether this client is confidential (has a secret) or public (PKCE only).\nDefaults to CONFIDENTIAL for backward compatibility."
      },
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "name",
        "doc": "Human-readable display name for the client."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Optional description of the client's purpose."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "encryptedSecret",
        "default": null,
        "doc": "AES-encrypted client secret via SecretService \u2014 same storage pattern as\ndataHubSecretValue.value. Protected by category:internal entity access\nrestrictions + encryption at rest. Never returned by OAuthClientController."
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "redirectUris",
        "default": null,
        "doc": "Allowed redirect URIs (for authorization_code flow)."
      },
      {
        "type": "string",
        "name": "scopes",
        "doc": "Comma-separated list of granted OAuth scopes."
      },
      {
        "type": "string",
        "name": "grantTypes",
        "doc": "Comma-separated list of enabled grant types.\nValues: client_credentials, authorization_code, refresh_token"
      },
      {
        "Searchable": {
          "fieldType": "URN"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "ownerUrn",
        "doc": "URN of the actor (user) who created this client."
      },
      {
        "Searchable": {
          "fieldType": "COUNT",
          "queryByDefault": false
        },
        "type": "long",
        "name": "createdAt",
        "doc": "When this client was created."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "softwareId",
        "default": null,
        "doc": "RFC 7591 software_id \u2014 opaque identifier asserted by the client software.\nUsed to correlate registrations across instances of the same software."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "softwareVersion",
        "default": null,
        "doc": "RFC 7591 software_version \u2014 version of the software identified by softwareId."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "jwksUri",
        "default": null,
        "doc": "RFC 7591 jwks_uri \u2014 URL where the client publishes its JSON Web Key Set,\nused for private_key_jwt token endpoint auth."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "jwks",
        "default": null,
        "doc": "RFC 7591 jwks \u2014 inline JWKS as a serialized JSON string.\nMutually exclusive with jwksUri."
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "contacts",
        "default": null,
        "doc": "RFC 7591 contacts \u2014 array of email addresses for client administrators."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "clientUri",
        "default": null,
        "doc": "RFC 7591 client_uri \u2014 URL of the client's home page."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "logoUri",
        "default": null,
        "doc": "RFC 7591 logo_uri \u2014 URL of the client's logo."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "policyUri",
        "default": null,
        "doc": "RFC 7591 policy_uri \u2014 URL of the client's privacy policy."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "tosUri",
        "default": null,
        "doc": "RFC 7591 tos_uri \u2014 URL of the client's terms of service."
      },
      {
        "type": [
          "null",
          {
            "type": "enum",
            "symbolDocs": {
              "CLIENT_SECRET_BASIC": "Client secret sent via HTTP Basic auth header.",
              "CLIENT_SECRET_JWT": "Client authenticates with an HMAC-signed JWT assertion derived from the secret.",
              "CLIENT_SECRET_POST": "Client secret sent in the request body.",
              "NONE": "Public client \u2014 no authentication. PKCE is required for authorization_code.",
              "PRIVATE_KEY_JWT": "Client authenticates with an asymmetric-key JWT assertion verified via jwks/jwksUri."
            },
            "name": "TokenEndpointAuthMethod",
            "namespace": "com.linkedin.pegasus2avro.oauth.client",
            "symbols": [
              "NONE",
              "CLIENT_SECRET_BASIC",
              "CLIENT_SECRET_POST",
              "CLIENT_SECRET_JWT",
              "PRIVATE_KEY_JWT"
            ],
            "doc": "Client authentication method used at the token endpoint, per RFC 7591 \u00a72 and OIDC Core \u00a79.\nDetermines how a registered client proves its identity when calling /token."
          }
        ],
        "name": "tokenEndpointAuthMethod",
        "default": null,
        "doc": "Client authentication method used at the token endpoint.\nDefaults to CLIENT_SECRET_BASIC for confidential clients and NONE for public clients."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "registrationAccessTokenHash",
        "default": null,
        "doc": "SHA-256 hash of the registration access token (RFC 7592). The raw token is returned\nto the client exactly once at registration; only this hash is persisted for later\nvalidation against GET/PUT/DELETE on the registration management endpoint."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "clientIdIssuedAt",
        "default": null,
        "doc": "RFC 7591 client_id_issued_at \u2014 Unix epoch when the client_id was issued.\nFor DCR-registered clients this matches createdAt; for admin-created clients it may be unset."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "clientSecretExpiresAt",
        "default": null,
        "doc": "RFC 7591 client_secret_expires_at \u2014 Unix epoch when the client_secret expires,\nor 0 to indicate no expiry. Unset means no secret (public client)."
      },
      {
        "Searchable": {
          "fieldType": "BOOLEAN"
        },
        "type": "boolean",
        "name": "dcrRegistered",
        "default": false,
        "doc": "Whether this client was created via Dynamic Client Registration (RFC 7591) rather than\nthe admin OAuthClientController. Used to differentiate policy and audit handling."
      },
      {
        "type": [
          "null",
          "int"
        ],
        "name": "accessTokenTimeToLiveSeconds",
        "default": null,
        "doc": "Per-client override for the access token TTL, in seconds. When set, must be in\n[1, 3600] \u2014 i.e. the registry-wide 1h max is the ceiling, this knob can only\nshorten it. When unset, the registry default of 3600s applies. The cap means\nthis can never extend a token beyond the policy maximum; it exists so operators\ncan register short-lived clients (e.g. CI integrations) and to make\nexpiry-and-refresh behaviour testable in smoke tests without a 1-hour wait."
      },
      {
        "Searchable": {
          "fieldType": "COUNT",
          "queryByDefault": false
        },
        "type": [
          "null",
          "long"
        ],
        "name": "lastTokenIssuedAt",
        "default": null,
        "doc": "Unix epoch ms of the most recent successful token issuance for this client.\nUpdated opportunistically by DataHubOAuth2AuthorizationService.save() with a\nper-client debounce so heavy use stays bounded to ~1 MCP/day on this aspect.\nUsed by oauth_client_cleanup to switch GC from age-based to inactivity-based:\nabandoned registrations are reaped while active clients are preserved\nindefinitely. Searchable so SREs can query \"clients with no activity in N days\"."
      }
    ],
    "doc": "Metadata for a DataHub OAuth2 registered client (used by the GMS authorization server).\nThe client secret is stored encrypted via SecretService and never returned plaintext."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubSecretValue"
    },
    "name": "DataHubSecretValue",
    "namespace": "com.linkedin.pegasus2avro.secret",
    "fields": [
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "name",
        "doc": "The display name for the secret"
      },
      {
        "type": "string",
        "name": "value",
        "doc": "The AES-encrypted value of the DataHub secret."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Description of the secret"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "createdTime",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "created",
        "default": null,
        "doc": "Created Audit stamp"
      }
    ],
    "doc": "The value of a DataHub Secret"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubAccessTokenInfo"
    },
    "name": "DataHubAccessTokenInfo",
    "namespace": "com.linkedin.pegasus2avro.access.token",
    "fields": [
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "name",
        "doc": "User defined name for the access token if defined."
      },
      {
        "Searchable": {
          "fieldType": "URN"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "actorUrn",
        "doc": "Urn of the actor to which this access token belongs to."
      },
      {
        "Searchable": {
          "fieldType": "URN"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "ownerUrn",
        "doc": "Urn of the actor which created this access token."
      },
      {
        "Searchable": {
          "fieldType": "COUNT",
          "queryByDefault": false
        },
        "type": "long",
        "name": "createdAt",
        "doc": "When the token was created."
      },
      {
        "Searchable": {
          "fieldType": "COUNT",
          "queryByDefault": false
        },
        "type": [
          "null",
          "long"
        ],
        "name": "expiresAt",
        "default": null,
        "doc": "When the token expires."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Description of the token if defined."
      }
    ],
    "doc": "Information about a DataHub Access Token"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "testResults"
    },
    "name": "TestResults",
    "namespace": "com.linkedin.pegasus2avro.test",
    "fields": [
      {
        "Relationship": {
          "/*/test": {
            "entityTypes": [
              "test"
            ],
            "name": "IsFailing"
          }
        },
        "Searchable": {
          "/*/test": {
            "fieldName": "failingTests",
            "fieldType": "URN",
            "hasValuesFieldName": "hasFailingTests",
            "queryByDefault": false
          },
          "/*/testDefinitionMd5": {
            "fieldName": "failingTestDefinitionMd5",
            "fieldType": "KEYWORD",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "TestResult",
            "namespace": "com.linkedin.pegasus2avro.test",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "test",
                "doc": "The urn of the test"
              },
              {
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "FAILURE": " The Test Failed",
                    "SUCCESS": " The Test Succeeded"
                  },
                  "name": "TestResultType",
                  "namespace": "com.linkedin.pegasus2avro.test",
                  "symbols": [
                    "SUCCESS",
                    "FAILURE"
                  ]
                },
                "name": "type",
                "doc": "The type of the result"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "testDefinitionMd5",
                "default": null,
                "doc": "The md5 of the test definition that was used to compute this result.\nSee TestInfo.testDefinition.md5 for more information."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.common.AuditStamp"
                ],
                "name": "lastComputed",
                "default": null,
                "doc": "The audit stamp of when the result was computed, including the actor who computed it."
              }
            ],
            "doc": "Information about a Test Result"
          }
        },
        "name": "failing",
        "doc": "Results that are failing"
      },
      {
        "Relationship": {
          "/*/test": {
            "entityTypes": [
              "test"
            ],
            "name": "IsPassing"
          }
        },
        "Searchable": {
          "/*/test": {
            "fieldName": "passingTests",
            "fieldType": "URN",
            "hasValuesFieldName": "hasPassingTests",
            "queryByDefault": false
          },
          "/*/testDefinitionMd5": {
            "fieldName": "passingTestDefinitionMd5",
            "fieldType": "KEYWORD",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": "com.linkedin.pegasus2avro.test.TestResult"
        },
        "name": "passing",
        "doc": "Results that are passing"
      }
    ],
    "doc": "Information about a Test Result"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "batchTestRunEvent",
      "type": "timeseries"
    },
    "name": "BatchTestRunEvent",
    "namespace": "com.linkedin.pegasus2avro.test",
    "fields": [
      {
        "Searchable": {
          "fieldName": "lastCompletedTime",
          "fieldType": "DATETIME"
        },
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "Searchable": {
          "fieldName": "lastRunId",
          "fieldType": "KEYWORD"
        },
        "TimeseriesField": {},
        "type": [
          "null",
          "string"
        ],
        "name": "runId",
        "default": null,
        "doc": "Identifier for the test engine run that produced this event."
      },
      {
        "TimeseriesField": {},
        "type": {
          "type": "enum",
          "symbolDocs": {
            "COMPLETE": "The Test Run has completed",
            "RUNNING": "The Test is currently in progress"
          },
          "name": "BatchTestRunStatus",
          "namespace": "com.linkedin.pegasus2avro.test",
          "symbols": [
            "RUNNING",
            "COMPLETE"
          ]
        },
        "name": "status",
        "doc": "The status of the Test run as per this timeseries event."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "BatchTestRunResult",
            "namespace": "com.linkedin.pegasus2avro.test",
            "fields": [
              {
                "type": "long",
                "name": "passingCount",
                "doc": "Number of assets that were passing the test."
              },
              {
                "type": "long",
                "name": "failingCount",
                "doc": "Number of assets that were failing the test."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "testDefinition",
                "default": null,
                "doc": "Test definition that was used to run the test."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "TestReport",
                    "namespace": "com.linkedin.pegasus2avro.test",
                    "fields": [
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "TestActionsReport",
                            "namespace": "com.linkedin.pegasus2avro.test",
                            "fields": [
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "array",
                                    "items": {
                                      "type": "record",
                                      "name": "TestActionsError",
                                      "namespace": "com.linkedin.pegasus2avro.test",
                                      "fields": [
                                        {
                                          "type": "string",
                                          "name": "actionType",
                                          "doc": "The type of action being taken in this test"
                                        },
                                        {
                                          "java": {
                                            "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                          },
                                          "Urn": "Urn",
                                          "type": [
                                            "null",
                                            "string"
                                          ],
                                          "name": "urn",
                                          "default": null,
                                          "doc": "The asset urn related to this error"
                                        },
                                        {
                                          "type": [
                                            "null",
                                            "string"
                                          ],
                                          "name": "message",
                                          "default": null,
                                          "doc": "Any additional info about this error"
                                        }
                                      ],
                                      "doc": "Error related to the actions applied in this test"
                                    }
                                  }
                                ],
                                "name": "errors",
                                "default": null,
                                "doc": "Errors related to the actions applied in this test"
                              },
                              {
                                "type": [
                                  "null",
                                  "long"
                                ],
                                "name": "totalEntityCount",
                                "default": null,
                                "doc": "The total number of entities that are affected by the actions of this test"
                              },
                              {
                                "type": [
                                  "null",
                                  "long"
                                ],
                                "name": "processedEntityCount",
                                "default": null,
                                "doc": "The number of entities that have already been acted upon by this test automation"
                              }
                            ],
                            "doc": "Report related to the actions applied in this test"
                          }
                        ],
                        "name": "actions",
                        "default": null,
                        "doc": "Report related to the actions applied in this test"
                      }
                    ]
                  }
                ],
                "name": "report",
                "default": null,
                "doc": "Reporting information about the run event of this metadata test"
              }
            ],
            "doc": "The result of running a batch metadata test"
          }
        ],
        "name": "result",
        "default": null,
        "doc": "Results of test, present if the status is COMPLETE"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      }
    ],
    "doc": "An event representing the current status of evaluating a batch metadata test (run offline)"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "testInfo"
    },
    "name": "TestInfo",
    "namespace": "com.linkedin.pegasus2avro.test",
    "fields": [
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "name",
        "doc": "The name of the test"
      },
      {
        "Searchable": {
          "addToFilters": true,
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "category",
        "doc": "Category of the test - Operational, Governance, etc."
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "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"
            },
            {
              "type": [
                "null",
                "string"
              ],
              "name": "md5",
              "default": null,
              "doc": "MD5 hash of the test definition.\nComputed by the server.\nUsed to stamp test results accurately.\nSee TestResult for more details."
            },
            {
              "type": [
                "null",
                "string"
              ],
              "name": "onQuery",
              "default": null,
              "doc": "Optional search query to execute to get the assets this test applies to.\nThis only works with elastic search test executor and when evaluating a single test."
            }
          ]
        },
        "name": "definition",
        "doc": "Configuration for the Test"
      },
      {
        "Searchable": {
          "fieldType": "DATETIME"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "lastUpdatedTimestamp",
        "default": null,
        "doc": "Timestamp when the test was last updated"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "createdTime",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "created",
        "default": null,
        "doc": "Created Audit stamp"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "lastUpdatedTime",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "lastUpdated",
        "default": null,
        "doc": "Created Audit stamp"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "TestStatus",
            "namespace": "com.linkedin.pegasus2avro.test",
            "fields": [
              {
                "Searchable": {},
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "ACTIVE": "The test is running on a schedule in the default running mode.",
                    "INACTIVE": "The test is paused, disabled, not running."
                  },
                  "name": "TestMode",
                  "namespace": "com.linkedin.pegasus2avro.test",
                  "symbols": [
                    "ACTIVE",
                    "INACTIVE"
                  ]
                },
                "name": "mode",
                "doc": "The evaluation mode of the Metadata Test."
              }
            ],
            "doc": "The status of a Metadata Test"
          }
        ],
        "name": "status",
        "default": null,
        "doc": "The current status of the Metadata Test, e.g. whether it is actively running."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "TestSource",
            "namespace": "com.linkedin.pegasus2avro.test",
            "fields": [
              {
                "Searchable": {
                  "fieldName": "sourceType"
                },
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "ASSERTION_ASSIGNMENT_RULE": "The test was system-generated by an Assertion Assignment Rule.",
                    "BULK_FORM_SUBMISSION": "The test was system-generated to complete a bulk form submission task",
                    "FORMS": "The test was system-generated by the system for the FORMs feature.",
                    "FORM_PROMPT": "The test was system-generated by the system for the FORMs feature to test\nfor form prompt completion."
                  },
                  "name": "TestSourceType",
                  "namespace": "com.linkedin.pegasus2avro.test",
                  "symbols": [
                    "FORMS",
                    "BULK_FORM_SUBMISSION",
                    "FORM_PROMPT",
                    "ASSERTION_ASSIGNMENT_RULE"
                  ]
                },
                "name": "type",
                "doc": "The source type of the metadata test"
              },
              {
                "Searchable": {
                  "fieldType": "URN"
                },
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": [
                  "null",
                  "string"
                ],
                "name": "sourceEntity",
                "default": null,
                "doc": "An optional source 'entity' that is responsible for this test.\n\nThis is currently only used for keeping track of the Form which owns a set of metadata tests."
              }
            ],
            "doc": "The source of a metadata test"
          }
        ],
        "name": "source",
        "default": null,
        "doc": "The source of the metadata test, e.g. whether the test is user generated or system generated."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "TestSchedule",
            "namespace": "com.linkedin.pegasus2avro.test",
            "fields": [
              {
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "DAILY": "This test runs once a day",
                    "NONE": "This test does not run on a schedule"
                  },
                  "name": "TestInterval",
                  "namespace": "com.linkedin.pegasus2avro.test",
                  "symbols": [
                    "DAILY",
                    "NONE"
                  ]
                },
                "name": "interval",
                "default": "DAILY",
                "doc": "The interval at which this metadata test is scheduled"
              }
            ],
            "doc": "The result of running a batch metadata test"
          }
        ],
        "name": "schedule",
        "default": null,
        "doc": "Information about the schedule at which this test runs"
      }
    ],
    "doc": "Information about a DataHub Test"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubRemoteExecutorStatus"
    },
    "name": "RemoteExecutorStatus",
    "namespace": "com.linkedin.pegasus2avro.executor",
    "fields": [
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "executorPoolId",
        "doc": "References the 'id' defined in RemoteExecutorPoolKey"
      },
      {
        "type": "string",
        "name": "executorReleaseVersion",
        "doc": " Release Version (Tag) embedded into remote executor image"
      },
      {
        "type": "string",
        "name": "executorAddress",
        "doc": " IP address of the host where remote executor is running"
      },
      {
        "type": "string",
        "name": "executorHostname",
        "doc": "Hostname of the host where remote executor is running"
      },
      {
        "type": "float",
        "name": "executorUptime",
        "doc": "Uptime of the remote executor master process"
      },
      {
        "Searchable": {
          "fieldType": "BOOLEAN"
        },
        "type": "boolean",
        "name": "executorExpired",
        "default": false,
        "doc": "Flag indicating whether remote executor status record is stale.\nThis means executor no longer sends heartbeats and considered dead."
      },
      {
        "type": "boolean",
        "name": "executorStopped",
        "default": false,
        "doc": "Flag indicating whether remote executor is stopped, and properly reported its termination."
      },
      {
        "type": "boolean",
        "name": "executorEmbedded",
        "default": false,
        "doc": "Flag indicating whether remote executor is embedded into the coordinator pod"
      },
      {
        "type": "boolean",
        "name": "executorInternal",
        "default": false,
        "doc": "Flag indicating whether remote executor is Acryl managed executor"
      },
      {
        "type": "boolean",
        "name": "logDeliveryEnabled",
        "default": false,
        "doc": "Flag indicating whether log delivery is enabled by the customer in the given\nremote executor instance."
      },
      {
        "Searchable": {
          "fieldType": "COUNT",
          "queryByDefault": false
        },
        "type": "long",
        "name": "reportedAt",
        "doc": "UTC-based timestamp of the last reported status"
      },
      {
        "type": [
          "null",
          {
            "type": "enum",
            "name": "RemoteExecutorChannel",
            "namespace": "com.linkedin.pegasus2avro.executor",
            "symbols": [
              "SQS",
              "KAFKA"
            ]
          }
        ],
        "name": "channel",
        "default": null,
        "doc": "The communication channel this executor is using"
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubRemoteExecutorPoolInfo"
    },
    "name": "RemoteExecutorPoolInfo",
    "namespace": "com.linkedin.pegasus2avro.executorpool",
    "fields": [
      {
        "Searchable": {
          "fieldType": "COUNT",
          "queryByDefault": false
        },
        "type": "long",
        "name": "createdAt",
        "doc": "UTC-based timestamp of when this pool was created"
      },
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "creator",
        "default": null,
        "doc": "The creator of this pool"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "A description for this pool"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "queueUrl",
        "default": null,
        "doc": "The url to the task queue for this pool. I.e., SQS queue url."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "queueRegion",
        "default": null,
        "doc": "The region of the sqs queue for this pool for backwards compatibility."
      },
      {
        "type": [
          "null",
          "boolean"
        ],
        "name": "isEmbedded",
        "default": null,
        "doc": "Only set true if this is the pool embedded within the DataHub Cloud deployment"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "RemoteExecutorPoolState",
            "namespace": "com.linkedin.pegasus2avro.executorpool",
            "fields": [
              {
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "OLD_CHANNEL_DRAINING": "The pool is draining tasks from the old channel during a channel switch.",
                    "PROVISIONING_FAILED": "The pool has failed to be provisioned.",
                    "PROVISIONING_IN_PROGRESS": "The pool has been picked up by DataHub and is in the process of being provisioned.",
                    "PROVISIONING_PENDING": "The pool is pending provisioning. Default state on creation.",
                    "READY": "The pool has been successfully provisioned and is ready to accept tasks."
                  },
                  "name": "RemoteExecutorPoolStatus",
                  "namespace": "com.linkedin.pegasus2avro.executorpool",
                  "symbols": [
                    "PROVISIONING_PENDING",
                    "PROVISIONING_IN_PROGRESS",
                    "PROVISIONING_FAILED",
                    "READY",
                    "OLD_CHANNEL_DRAINING"
                  ]
                },
                "name": "status",
                "doc": "The status of the remote executor pool"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "message",
                "default": null,
                "doc": "The message associated with the status. I.e., an error message explaining failure."
              }
            ]
          }
        ],
        "name": "state",
        "default": null,
        "doc": "The status of the remote executor pool"
      },
      {
        "type": [
          "null",
          {
            "type": "enum",
            "name": "RemoteExecutorPoolChannel",
            "namespace": "com.linkedin.pegasus2avro.executorpool",
            "symbols": [
              "SQS",
              "KAFKA"
            ]
          }
        ],
        "name": "channel",
        "default": null,
        "doc": "The communication channel used by executors in this pool"
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "channelSwitchedAt",
        "default": null,
        "doc": "UTC-based timestamp of when the channel was last switched"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.executorpool.RemoteExecutorPoolChannel"
        ],
        "name": "previousChannel",
        "default": null,
        "doc": "The previous communication channel before the last switch, for drain logic"
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubMetricCubeDefinition"
    },
    "name": "DataHubMetricCubeDefinition",
    "namespace": "com.linkedin.pegasus2avro.metric",
    "fields": [
      {
        "Searchable": {},
        "type": "string",
        "name": "name",
        "doc": " Display name of the metric cube"
      },
      {
        "Searchable": {},
        "type": "string",
        "name": "type",
        "default": "custom",
        "doc": "A type or category for the metric cube. This is used to categorize the metric cube & for filtering.\n\nThis may be used to group similar types of metrics for a given entity, e.g. 'row_count', 'error_count', etc.\nthat originated in different places."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": " Optional description for the metric"
      },
      {
        "Searchable": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "entity",
        "default": null,
        "doc": " An optional URN for the entity that this metric cube is associated with."
      },
      {
        "type": {
          "type": "record",
          "name": "DataHubMetricCubeOrigin",
          "namespace": "com.linkedin.pegasus2avro.metric",
          "fields": [
            {
              "Searchable": {
                "addToFilters": true,
                "fieldName": "originType",
                "filterNameOverride": "Origin"
              },
              "type": {
                "type": "enum",
                "symbolDocs": {
                  "ASSERTION_MONITOR": "Assertion monitor created the metric.",
                  "MANUAL": "Manually created metric, via UI or API."
                },
                "name": "DataHubMetricSourceType",
                "namespace": "com.linkedin.pegasus2avro.metric",
                "symbols": [
                  "MANUAL",
                  "ASSERTION_MONITOR"
                ]
              },
              "name": "type",
              "doc": "Message associated with the incident"
            },
            {
              "Searchable": {
                "fieldType": "URN"
              },
              "java": {
                "class": "com.linkedin.pegasus2avro.common.urn.Urn"
              },
              "Urn": "Urn",
              "type": [
                "null",
                "string"
              ],
              "name": "originUrn",
              "default": null,
              "doc": "Reference to the source that created the metric.\nIn the case of assertion monitor, this is the URN of the assertion monitor."
            }
          ],
          "doc": "Information about the origin of the metric cube"
        },
        "name": "origin",
        "doc": "The origin of the metric cube."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "DataHubMetricCubeMeasures",
            "namespace": "com.linkedin.pegasus2avro.metric",
            "fields": [
              {
                "type": {
                  "type": "record",
                  "name": "DataHubMetricCubeMeasure",
                  "namespace": "com.linkedin.pegasus2avro.metric",
                  "fields": [
                    {
                      "type": "string",
                      "name": "name",
                      "doc": " The name of the measure"
                    }
                  ],
                  "doc": "The definition of a metric cube measure."
                },
                "name": "measure",
                "doc": " The first measure being tracked in the cube."
              }
            ],
            "doc": "The definition of the measures of a metric cube.\nA measure is a metric that is being tracked in the cube."
          }
        ],
        "name": "measures",
        "default": null,
        "doc": " Optional - The measures of the cube for display purposes."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "DataHubMetricCubeDimensions",
            "namespace": "com.linkedin.pegasus2avro.metric",
            "fields": [
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "DataHubMetricCubeDimension",
                    "namespace": "com.linkedin.pegasus2avro.metric",
                    "fields": [
                      {
                        "type": "string",
                        "name": "name",
                        "doc": " The name of the dimension"
                      }
                    ],
                    "doc": "The definition of a metric cube dimension."
                  }
                ],
                "name": "dim1",
                "default": null,
                "doc": " The first measure being tracked in the cube."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.metric.DataHubMetricCubeDimension"
                ],
                "name": "dim2",
                "default": null,
                "doc": "Optional: A second measure being tracked in the cube."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.metric.DataHubMetricCubeDimension"
                ],
                "name": "dim3",
                "default": null,
                "doc": "Optional: A third measure being tracked in the cube."
              }
            ],
            "doc": "The dimensions of the cube. This is what you filter and group by.\nThis is a record to allow for future expansion of the dimensions."
          }
        ],
        "name": "dimensions",
        "default": null,
        "doc": "Optional - The dimensions of the cube for display purposes."
      }
    ],
    "doc": "The structure of an individual metric cube in DataHub."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubMetricCubeEvent",
      "type": "timeseries"
    },
    "name": "DataHubMetricCubeEvent",
    "namespace": "com.linkedin.pegasus2avro.metric",
    "fields": [
      {
        "type": "long",
        "name": "reportedTimeMillis",
        "doc": "The event or bucket reported time field as epoch at UTC in milli seconds.\nThis must be provided in order to pass validation."
      },
      {
        "TimeseriesField": {},
        "type": "double",
        "name": "measure",
        "doc": "The first measure value - Typically this is the primary metric."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "dim1",
        "default": null,
        "doc": "The first dimension value(s). Array type to support multi-dimensionality."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "dim2",
        "default": null,
        "doc": "The second dimension value(s). Array type to support multi-dimensionality."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "dim3",
        "default": null,
        "doc": "The third dimension value(s). Array type to support multi-dimensionality."
      },
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      }
    ],
    "doc": "A timeseries measure event, e.g. a single observation."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "lifecycleStageTypeInfo",
      "schemaVersion": 2
    },
    "name": "LifecycleStageTypeInfo",
    "namespace": "com.linkedin.pegasus2avro.lifecycle",
    "fields": [
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "name",
        "doc": "Display name of the lifecycle stage type."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Description of what this lifecycle stage represents."
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "entityTypes",
        "default": null,
        "doc": "Entity type names this stage applies to (e.g., [\"document\", \"glossaryTerm\"]).\nWhen null/absent, applies to all entity types.\nWhen empty, applies to no entity types (effectively disabled)."
      },
      {
        "type": {
          "type": "record",
          "name": "LifecycleStageSettings",
          "namespace": "com.linkedin.pegasus2avro.lifecycle",
          "fields": [
            {
              "type": "boolean",
              "name": "hideInSearch",
              "default": false,
              "doc": "When true, entities in this stage are excluded from default search results.\nUsers can still discover them by explicitly filtering on the lifecycleStage field."
            },
            {
              "type": "boolean",
              "name": "hideFromOwner",
              "default": false,
              "doc": "When true, entities in this stage are ALSO hidden from owner-facing management\nlistings (e.g., the Agents tab, Glossary management). Set this for \"terminal hidden\"\nstages like ARCHIVED where the entity should be invisible even to owners.\n\nStages that are transient owner-actionable states (UNCONFIGURED, DRAFT) should\nleave this false \u2014 owners need to see them to act on them, even though they remain\nhidden from end-user-facing search and chat pickers (via hideInSearch=true).\n\nHas no effect when hideInSearch is false (the entity is visible everywhere)."
            }
          ],
          "doc": "Settings that control how entities in a given lifecycle stage behave in the platform."
        },
        "name": "settings",
        "doc": "Settings that control platform behavior for entities in this stage."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "LifecycleStageTransitionPolicy",
            "namespace": "com.linkedin.pegasus2avro.lifecycle",
            "fields": [
              {
                "Urn": "Urn",
                "urn_is_array": true,
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": "string"
                  }
                ],
                "name": "allowedPreviousStages",
                "default": null,
                "doc": "Lifecycle stage type URNs that an entity must currently be in to transition\nINTO this stage. Use the sentinel value \"urn:li:lifecycleStageType:__NONE__\"\nto allow entry from the default active state (no stage set).\n\nnull/absent: any prior stage (or no stage) can transition to this one.\nempty list: nothing can transition to this stage (unreachable)."
              }
            ],
            "doc": "Defines which prior stages (or no stage) are allowed to transition INTO this stage.\nEnforced server-side via a MutationHook on the Status aspect.\n\nModeled as entry constraints rather than exit constraints so that adding a new\nstage is self-contained \u2014 you declare its own entry policy without editing\nevery existing stage."
          }
        ],
        "name": "transitionPolicy",
        "default": null,
        "doc": "Optional policy defining which prior stages can transition INTO this stage.\nWhen null, any prior stage can transition to this one (no enforcement)."
      },
      {
        "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 this lifecycle stage 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 this lifecycle stage type."
      }
    ],
    "doc": "Information about a lifecycle stage type.\n\nLifecycle stages control entity visibility and behavior in the platform.\nEach stage can apply to specific entity types and define search visibility\nand transition policies.\n\nWhen an entity's Status.lifecycleStage is set to a lifecycle stage type URN,\nthe stage's settings determine how the entity is treated (e.g., hidden from\ndefault search when hideInSearch=true).\n\nThe entityTypes field controls which entity types this stage can be applied to:\n  - null/absent: the stage applies to ALL entity types\n  - empty list: the stage applies to NO entity types (disabled)\n  - explicit list: the stage only applies to those entity types"
  },
  {
    "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": "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": "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": "dataHubExecutionRequestInput",
      "schemaVersion": 2
    },
    "name": "ExecutionRequestInput",
    "namespace": "com.linkedin.pegasus2avro.execution",
    "fields": [
      {
        "type": "string",
        "name": "task",
        "doc": "The name of the task to execute, for example RUN_INGEST"
      },
      {
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "args",
        "doc": "Arguments provided to the task"
      },
      {
        "Searchable": {
          "fieldName": "executorId",
          "fieldType": "KEYWORD",
          "queryByDefault": false
        },
        "type": "string",
        "name": "executorId",
        "doc": "Advanced: specify a specific executor pool to route the request to. If none is provided, a \"default\" embedded executor is used."
      },
      {
        "type": {
          "type": "record",
          "name": "ExecutionRequestSource",
          "namespace": "com.linkedin.pegasus2avro.execution",
          "fields": [
            {
              "type": "string",
              "name": "type",
              "doc": "The type of the execution request source, e.g. INGESTION_SOURCE, CONNECTION, TASK"
            },
            {
              "Relationship": {
                "entityTypes": [
                  "dataHubIngestionSource"
                ],
                "name": "ingestionSource"
              },
              "Searchable": {
                "fieldName": "ingestionSource",
                "fieldType": "KEYWORD",
                "queryByDefault": false
              },
              "java": {
                "class": "com.linkedin.pegasus2avro.common.urn.Urn"
              },
              "Urn": "Urn",
              "entityTypes": [
                "dataHubIngestionSource"
              ],
              "type": [
                "null",
                "string"
              ],
              "name": "ingestionSource",
              "default": null,
              "doc": "The urn of the ingestion source associated with the ingestion request. Present if type is INGESTION_SOURCE"
            },
            {
              "Relationship": {
                "entityTypes": [
                  "dataHubConnection"
                ],
                "name": "connection"
              },
              "Searchable": {
                "fieldName": "connection",
                "fieldType": "KEYWORD",
                "queryByDefault": false
              },
              "java": {
                "class": "com.linkedin.pegasus2avro.common.urn.Urn"
              },
              "Urn": "Urn",
              "entityTypes": [
                "dataHubConnection"
              ],
              "type": [
                "null",
                "string"
              ],
              "name": "connection",
              "default": null,
              "doc": "The urn of the connection source associated with the connection request. Present if type is CONNECTION"
            },
            {
              "Relationship": {
                "entityTypes": [
                  "dataHubTask"
                ],
                "name": "task"
              },
              "Searchable": {
                "fieldName": "task",
                "fieldType": "KEYWORD",
                "queryByDefault": false
              },
              "java": {
                "class": "com.linkedin.pegasus2avro.common.urn.Urn"
              },
              "Urn": "Urn",
              "entityTypes": [
                "dataHubTask"
              ],
              "type": [
                "null",
                "string"
              ],
              "name": "task",
              "default": null,
              "doc": "The urn of the task associated with the execution request. Present if type is TASK"
            }
          ]
        },
        "name": "source",
        "doc": "Source which created the execution request"
      },
      {
        "Searchable": {
          "fieldName": "requestTimeMs",
          "fieldType": "COUNT",
          "queryByDefault": false
        },
        "type": "long",
        "name": "requestedAt",
        "doc": "Time at which the execution request input was created"
      },
      {
        "Searchable": {
          "fieldType": "URN"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "actorUrn",
        "default": null,
        "doc": "Urn of the actor who created this execution request."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "attempts",
        "default": null,
        "doc": "Field tracking number of previously unsuccessful attempts for the given execution request"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "CliVersionAudit",
            "namespace": "com.linkedin.pegasus2avro.execution",
            "fields": [
              {
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "APPLICATION_DEFAULT": " Step 4 \u2014 fell through to defaultCliVersion from application.yaml. ",
                    "MATRIX_COHORT": " Step 2 \u2014 matched a cohort whose deployments list contains this deployment's id. ",
                    "MATRIX_CONNECTOR_DEFAULT": " Step 3 \u2014 fell through to the connector's _default in the matrix. ",
                    "SOURCE_CONFIG_OVERRIDE": " Step 1 \u2014 explicit cli_version on the ingestion source's recipe config. "
                  },
                  "name": "CliVersionSource",
                  "namespace": "com.linkedin.pegasus2avro.execution",
                  "symbols": [
                    "SOURCE_CONFIG_OVERRIDE",
                    "MATRIX_COHORT",
                    "MATRIX_CONNECTOR_DEFAULT",
                    "APPLICATION_DEFAULT"
                  ]
                },
                "name": "source",
                "doc": "Which level of the resolution priority hit."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "serverVersion",
                "default": null,
                "doc": "GMS server version that performed the resolution. Populated regardless of which tier hit.\nEquals `GitVersion.getVersion()` on the pod that wrote this aspect."
              }
            ],
            "doc": "Audit record for the CLI version chosen for an ingestion execution.\n\nStamped on each ingestion or test-connection ExecutionRequestInput. Captures only metadata\nabout the resolution (which tier fired + which GMS performed it) \u2014 the resolved CLI version\nitself lives in `args.version` on the same aspect (the wire-format field consumed by the\nexecutor). Splitting these avoids storing the version string twice on the aspect; this record\nexists so post-hoc forensics can answer \"which tier produced the version, and which GMS wrote\nthis?\" from a single SQL query without log archaeology.\n\nNOTE: this stamps the version GMS *resolved*, not the version the executor actually\ninstalled. The executor may run a different effective version when (a) the recipe's\n`extra_pip` requirements transitively pull in `acryl-datahub`, (b) the customer opts out\nof installing `acryl-datahub` (e.g. `version=\"no-acryl-datahub\"`), or (c) a bundled image\nshort-circuits the install step. Treat this aspect as GMS-side intent, not proof-of-install.\n\nThe resolution chain is, in priority order:\n  1. Per-source `config.version` explicit override (SOURCE_CONFIG_OVERRIDE)\n  2. Cohort whose `deployments` list contains this deployment's id (MATRIX_COHORT)\n  3. Connector's `_default` from the matrix (MATRIX_CONNECTOR_DEFAULT)\n  4. `defaultCliVersion` from application.yaml (APPLICATION_DEFAULT)"
          }
        ],
        "name": "cliVersionAudit",
        "default": null,
        "doc": "Audit metadata for the CLI version chosen for this execution \u2014 which tier of the\nresolution chain produced the version (source config override / matrix cohort / matrix\nconnector default / application default) and which GMS performed the resolution. Stamped at\nrequest time so post-hoc forensics does not require iterating the generic args map. The\nresolved CLI version string itself lives in `args.version` on this same aspect; this record\ndeliberately does not duplicate it. Optional for backward compatibility \u2014 older execution\nrequests will not have this set."
      }
    ],
    "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": "dataHubExecutionRequestArtifactsLocation"
    },
    "name": "ExecutionRequestArtifactsLocation",
    "namespace": "com.linkedin.pegasus2avro.execution",
    "fields": [
      {
        "type": "string",
        "name": "location",
        "doc": "The location where artifacts are present"
      }
    ],
    "doc": "The result location of an execution request"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubExecutionRequestSignal"
    },
    "name": "ExecutionRequestSignal",
    "namespace": "com.linkedin.pegasus2avro.execution",
    "fields": [
      {
        "type": "string",
        "name": "signal",
        "doc": "The signal to issue, e.g. KILL"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "executorId",
        "default": null,
        "doc": "Advanced: specify a specific executor pool to route the request to. If none is provided, a default embedded executor is used."
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "createdAt",
        "doc": "Audit Stamp"
      }
    ],
    "doc": "An signal sent to a running execution request"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubExecutionRequestResult"
    },
    "name": "ExecutionRequestResult",
    "namespace": "com.linkedin.pegasus2avro.execution",
    "fields": [
      {
        "Searchable": {
          "fieldName": "executionResultStatus",
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "status",
        "doc": "The status of the execution request"
      },
      {
        "Searchable": {
          "fieldName": "executorInstanceId",
          "fieldType": "KEYWORD",
          "queryByDefault": false
        },
        "type": [
          "null",
          "string"
        ],
        "name": "executorInstanceId",
        "default": null,
        "doc": "Identity of the executor instance handling the request"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "report",
        "default": null,
        "doc": "The pretty-printed execution report."
      },
      {
        "type": [
          "null",
          {
            "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": "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": "schemaProposals"
    },
    "name": "SchemaProposals",
    "namespace": "com.linkedin.pegasus2avro.schema",
    "fields": [
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "SchemaProposal",
            "namespace": "com.linkedin.pegasus2avro.schema",
            "fields": [
              {
                "type": "string",
                "name": "fieldPath",
                "doc": "FieldPath uniquely identifying the SchemaField this metadata is associated with"
              },
              {
                "Searchable": {
                  "/*": {
                    "fieldName": "proposedSchemaTags",
                    "fieldType": "URN",
                    "filterNameOverride": "Proposed Schema Tag"
                  }
                },
                "Urn": "Urn",
                "urn_is_array": true,
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": "string"
                  }
                ],
                "name": "proposedSchemaTags",
                "default": null,
                "doc": "Proposed tags for a given entity"
              },
              {
                "Searchable": {
                  "/*": {
                    "fieldName": "proposedSchemaGlossaryTerms",
                    "fieldType": "URN",
                    "filterNameOverride": "Proposed Schema Glossary Term"
                  }
                },
                "Urn": "Urn",
                "urn_is_array": true,
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": "string"
                  }
                ],
                "name": "proposedSchemaGlossaryTerms",
                "default": null,
                "doc": "Proposed glossary terms for a given entity"
              }
            ],
            "doc": "Schema proposal aspect for proposed schema tags and proposed schema glossary terms\nThese are secondary indices and ActionRequests remain the source of truth."
          }
        },
        "name": "schemaProposals",
        "doc": "Array of SchemaProposal"
      }
    ],
    "doc": "Schema proposals aspect for proposed tags and glossary terms on schema metadata."
  },
  "com.linkedin.pegasus2avro.schema.SchemaMetadata",
  "com.linkedin.pegasus2avro.schema.EditableSchemaMetadata",
  {
    "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": "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": "dataHubActionStatus"
    },
    "name": "DataHubActionStatus",
    "namespace": "com.linkedin.pegasus2avro.action",
    "fields": [
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "DataHubActionStageStatus",
            "namespace": "com.linkedin.pegasus2avro.action",
            "fields": [
              {
                "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                "name": "reportedTime",
                "doc": "The time and source of the last update to the status"
              },
              {
                "type": {
                  "type": "enum",
                  "name": "DataHubActionStageStatusCode",
                  "namespace": "com.linkedin.pegasus2avro.action",
                  "symbols": [
                    "RUNNING",
                    "SUCCESS",
                    "FAILED",
                    "STOPPED",
                    "CANCELLED"
                  ],
                  "doc": "Captures the various status codes for different stages of a DataHub Action Pipeline"
                },
                "name": "statusCode",
                "doc": "The status of the stage"
              },
              {
                "type": "long",
                "name": "startTime",
                "doc": "The time the most recent invocation of the stage was started"
              },
              {
                "type": [
                  "null",
                  "long"
                ],
                "name": "endTime",
                "default": null,
                "doc": "The time the most recent invocation of the stage completed (either\nsuccessfully or unsuccessfully)\nIn the case of a running stage, this field should be null"
              },
              {
                "type": [
                  "null",
                  "long"
                ],
                "name": "lastSuccess",
                "default": null,
                "doc": "The time the most recent invocation of the stage was successful"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "report",
                "default": null,
                "doc": "Logs from the action stage."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.execution.StructuredExecutionReport"
                ],
                "name": "structuredReport",
                "default": null,
                "doc": "A structured report."
              },
              {
                "type": {
                  "type": "map",
                  "values": "string"
                },
                "name": "customProperties",
                "default": {},
                "doc": "Additional properties for the pipeline status"
              }
            ]
          }
        ],
        "name": "bootstrap",
        "default": null,
        "doc": "Status of the bootstrap pipeline if applicable"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.action.DataHubActionStageStatus"
        ],
        "name": "live",
        "default": null,
        "doc": "Status of the live pipeline"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.action.DataHubActionStageStatus"
        ],
        "name": "rollback",
        "default": null,
        "doc": "Status of the rollback pipeline if applicable"
      }
    ],
    "doc": "Status about a DataHub Action Pipeline\nThis combines status from all the three stages of the pipeline - bootstrap, live and rollback"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubActionInfo"
    },
    "name": "DataHubActionInfo",
    "namespace": "com.linkedin.pegasus2avro.action",
    "fields": [
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "name",
        "doc": "The display name of the action"
      },
      {
        "type": "string",
        "name": "type",
        "doc": "The type of the action itself, e.g. tag_propagation. Should match the recipe."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "category",
        "default": null,
        "doc": "The category of the action"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "The description of the action"
      },
      {
        "type": {
          "type": "record",
          "name": "DataHubActionConfig",
          "namespace": "com.linkedin.pegasus2avro.action",
          "fields": [
            {
              "type": "string",
              "name": "recipe",
              "doc": "The JSON recipe to use for the automation"
            },
            {
              "type": [
                "null",
                "string"
              ],
              "name": "executorId",
              "default": null,
              "doc": "The id of the executor pool to use to execute the automation. Defaults to 'default' (runs locally embedded)"
            }
          ]
        },
        "name": "config",
        "doc": "Parameters associated with the Action"
      },
      {
        "type": [
          {
            "type": "enum",
            "symbolDocs": {
              "ACTIVE": "The action is supposed to be active",
              "INACTIVE": "The action should be inactive"
            },
            "name": "DataHubActionState",
            "namespace": "com.linkedin.pegasus2avro.action",
            "symbols": [
              "ACTIVE",
              "INACTIVE"
            ]
          },
          "null"
        ],
        "name": "state",
        "default": "ACTIVE",
        "doc": "The intended state of the action"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "DataHubActionSource",
            "namespace": "com.linkedin.pegasus2avro.action",
            "fields": [
              {
                "Searchable": {
                  "fieldName": "sourceType"
                },
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "SYSTEM": "A system internal source, e.g. for running search indexing operations, feature computation, etc."
                  },
                  "name": "DataHubActionRequestSource",
                  "namespace": "com.linkedin.pegasus2avro.action",
                  "symbols": [
                    "SYSTEM"
                  ]
                },
                "name": "type",
                "doc": "The source type of the ingestion source"
              }
            ]
          }
        ],
        "name": "source",
        "default": null,
        "doc": "The source or origin of the Action\n\nCurrently CLI and UI do not provide an explicit source."
      }
    ],
    "doc": "Info about a DataHub Action Pipeline"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "platformResourceKey",
      "keyForEntity": "platformResource",
      "entityCategory": "core",
      "entityAspects": [
        "dataPlatformInstance",
        "platformResourceInfo",
        "status"
      ],
      "entityDoc": "Platform Resources are assets that are unmodeled and stored outside of the core data model. They are stored in DataHub primarily to help with application-specific use-cases that are not sufficiently generalized to move into the core data model."
    },
    "name": "PlatformResourceKey",
    "namespace": "com.linkedin.pegasus2avro.platformresource",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for this entity.\nThere are no constraints on the format of this id, but most implementations\nwill choose to use a UUID.\nThis id should be globally unique for the entire DataHub instance and\n     uniquely identify the resource that is being stored, so most\n     implementations\nwill combine logical attributes like platform name, platform instance,\nplatform-specific-id and the resource type to create the unique id.\ne.g. slack:slack-instance:slack-user-id:user-info \nor guid(slack, slack-instance, slack-user-id, user-info) etc."
      }
    ],
    "doc": "Key for a Platform Resource.\nPlatform Resources are assets that are not part of the core data model.\nThey are stored in DataHub primarily to help with application-specific\nuse-cases that are not sufficiently generalized to move into the core data model.\nFor instance, if we want to persist & retrieve additional user profile data \nfrom auxiliary integrations such as Slack or Microsoft Teams for resolving details later."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "platformResourceInfo"
    },
    "name": "PlatformResourceInfo",
    "namespace": "com.linkedin.pegasus2avro.platformresource",
    "fields": [
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "resourceType",
        "doc": "The type of the resource. \nIntended as a loose specifier of the generic type of the resource.\nProducer is not forced to conform to a specific set of symbols for\nresource types.\nThe @PlatformResourceType enumeration offers a paved path for agreed upon\ncommon terms, but is not required to be followed.\nExample values could be: conversation, user, grant, etc.\nResource types are indexed for ease of access. \ne.g. Get me all platform resources of type user for the platform looker"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "primaryKey",
        "doc": "The primary key for this platform resource.\ne.g. for a slack member this would be the memberID.\nprimary keys specified here don't need to include any additional specificity for the\n     dataPlatform\nThe @PlatformResourceKey is supposed to represent that"
      },
      {
        "Searchable": {
          "/*": {
            "fieldType": "KEYWORD"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "secondaryKeys",
        "default": null,
        "doc": "The secondary keys this platform resource can be located by.\nI.e., for a slack member this would be email or phone."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "SerializedValue",
            "namespace": "com.linkedin.pegasus2avro.common",
            "fields": [
              {
                "type": "bytes",
                "name": "blob",
                "doc": "The serialized blob value."
              },
              {
                "type": {
                  "type": "enum",
                  "name": "SerializedValueContentType",
                  "namespace": "com.linkedin.pegasus2avro.common",
                  "symbols": [
                    "JSON",
                    "BINARY"
                  ]
                },
                "name": "contentType",
                "default": "JSON",
                "doc": "The content-type of the serialized blob value."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "enum",
                    "name": "SerializedValueSchemaType",
                    "namespace": "com.linkedin.pegasus2avro.common",
                    "symbols": [
                      "AVRO",
                      "PROTOBUF",
                      "PEGASUS",
                      "THRIFT",
                      "JSON",
                      "NONE"
                    ]
                  }
                ],
                "name": "schemaType",
                "default": null,
                "doc": "The schema type for the schema that models the object that was serialized\n       into the blob.\nAbsence of this field indicates that the schema is not known.\nIf the schema is known, the value should be set to the appropriate schema\ntype.\nUse the NONE value if the existing schema categories do not apply."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "schemaRef",
                "default": null,
                "doc": "An optional reference to the schema that models the object.\ne.g., 'com.linkedin.pegasus2avro.platformresource.slack.SlackConversation'"
              }
            ],
            "doc": "Captures the serialized value of a (usually) schema-d blob."
          }
        ],
        "name": "value",
        "default": null,
        "doc": "The serialized value of this platform resource item."
      }
    ],
    "doc": "Platform Resource Info.\nThese entities are for miscelaneous data that is used in non-core parts of the system.\nFor instance, if we want to persist & retrieve data from auxiliary integrations such as Slack or Microsoft Teams."
  }
]