{
  "type": "record",
  "Aspect": {
    "name": "monitorSuiteInfo",
    "schemaVersion": 2
  },
  "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": {
              "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",
            "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": {
                        "type": "enum",
                        "name": "CalendarInterval",
                        "namespace": "com.linkedin.pegasus2avro.timeseries",
                        "symbols": [
                          "SECOND",
                          "MINUTE",
                          "HOUR",
                          "DAY",
                          "WEEK",
                          "MONTH",
                          "QUARTER",
                          "YEAR"
                        ]
                      },
                      "name": "unit",
                      "doc": "Interval unit such as minute/hour/day etc."
                    },
                    {
                      "type": "int",
                      "name": "multiple",
                      "default": 1,
                      "doc": "How many units. Defaults to 1."
                    }
                  ],
                  "doc": "Attributes defining a relative fixed interval SLA schedule."
                }
              ],
              "name": "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.",
                          "TEST_PASSED": "Test status changes."
                        },
                        "name": "EntityChangeType",
                        "namespace": "com.linkedin.pegasus2avro.subscription",
                        "symbols": [
                          "OPERATION_COLUMN_ADDED",
                          "OPERATION_COLUMN_REMOVED",
                          "OPERATION_COLUMN_MODIFIED",
                          "OPERATION_ROWS_INSERTED",
                          "OPERATION_ROWS_UPDATED",
                          "OPERATION_ROWS_REMOVED",
                          "ASSERTION_PASSED",
                          "ASSERTION_FAILED",
                          "ASSERTION_ERROR",
                          "INCIDENT_RAISED",
                          "INCIDENT_RESOLVED",
                          "TEST_PASSED",
                          "TEST_FAILED",
                          "DEPRECATED",
                          "UNDEPRECATED",
                          "INGESTION_SUCCEEDED",
                          "INGESTION_FAILED",
                          "DOCUMENTATION_CHANGE",
                          "OWNER_ADDED",
                          "OWNER_REMOVED",
                          "GLOSSARY_TERM_ADDED",
                          "GLOSSARY_TERM_REMOVED",
                          "GLOSSARY_TERM_PROPOSED",
                          "TAG_ADDED",
                          "TAG_REMOVED",
                          "TAG_PROPOSED"
                        ],
                        "doc": "Enum to define change types that can trigger a notification for a subscription."
                      },
                      "name": "entityChangeType",
                      "doc": "Change type that triggers a notification for the subscription."
                    },
                    {
                      "type": [
                        "null",
                        {
                          "type": "record",
                          "name": "EntityChangeDetailsFilter",
                          "namespace": "com.linkedin.pegasus2avro.subscription",
                          "fields": [
                            {
                              "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'",
                              "Urn": "Urn",
                              "urn_is_array": true
                            }
                          ],
                          "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",
                      {
                        "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 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",
        {
          "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"
              },
              "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.",
              "Urn": "Urn"
            },
            {
              "java": {
                "class": "com.linkedin.pegasus2avro.common.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.",
              "Urn": "Urn"
            },
            {
              "type": [
                "null",
                "string"
              ],
              "name": "message",
              "default": null,
              "doc": "Additional context around how DataHub was informed of the particular change. For example: was the change created by an automated process, or manually."
            }
          ],
          "doc": "Data captured on a resource/association/sub-resource level giving insight into when that resource/association/sub-resource moved into a particular lifecycle stage, and who acted to move it into that specific lifecycle stage."
        }
      ],
      "name": "created",
      "default": 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."
}