{
  "type": "record",
  "Aspect": {
    "name": "actionRequestInfo",
    "schemaVersion": 3
  },
  "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"
        }
      },
      "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.",
      "Urn": "Urn",
      "urn_is_array": true
    },
    {
      "Searchable": {
        "/*": {
          "addToFilters": true,
          "fieldType": "URN"
        }
      },
      "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.",
      "Urn": "Urn",
      "urn_is_array": true
    },
    {
      "Searchable": {
        "/*": {
          "addToFilters": true,
          "fieldType": "URN"
        }
      },
      "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.",
      "Urn": "Urn",
      "urn_is_array": true
    },
    {
      "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"
                      },
                      "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.",
                      "Urn": "Urn"
                    },
                    {
                      "Searchable": {
                        "/*": {
                          "addToFilters": true,
                          "fieldName": "glossaryTerms"
                        }
                      },
                      "type": [
                        "null",
                        {
                          "type": "array",
                          "items": "string"
                        }
                      ],
                      "name": "glossaryTerms",
                      "default": null,
                      "doc": "The urns of the glossary terms being proposed.\nUse this field over glossaryTerm.",
                      "Urn": "Urn",
                      "urn_is_array": true
                    }
                  ]
                }
              ],
              "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"
                      },
                      "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.",
                      "Urn": "Urn"
                    },
                    {
                      "Searchable": {
                        "/*": {
                          "addToFilters": true,
                          "fieldName": "tags"
                        }
                      },
                      "type": [
                        "null",
                        {
                          "type": "array",
                          "items": "string"
                        }
                      ],
                      "name": "tags",
                      "default": null,
                      "doc": "The urns of the glossary terms being proposed.\nUse this field over glossaryTerm.",
                      "Urn": "Urn",
                      "urn_is_array": true
                    }
                  ]
                }
              ],
              "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"
                        }
                      },
                      "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.",
                      "Urn": "Urn",
                      "urn_is_array": true
                    }
                  ]
                }
              ],
              "name": "domainProposal",
              "default": null,
              "doc": "An optional set of information specific to domain proposals."
            },
            {
              "type": [
                "null",
                {
                  "type": "record",
                  "name": "OwnerProposal",
                  "namespace": "com.linkedin.pegasus2avro.actionrequest",
                  "fields": [
                    {
                      "Searchable": {
                        "/*/owner": {
                          "addToFilters": true,
                          "fieldName": "owners"
                        },
                        "/*/typeUrn": {
                          "addToFilters": true,
                          "fieldName": "ownershipTypes"
                        }
                      },
                      "type": [
                        "null",
                        {
                          "type": "array",
                          "items": {
                            "type": "record",
                            "name": "Owner",
                            "namespace": "com.linkedin.pegasus2avro.common",
                            "fields": [
                              {
                                "Relationship": {
                                  "entityTypes": [
                                    "corpuser",
                                    "corpGroup"
                                  ],
                                  "name": "OwnedBy"
                                },
                                "Searchable": {
                                  "addToFilters": true,
                                  "fieldName": "owners",
                                  "fieldType": "URN",
                                  "filterNameOverride": "Owned By",
                                  "hasValuesFieldName": "hasOwners",
                                  "queryByDefault": false,
                                  "searchTier": 2
                                },
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "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.)",
                                "Urn": "Urn",
                                "entityTypes": [
                                  "corpuser",
                                  "corpGroup"
                                ]
                              },
                              {
                                "deprecated": true,
                                "type": {
                                  "type": "enum",
                                  "symbolDocs": {
                                    "BUSINESS_OWNER": "A person or group who is responsible for logical, or business related, aspects of the asset.",
                                    "CONSUMER": "A person, group, or service that consumes the data\nDeprecated! Use TECHNICAL_OWNER or BUSINESS_OWNER instead.",
                                    "CUSTOM": "Set when ownership type is unknown or a when new one is specified as an ownership type entity for which we have no\nenum value for. This is used for backwards compatibility",
                                    "DATAOWNER": "A person or group that is owning the data\nDeprecated! Use TECHNICAL_OWNER instead.",
                                    "DATA_STEWARD": "A steward, expert, or delegate responsible for the asset.",
                                    "DELEGATE": "A person or a group that overseas the operation, e.g. a DBA or SRE.\nDeprecated! Use TECHNICAL_OWNER instead.",
                                    "DEVELOPER": "A person or group that is in charge of developing the code\nDeprecated! Use TECHNICAL_OWNER instead.",
                                    "NONE": "No specific type associated to the owner.",
                                    "PRODUCER": "A person, group, or service that produces/generates the data\nDeprecated! Use TECHNICAL_OWNER instead.",
                                    "STAKEHOLDER": "A person or a group that has direct business interest\nDeprecated! Use TECHNICAL_OWNER, BUSINESS_OWNER, or STEWARD instead.",
                                    "TECHNICAL_OWNER": "person or group who is responsible for technical aspects of the asset."
                                  },
                                  "deprecatedSymbols": {
                                    "CONSUMER": true,
                                    "DATAOWNER": true,
                                    "DELEGATE": true,
                                    "DEVELOPER": true,
                                    "PRODUCER": true,
                                    "STAKEHOLDER": true
                                  },
                                  "name": "OwnershipType",
                                  "namespace": "com.linkedin.pegasus2avro.common",
                                  "symbols": [
                                    "CUSTOM",
                                    "TECHNICAL_OWNER",
                                    "BUSINESS_OWNER",
                                    "DATA_STEWARD",
                                    "NONE",
                                    "DEVELOPER",
                                    "DATAOWNER",
                                    "DELEGATE",
                                    "PRODUCER",
                                    "CONSUMER",
                                    "STAKEHOLDER"
                                  ],
                                  "doc": "Asset owner types"
                                },
                                "name": "type",
                                "doc": "The type of the ownership"
                              },
                              {
                                "Relationship": {
                                  "entityTypes": [
                                    "ownershipType"
                                  ],
                                  "name": "ownershipType"
                                },
                                "Searchable": {
                                  "fieldName": "ownershipTypeUrn",
                                  "fieldType": "URN",
                                  "queryByDefault": false
                                },
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "typeUrn",
                                "default": null,
                                "doc": "The type of the ownership\nUrn of type O",
                                "Urn": "Urn",
                                "entityTypes": [
                                  "ownershipType"
                                ]
                              },
                              {
                                "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",
                                  {
                                    "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"
                                        },
                                        "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.",
                                        "Urn": "Urn"
                                      },
                                      {
                                        "java": {
                                          "class": "com.linkedin.pegasus2avro.common.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.",
                                        "Urn": "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": "Ownership information"
                          }
                        }
                      ],
                      "name": "owners",
                      "default": null,
                      "doc": "The urns of the owner(s) being proposed."
                    }
                  ]
                }
              ],
              "name": "ownerProposal",
              "default": null,
              "doc": "An optional set of information specific to ownership proposals."
            },
            {
              "type": [
                "null",
                {
                  "type": "record",
                  "name": "StructuredPropertyProposal",
                  "namespace": "com.linkedin.pegasus2avro.actionrequest",
                  "fields": [
                    {
                      "Searchable": {
                        "/*/propertyUrn": {
                          "addToFilters": true,
                          "fieldName": "structuredPropertyUrns"
                        }
                      },
                      "type": [
                        "null",
                        {
                          "type": "array",
                          "items": {
                            "type": "record",
                            "name": "StructuredPropertyValueAssignment",
                            "namespace": "com.linkedin.pegasus2avro.structured",
                            "fields": [
                              {
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "type": "string",
                                "name": "propertyUrn",
                                "doc": "The property that is being assigned a value.",
                                "Urn": "Urn"
                              },
                              {
                                "type": {
                                  "type": "array",
                                  "items": [
                                    "string",
                                    "double"
                                  ]
                                },
                                "name": "values",
                                "doc": "The value assigned to the property."
                              },
                              {
                                "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": "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": "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"
                      },
                      "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).",
                      "Urn": "Urn"
                    }
                  ]
                }
              ],
              "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"
                      },
                      "type": [
                        "null",
                        "string"
                      ],
                      "name": "parentNode",
                      "default": null,
                      "doc": "The urn of the parent node of the Proposed Term",
                      "Urn": "Urn"
                    },
                    {
                      "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"
                      },
                      "type": [
                        "null",
                        "string"
                      ],
                      "name": "parentNode",
                      "default": null,
                      "doc": "The urn of the parent node of the Proposed Node",
                      "Urn": "Urn"
                    },
                    {
                      "type": [
                        "null",
                        "string"
                      ],
                      "name": "description",
                      "default": null,
                      "doc": "The description of the Proposed Node"
                    }
                  ]
                }
              ],
              "name": "createGlossaryNodeProposal",
              "default": null,
              "doc": "An optional set of information specific to proposals for creating new Glossary Nodes."
            },
            {
              "type": [
                "null",
                {
                  "type": "record",
                  "name": "DescriptionProposal",
                  "namespace": "com.linkedin.pegasus2avro.actionrequest",
                  "fields": [
                    {
                      "type": "string",
                      "name": "description",
                      "doc": "The text of the description."
                    }
                  ]
                }
              ],
              "name": "updateDescriptionProposal",
              "default": null,
              "doc": "An optional set of information specific to proposals for updating Descriptions."
            },
            {
              "type": [
                "null",
                {
                  "type": "record",
                  "name": "DataContractProposal",
                  "namespace": "com.linkedin.pegasus2avro.actionrequest",
                  "fields": [
                    {
                      "type": [
                        {
                          "type": "enum",
                          "symbolDocs": {
                            "ADD": "Add contracts to existing contract",
                            "OVERWRITE": "Overwrite the contract in its entirety"
                          },
                          "name": "DataContractProposalOperationType",
                          "namespace": "com.linkedin.pegasus2avro.actionrequest",
                          "symbols": [
                            "ADD",
                            "OVERWRITE"
                          ]
                        },
                        "null"
                      ],
                      "name": "type",
                      "default": "OVERWRITE",
                      "doc": "How to apply the Data Contract"
                    },
                    {
                      "type": [
                        "null",
                        {
                          "type": "array",
                          "items": {
                            "type": "record",
                            "name": "SchemaContract",
                            "namespace": "com.linkedin.pegasus2avro.datacontract",
                            "fields": [
                              {
                                "Relationship": {
                                  "entityTypes": [
                                    "assertion"
                                  ],
                                  "name": "IncludesSchemaAssertion"
                                },
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "type": "string",
                                "name": "assertion",
                                "doc": "The assertion representing the schema contract.",
                                "Urn": "Urn",
                                "entityTypes": [
                                  "assertion"
                                ]
                              }
                            ],
                            "doc": "Expectations for a logical schema"
                          }
                        }
                      ],
                      "name": "schema",
                      "default": null,
                      "doc": "An optional set of schema contracts. If this is a dataset contract, there will only be one."
                    },
                    {
                      "type": [
                        "null",
                        {
                          "type": "array",
                          "items": {
                            "type": "record",
                            "name": "FreshnessContract",
                            "namespace": "com.linkedin.pegasus2avro.datacontract",
                            "fields": [
                              {
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "type": "string",
                                "name": "assertion",
                                "doc": "The assertion representing the SLA contract.",
                                "Urn": "Urn"
                              }
                            ],
                            "doc": "A contract pertaining to the operational SLAs of a physical data asset"
                          }
                        }
                      ],
                      "name": "freshness",
                      "default": null,
                      "doc": "An optional set of Freshness contracts. If this is a dataset contract, there will only be one."
                    },
                    {
                      "type": [
                        "null",
                        {
                          "type": "array",
                          "items": {
                            "type": "record",
                            "name": "DataQualityContract",
                            "namespace": "com.linkedin.pegasus2avro.datacontract",
                            "fields": [
                              {
                                "Relationship": {
                                  "entityTypes": [
                                    "assertion"
                                  ],
                                  "name": "IncludesDataQualityAssertion"
                                },
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "type": "string",
                                "name": "assertion",
                                "doc": "The assertion representing the Data Quality contract.\nE.g. a table or column-level assertion.",
                                "Urn": "Urn",
                                "entityTypes": [
                                  "assertion"
                                ]
                              }
                            ],
                            "doc": "A data quality contract pertaining to a physical data asset\nData Quality contracts are used to make assertions about data quality metrics for a physical data asset"
                          }
                        }
                      ],
                      "name": "dataQuality",
                      "default": null,
                      "doc": "An optional set of Data Quality contracts, e.g. table and column level contract constraints."
                    }
                  ]
                }
              ],
              "name": "dataContractProposal",
              "default": null,
              "doc": "A proposal to create or modify a Data Contract"
            },
            {
              "type": [
                "null",
                {
                  "type": "record",
                  "name": "ActionWorkflowFormRequest",
                  "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                  "fields": [
                    {
                      "Searchable": {
                        "fieldName": "actionWorkflow"
                      },
                      "java": {
                        "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                      },
                      "type": "string",
                      "name": "workflow",
                      "doc": "The urn of the associated access request workflow.",
                      "Urn": "Urn"
                    },
                    {
                      "Searchable": {
                        "fieldName": "workflowCategory"
                      },
                      "type": {
                        "type": "enum",
                        "symbolDocs": {
                          "ACCESS": "Workflow for requesting access to a resource, such as a dataset or data job.\nRequires the `access` field to be populated with specific access parameters.",
                          "CUSTOM": "Custom, non-access related workflow. For example, may be used to model workflows like\nasset creation, asset cleanup or deletion, etc."
                        },
                        "name": "ActionWorkflowCategory",
                        "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                        "symbols": [
                          "ACCESS",
                          "CUSTOM"
                        ]
                      },
                      "name": "category",
                      "doc": "The category of the workflow. \nPrimarily used for searching / filtering action requests."
                    },
                    {
                      "Searchable": {
                        "fieldName": "customWorkflowCategory"
                      },
                      "type": [
                        "null",
                        "string"
                      ],
                      "name": "customCategory",
                      "default": null,
                      "doc": "The custom category of the workflow, if category is custom.\nPrimarily used for searching / filtering action requests."
                    },
                    {
                      "type": {
                        "type": "array",
                        "items": {
                          "type": "record",
                          "name": "ActionWorkflowFormRequestField",
                          "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                          "fields": [
                            {
                              "type": "string",
                              "name": "id",
                              "doc": "Workflow-local id for the field"
                            },
                            {
                              "type": {
                                "type": "array",
                                "items": [
                                  "string",
                                  "double"
                                ]
                              },
                              "name": "values",
                              "doc": "Value, reused model from structured properties. Empty if no response was provided."
                            }
                          ],
                          "doc": "Simply capture the field id + the value."
                        }
                      },
                      "name": "fields",
                      "doc": "Custom fields provided by the user making the request if the action request is of type FORM_SUBMITTED\nEventually, these may need to become search indexed. For now, not indexed."
                    },
                    {
                      "type": [
                        "null",
                        {
                          "type": "record",
                          "name": "ActionWorkflowRequestAccess",
                          "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                          "fields": [
                            {
                              "Searchable": {
                                "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."
                    }
                  ],
                  "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"
                      },
                      "type": [
                        "null",
                        "string"
                      ],
                      "name": "taskUrn",
                      "default": null,
                      "doc": "The task definition that spawned this input request",
                      "Urn": "Urn"
                    },
                    {
                      "Searchable": {
                        "fieldName": "agentUrn",
                        "fieldType": "KEYWORD",
                        "queryByDefault": false
                      },
                      "java": {
                        "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                      },
                      "type": [
                        "null",
                        "string"
                      ],
                      "name": "agentUrn",
                      "default": null,
                      "doc": "The agent that requested this input",
                      "Urn": "Urn"
                    },
                    {
                      "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"
                              },
                              "type": "string",
                              "name": "targetDocument",
                              "doc": "The base document this change affects.",
                              "Urn": "Urn",
                              "entityTypes": [
                                "document"
                              ]
                            },
                            {
                              "java": {
                                "class": "com.linkedin.pegasus2avro.common.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.",
                              "Urn": "Urn"
                            },
                            {
                              "Relationship": {
                                "entityTypes": [
                                  "document"
                                ],
                                "name": "ProposedDraftDocument"
                              },
                              "java": {
                                "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                              },
                              "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.",
                              "Urn": "Urn",
                              "entityTypes": [
                                "document"
                              ]
                            }
                          ],
                          "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."
                    }
                  ],
                  "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."
            }
          ],
          "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"
      },
      "type": "string",
      "name": "createdBy",
      "doc": "Who the action request was created by",
      "Urn": "Urn"
    },
    {
      "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"
}