{
  "type": "record",
  "Aspect": {
    "name": "dataHubViewInfo"
  },
  "name": "DataHubViewInfo",
  "namespace": "com.linkedin.pegasus2avro.view",
  "fields": [
    {
      "Searchable": {
        "fieldType": "TEXT_PARTIAL"
      },
      "type": "string",
      "name": "name",
      "doc": "The name of the View"
    },
    {
      "type": [
        "null",
        "string"
      ],
      "name": "description",
      "default": null,
      "doc": "Description of the view"
    },
    {
      "Searchable": {},
      "type": {
        "type": "enum",
        "symbolDocs": {
          "GLOBAL": "A global view, which all users can see and use.",
          "PERSONAL": "A view private for a specific person."
        },
        "name": "DataHubViewType",
        "namespace": "com.linkedin.pegasus2avro.view",
        "symbols": [
          "PERSONAL",
          "GLOBAL"
        ]
      },
      "name": "type",
      "doc": "The type of View"
    },
    {
      "type": {
        "type": "record",
        "name": "DataHubViewDefinition",
        "namespace": "com.linkedin.pegasus2avro.view",
        "fields": [
          {
            "type": {
              "type": "array",
              "items": "string"
            },
            "name": "entityTypes",
            "doc": "The Entity Types in the scope of the View."
          },
          {
            "type": {
              "type": "record",
              "name": "Filter",
              "namespace": "com.linkedin.pegasus2avro.metadata.query.filter",
              "fields": [
                {
                  "type": [
                    "null",
                    {
                      "type": "array",
                      "items": {
                        "type": "record",
                        "name": "ConjunctiveCriterion",
                        "namespace": "com.linkedin.pegasus2avro.metadata.query.filter",
                        "fields": [
                          {
                            "type": {
                              "type": "array",
                              "items": {
                                "type": "record",
                                "name": "Criterion",
                                "namespace": "com.linkedin.pegasus2avro.metadata.query.filter",
                                "fields": [
                                  {
                                    "type": "string",
                                    "name": "field",
                                    "doc": "The name of the field that the criterion refers to"
                                  },
                                  {
                                    "type": "string",
                                    "name": "value",
                                    "doc": "The value of the intended field"
                                  },
                                  {
                                    "type": {
                                      "type": "array",
                                      "items": "string"
                                    },
                                    "name": "values",
                                    "default": [],
                                    "doc": "Values. one of which the intended field should match\nNote, if values is set, the above \"value\" field will be ignored"
                                  },
                                  {
                                    "type": {
                                      "type": "enum",
                                      "symbolDocs": {
                                        "CONTAIN": "Represent the relation: String field contains value, e.g. name contains Profile",
                                        "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",
                                        "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",
                                        "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",
                                        "IS_NULL",
                                        "EXISTS",
                                        "GREATER_THAN",
                                        "GREATER_THAN_OR_EQUAL_TO",
                                        "IN",
                                        "LESS_THAN",
                                        "LESS_THAN_OR_EQUAL_TO",
                                        "START_WITH"
                                      ],
                                      "doc": "The matching condition in a filter criterion"
                                    },
                                    "name": "condition",
                                    "default": "EQUAL",
                                    "doc": "The condition for the criterion, e.g. EQUAL, START_WITH"
                                  },
                                  {
                                    "type": "boolean",
                                    "name": "negated",
                                    "default": false,
                                    "doc": "Whether the condition should be negated"
                                  }
                                ],
                                "doc": "A criterion for matching a field with given value"
                              }
                            },
                            "name": "and",
                            "doc": "A list of and criteria the filter applies to the query"
                          }
                        ],
                        "doc": "A list of criterion and'd together."
                      }
                    }
                  ],
                  "name": "or",
                  "default": null,
                  "doc": "A list of disjunctive criterion for the filter. (or operation to combine filters)"
                },
                {
                  "type": [
                    "null",
                    {
                      "type": "array",
                      "items": "com.linkedin.pegasus2avro.metadata.query.filter.Criterion"
                    }
                  ],
                  "name": "criteria",
                  "default": null,
                  "doc": "Deprecated! A list of conjunctive criterion for the filter. If \"or\" field is provided, then this field is ignored."
                }
              ],
              "doc": "The filter for finding a record or a collection of records"
            },
            "name": "filter",
            "doc": "The filter criteria, which represents the view itself"
          }
        ],
        "doc": "A View definition."
      },
      "name": "definition",
      "doc": "The view itself"
    },
    {
      "Searchable": {
        "/actor": {
          "fieldName": "createdBy",
          "fieldType": "URN"
        },
        "/time": {
          "fieldName": "createdAt",
          "fieldType": "DATETIME"
        }
      },
      "type": {
        "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",
      "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."
}