acryl-datahub-cloud 0.3.13rc3__py3-none-any.whl → 0.3.13rc4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of acryl-datahub-cloud might be problematic. Click here for more details.

Files changed (33) hide show
  1. acryl_datahub_cloud/_codegen_config.json +1 -1
  2. acryl_datahub_cloud/metadata/_urns/urn_defs.py +56 -0
  3. acryl_datahub_cloud/metadata/com/linkedin/pegasus2avro/actionworkflow/__init__.py +53 -0
  4. acryl_datahub_cloud/metadata/com/linkedin/pegasus2avro/assertion/__init__.py +0 -2
  5. acryl_datahub_cloud/metadata/com/linkedin/pegasus2avro/metadata/key/__init__.py +2 -0
  6. acryl_datahub_cloud/metadata/com/linkedin/pegasus2avro/module/__init__.py +0 -4
  7. acryl_datahub_cloud/metadata/schema.avsc +732 -291
  8. acryl_datahub_cloud/metadata/schema_classes.py +1077 -280
  9. acryl_datahub_cloud/metadata/schemas/ActionRequestInfo.avsc +136 -1
  10. acryl_datahub_cloud/metadata/schemas/ActionWorkflowInfo.avsc +683 -0
  11. acryl_datahub_cloud/metadata/schemas/ActionWorkflowKey.avsc +21 -0
  12. acryl_datahub_cloud/metadata/schemas/AssertionAnalyticsRunEvent.avsc +0 -46
  13. acryl_datahub_cloud/metadata/schemas/AssertionInfo.avsc +0 -25
  14. acryl_datahub_cloud/metadata/schemas/AssertionRunEvent.avsc +0 -25
  15. acryl_datahub_cloud/metadata/schemas/CorpUserSettings.avsc +1 -10
  16. acryl_datahub_cloud/metadata/schemas/DataHubPageModuleProperties.avsc +7 -88
  17. acryl_datahub_cloud/metadata/schemas/DatasetKey.avsc +0 -1
  18. acryl_datahub_cloud/metadata/schemas/GlobalSettingsInfo.avsc +0 -9
  19. acryl_datahub_cloud/metadata/schemas/MetadataChangeEvent.avsc +136 -19
  20. acryl_datahub_cloud/metadata/schemas/MetadataChangeLog.avsc +44 -62
  21. acryl_datahub_cloud/metadata/schemas/MetadataChangeProposal.avsc +0 -61
  22. acryl_datahub_cloud/metadata/schemas/MonitorInfo.avsc +0 -25
  23. acryl_datahub_cloud/metadata/schemas/NotificationRequest.avsc +4 -0
  24. acryl_datahub_cloud/metadata/schemas/QuerySubjects.avsc +12 -1
  25. acryl_datahub_cloud/metadata/schemas/SchemaFieldKey.avsc +0 -1
  26. acryl_datahub_cloud/metadata/schemas/SystemMetadata.avsc +0 -61
  27. {acryl_datahub_cloud-0.3.13rc3.dist-info → acryl_datahub_cloud-0.3.13rc4.dist-info}/METADATA +52 -52
  28. {acryl_datahub_cloud-0.3.13rc3.dist-info → acryl_datahub_cloud-0.3.13rc4.dist-info}/RECORD +31 -30
  29. acryl_datahub_cloud/metadata/com/linkedin/pegasus2avro/logical/__init__.py +0 -15
  30. acryl_datahub_cloud/metadata/schemas/LogicalParent.avsc +0 -140
  31. {acryl_datahub_cloud-0.3.13rc3.dist-info → acryl_datahub_cloud-0.3.13rc4.dist-info}/WHEEL +0 -0
  32. {acryl_datahub_cloud-0.3.13rc3.dist-info → acryl_datahub_cloud-0.3.13rc4.dist-info}/entry_points.txt +0 -0
  33. {acryl_datahub_cloud-0.3.13rc3.dist-info → acryl_datahub_cloud-0.3.13rc4.dist-info}/top_level.txt +0 -0
@@ -767,7 +767,7 @@ class ActionRequestInfoClass(_Aspect):
767
767
 
768
768
  @property
769
769
  def type(self) -> str:
770
- """The type of the action request, for example 'TAG_ASSOCIATION'"""
770
+ """The type of the action request, for example 'TAG_ASSOCIATION', 'WORKFLOW_FORM_REQUEST'"""
771
771
  return self._inner_dict.get('type') # type: ignore
772
772
 
773
773
  @type.setter
@@ -948,6 +948,7 @@ class ActionRequestParamsClass(DictWrapper):
948
948
  createGlossaryNodeProposal: Union[None, "CreateGlossaryNodeProposalClass"]=None,
949
949
  updateDescriptionProposal: Union[None, "DescriptionProposalClass"]=None,
950
950
  dataContractProposal: Union[None, "DataContractProposalClass"]=None,
951
+ workflowFormRequest: Union[None, "ActionWorkflowFormRequestClass"]=None,
951
952
  ):
952
953
  super().__init__()
953
954
 
@@ -960,6 +961,7 @@ class ActionRequestParamsClass(DictWrapper):
960
961
  self.createGlossaryNodeProposal = createGlossaryNodeProposal
961
962
  self.updateDescriptionProposal = updateDescriptionProposal
962
963
  self.dataContractProposal = dataContractProposal
964
+ self.workflowFormRequest = workflowFormRequest
963
965
 
964
966
  def _restore_defaults(self) -> None:
965
967
  self.glossaryTermProposal = self.RECORD_SCHEMA.fields_dict["glossaryTermProposal"].default
@@ -971,6 +973,7 @@ class ActionRequestParamsClass(DictWrapper):
971
973
  self.createGlossaryNodeProposal = self.RECORD_SCHEMA.fields_dict["createGlossaryNodeProposal"].default
972
974
  self.updateDescriptionProposal = self.RECORD_SCHEMA.fields_dict["updateDescriptionProposal"].default
973
975
  self.dataContractProposal = self.RECORD_SCHEMA.fields_dict["dataContractProposal"].default
976
+ self.workflowFormRequest = self.RECORD_SCHEMA.fields_dict["workflowFormRequest"].default
974
977
 
975
978
 
976
979
  @property
@@ -1065,6 +1068,16 @@ class ActionRequestParamsClass(DictWrapper):
1065
1068
  self._inner_dict['dataContractProposal'] = value
1066
1069
 
1067
1070
 
1071
+ @property
1072
+ def workflowFormRequest(self) -> Union[None, "ActionWorkflowFormRequestClass"]:
1073
+ """An action workflow form request."""
1074
+ return self._inner_dict.get('workflowFormRequest') # type: ignore
1075
+
1076
+ @workflowFormRequest.setter
1077
+ def workflowFormRequest(self, value: Union[None, "ActionWorkflowFormRequestClass"]) -> None:
1078
+ self._inner_dict['workflowFormRequest'] = value
1079
+
1080
+
1068
1081
  class ActionRequestStatusClass(_Aspect):
1069
1082
  """The status of the action request - e.g. accepted, rejected, pending, etc"""
1070
1083
 
@@ -1498,6 +1511,985 @@ class TagProposalClass(DictWrapper):
1498
1511
  self._inner_dict['tags'] = value
1499
1512
 
1500
1513
 
1514
+ class ActionWorkflowCategoryClass(object):
1515
+ # No docs available.
1516
+
1517
+ ACCESS = "ACCESS"
1518
+ """Workflow for requesting access to a resource, such as a dataset or data job.
1519
+ Requires the `access` field to be populated with specific access parameters."""
1520
+
1521
+ CUSTOM = "CUSTOM"
1522
+ """Custom, non-access related workflow. For example, may be used to model workflows like
1523
+ asset creation, asset cleanup or deletion, etc."""
1524
+
1525
+
1526
+
1527
+ class ActionWorkflowEntrypointClass(DictWrapper):
1528
+ """The entry point arguments for the action request workflowform.
1529
+ In the future, we may extend this model to support more granular entry point filters."""
1530
+
1531
+ RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowEntrypoint")
1532
+ def __init__(self,
1533
+ type: Union[str, "ActionWorkflowEntrypointTypeClass"],
1534
+ label: str,
1535
+ filter: Union[None, "FilterClass"]=None,
1536
+ ):
1537
+ super().__init__()
1538
+
1539
+ self.type = type
1540
+ self.label = label
1541
+ self.filter = filter
1542
+
1543
+ def _restore_defaults(self) -> None:
1544
+ self.type = ActionWorkflowEntrypointTypeClass.HOME
1545
+ self.label = str()
1546
+ self.filter = self.RECORD_SCHEMA.fields_dict["filter"].default
1547
+
1548
+
1549
+ @property
1550
+ def type(self) -> Union[str, "ActionWorkflowEntrypointTypeClass"]:
1551
+ """The type of entry point for the action request workflow.
1552
+ This determines where the action request workflow will be displayed."""
1553
+ return self._inner_dict.get('type') # type: ignore
1554
+
1555
+ @type.setter
1556
+ def type(self, value: Union[str, "ActionWorkflowEntrypointTypeClass"]) -> None:
1557
+ self._inner_dict['type'] = value
1558
+
1559
+
1560
+ @property
1561
+ def label(self) -> str:
1562
+ """The label for the entry point, which is displayed to users.
1563
+ This should be a user-friendly name that describes the action request."""
1564
+ return self._inner_dict.get('label') # type: ignore
1565
+
1566
+ @label.setter
1567
+ def label(self, value: str) -> None:
1568
+ self._inner_dict['label'] = value
1569
+
1570
+
1571
+ @property
1572
+ def filter(self) -> Union[None, "FilterClass"]:
1573
+ """Additional filter criteria to determine when the entry point should be displayed.
1574
+
1575
+ Not yet supported (but will be in the future)."""
1576
+ return self._inner_dict.get('filter') # type: ignore
1577
+
1578
+ @filter.setter
1579
+ def filter(self, value: Union[None, "FilterClass"]) -> None:
1580
+ self._inner_dict['filter'] = value
1581
+
1582
+
1583
+ class ActionWorkflowEntrypointTypeClass(object):
1584
+ # No docs available.
1585
+
1586
+ HOME = "HOME"
1587
+ """ Visible on the home page to all users. """
1588
+
1589
+ ENTITY_PROFILE = "ENTITY_PROFILE"
1590
+ """ Visible on the entity profile page. For all valid entity types specified in the parent object. """
1591
+
1592
+
1593
+
1594
+ class ActionWorkflowFieldClass(DictWrapper):
1595
+ """A field inside an Action Workflow Form."""
1596
+
1597
+ RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowField")
1598
+ def __init__(self,
1599
+ id: str,
1600
+ name: str,
1601
+ valueType: str,
1602
+ cardinality: Union[str, "PropertyCardinalityClass"],
1603
+ description: Union[None, str]=None,
1604
+ allowedEntityTypes: Union[None, List[str]]=None,
1605
+ allowedValues: Union[None, List["PropertyValueClass"]]=None,
1606
+ required: Optional[bool]=None,
1607
+ condition: Union[None, "ActionWorkflowFieldConditionClass"]=None,
1608
+ ):
1609
+ super().__init__()
1610
+
1611
+ self.id = id
1612
+ self.name = name
1613
+ self.description = description
1614
+ self.valueType = valueType
1615
+ self.allowedEntityTypes = allowedEntityTypes
1616
+ self.allowedValues = allowedValues
1617
+ self.cardinality = cardinality
1618
+ if required is None:
1619
+ # default: False
1620
+ self.required = self.RECORD_SCHEMA.fields_dict["required"].default
1621
+ else:
1622
+ self.required = required
1623
+ self.condition = condition
1624
+
1625
+ def _restore_defaults(self) -> None:
1626
+ self.id = str()
1627
+ self.name = str()
1628
+ self.description = self.RECORD_SCHEMA.fields_dict["description"].default
1629
+ self.valueType = str()
1630
+ self.allowedEntityTypes = self.RECORD_SCHEMA.fields_dict["allowedEntityTypes"].default
1631
+ self.allowedValues = self.RECORD_SCHEMA.fields_dict["allowedValues"].default
1632
+ self.cardinality = PropertyCardinalityClass.SINGLE
1633
+ self.required = self.RECORD_SCHEMA.fields_dict["required"].default
1634
+ self.condition = self.RECORD_SCHEMA.fields_dict["condition"].default
1635
+
1636
+
1637
+ @property
1638
+ def id(self) -> str:
1639
+ """Workflow-local id for the field"""
1640
+ return self._inner_dict.get('id') # type: ignore
1641
+
1642
+ @id.setter
1643
+ def id(self, value: str) -> None:
1644
+ self._inner_dict['id'] = value
1645
+
1646
+
1647
+ @property
1648
+ def name(self) -> str:
1649
+ """The display name or label for the field, for rendering"""
1650
+ return self._inner_dict.get('name') # type: ignore
1651
+
1652
+ @name.setter
1653
+ def name(self, value: str) -> None:
1654
+ self._inner_dict['name'] = value
1655
+
1656
+
1657
+ @property
1658
+ def description(self) -> Union[None, str]:
1659
+ """The description for the field, for rendering"""
1660
+ return self._inner_dict.get('description') # type: ignore
1661
+
1662
+ @description.setter
1663
+ def description(self, value: Union[None, str]) -> None:
1664
+ self._inner_dict['description'] = value
1665
+
1666
+
1667
+ @property
1668
+ def valueType(self) -> str:
1669
+ """The urn of the value type for the values - reused from structured properties.
1670
+ Also, used for rendering"""
1671
+ return self._inner_dict.get('valueType') # type: ignore
1672
+
1673
+ @valueType.setter
1674
+ def valueType(self, value: str) -> None:
1675
+ self._inner_dict['valueType'] = value
1676
+
1677
+
1678
+ @property
1679
+ def allowedEntityTypes(self) -> Union[None, List[str]]:
1680
+ """The urns for allowed entity types."""
1681
+ return self._inner_dict.get('allowedEntityTypes') # type: ignore
1682
+
1683
+ @allowedEntityTypes.setter
1684
+ def allowedEntityTypes(self, value: Union[None, List[str]]) -> None:
1685
+ self._inner_dict['allowedEntityTypes'] = value
1686
+
1687
+
1688
+ @property
1689
+ def allowedValues(self) -> Union[None, List["PropertyValueClass"]]:
1690
+ """A list of allowed values that the property is allowed to take.
1691
+ If this is not specified, then the property can take any value of given type."""
1692
+ return self._inner_dict.get('allowedValues') # type: ignore
1693
+
1694
+ @allowedValues.setter
1695
+ def allowedValues(self, value: Union[None, List["PropertyValueClass"]]) -> None:
1696
+ self._inner_dict['allowedValues'] = value
1697
+
1698
+
1699
+ @property
1700
+ def cardinality(self) -> Union[str, "PropertyCardinalityClass"]:
1701
+ """Whether or not multiple values are allowed."""
1702
+ return self._inner_dict.get('cardinality') # type: ignore
1703
+
1704
+ @cardinality.setter
1705
+ def cardinality(self, value: Union[str, "PropertyCardinalityClass"]) -> None:
1706
+ self._inner_dict['cardinality'] = value
1707
+
1708
+
1709
+ @property
1710
+ def required(self) -> bool:
1711
+ """Whether the field is required or not."""
1712
+ return self._inner_dict.get('required') # type: ignore
1713
+
1714
+ @required.setter
1715
+ def required(self, value: bool) -> None:
1716
+ self._inner_dict['required'] = value
1717
+
1718
+
1719
+ @property
1720
+ def condition(self) -> Union[None, "ActionWorkflowFieldConditionClass"]:
1721
+ """A dynamic condition that determines whether the field should be shown or not."""
1722
+ return self._inner_dict.get('condition') # type: ignore
1723
+
1724
+ @condition.setter
1725
+ def condition(self, value: Union[None, "ActionWorkflowFieldConditionClass"]) -> None:
1726
+ self._inner_dict['condition'] = value
1727
+
1728
+
1729
+ class ActionWorkflowFieldConditionClass(DictWrapper):
1730
+ """A condition that determines whether a form field should be shown in the action workflow.
1731
+ This may evolve in the future to have additional condition types."""
1732
+
1733
+ RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowFieldCondition")
1734
+ def __init__(self,
1735
+ type: Union[str, "ActionWorkflowFieldConditionTypeClass"],
1736
+ singleFieldValueCondition: Union[None, "ActionWorkflowSingleFieldValueConditionClass"]=None,
1737
+ ):
1738
+ super().__init__()
1739
+
1740
+ self.type = type
1741
+ self.singleFieldValueCondition = singleFieldValueCondition
1742
+
1743
+ def _restore_defaults(self) -> None:
1744
+ self.type = ActionWorkflowFieldConditionTypeClass.SINGLE_FIELD_VALUE
1745
+ self.singleFieldValueCondition = self.RECORD_SCHEMA.fields_dict["singleFieldValueCondition"].default
1746
+
1747
+
1748
+ @property
1749
+ def type(self) -> Union[str, "ActionWorkflowFieldConditionTypeClass"]:
1750
+ """The type of field condition"""
1751
+ return self._inner_dict.get('type') # type: ignore
1752
+
1753
+ @type.setter
1754
+ def type(self, value: Union[str, "ActionWorkflowFieldConditionTypeClass"]) -> None:
1755
+ self._inner_dict['type'] = value
1756
+
1757
+
1758
+ @property
1759
+ def singleFieldValueCondition(self) -> Union[None, "ActionWorkflowSingleFieldValueConditionClass"]:
1760
+ """A field value condition. Present if type is FIELD_VALUE."""
1761
+ return self._inner_dict.get('singleFieldValueCondition') # type: ignore
1762
+
1763
+ @singleFieldValueCondition.setter
1764
+ def singleFieldValueCondition(self, value: Union[None, "ActionWorkflowSingleFieldValueConditionClass"]) -> None:
1765
+ self._inner_dict['singleFieldValueCondition'] = value
1766
+
1767
+
1768
+ class ActionWorkflowFieldConditionTypeClass(object):
1769
+ # No docs available.
1770
+
1771
+ SINGLE_FIELD_VALUE = "SINGLE_FIELD_VALUE"
1772
+ """The field should be shown if the value of a previously completed field matches the specified value."""
1773
+
1774
+
1775
+
1776
+ class ActionWorkflowFormClass(DictWrapper):
1777
+ # No docs available.
1778
+
1779
+ RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowForm")
1780
+ def __init__(self,
1781
+ entrypoints: List["ActionWorkflowEntrypointClass"],
1782
+ fields: List["ActionWorkflowFieldClass"],
1783
+ entityTypes: Union[None, List[str]]=None,
1784
+ ):
1785
+ super().__init__()
1786
+
1787
+ self.entrypoints = entrypoints
1788
+ self.entityTypes = entityTypes
1789
+ self.fields = fields
1790
+
1791
+ def _restore_defaults(self) -> None:
1792
+ self.entrypoints = list()
1793
+ self.entityTypes = self.RECORD_SCHEMA.fields_dict["entityTypes"].default
1794
+ self.fields = list()
1795
+
1796
+
1797
+ @property
1798
+ def entrypoints(self) -> List["ActionWorkflowEntrypointClass"]:
1799
+ """Entrypoints for form submission."""
1800
+ return self._inner_dict.get('entrypoints') # type: ignore
1801
+
1802
+ @entrypoints.setter
1803
+ def entrypoints(self, value: List["ActionWorkflowEntrypointClass"]) -> None:
1804
+ self._inner_dict['entrypoints'] = value
1805
+
1806
+
1807
+ @property
1808
+ def entityTypes(self) -> Union[None, List[str]]:
1809
+ """The valid entity type URNs that can be associated with a Workflow Form.
1810
+ If provided, this will require that an entity of one of the provided types is specified when completing the form.
1811
+
1812
+ If no entity types are provided, the workflow form can be submitted without specifying an entity. In general, this should
1813
+ be populated for workflows of type ACCESS to enable users to request access to a specific entity!
1814
+
1815
+ If specified, the associated action requests for this workflow will contain an URN of the corresponding type inside of
1816
+ the `resource` field.
1817
+
1818
+ Note that associating multiple entities with a single Action Request is not yet supported."""
1819
+ return self._inner_dict.get('entityTypes') # type: ignore
1820
+
1821
+ @entityTypes.setter
1822
+ def entityTypes(self, value: Union[None, List[str]]) -> None:
1823
+ self._inner_dict['entityTypes'] = value
1824
+
1825
+
1826
+ @property
1827
+ def fields(self) -> List["ActionWorkflowFieldClass"]:
1828
+ """Fields comprising the workflow request. These are the inputs / arguments required to trigger the workflow."""
1829
+ return self._inner_dict.get('fields') # type: ignore
1830
+
1831
+ @fields.setter
1832
+ def fields(self, value: List["ActionWorkflowFieldClass"]) -> None:
1833
+ self._inner_dict['fields'] = value
1834
+
1835
+
1836
+ class ActionWorkflowFormRequestClass(DictWrapper):
1837
+ """A request for an access workflow form to be reviewed.
1838
+
1839
+ For an access workflow of trigger type FORM, this action request currently represents the "state"
1840
+ of the workflow instance.
1841
+
1842
+ In the future, we may add more features like due dates, escalations, etc.
1843
+ Ideally, for now we are keeping these out of here."""
1844
+
1845
+ RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowFormRequest")
1846
+ def __init__(self,
1847
+ workflow: str,
1848
+ category: Union[str, "ActionWorkflowCategoryClass"],
1849
+ fields: List["ActionWorkflowFormRequestFieldClass"],
1850
+ stepState: "ActionWorkflowRequestStepStateClass",
1851
+ customCategory: Union[None, str]=None,
1852
+ access: Union[None, "ActionWorkflowRequestAccessClass"]=None,
1853
+ ):
1854
+ super().__init__()
1855
+
1856
+ self.workflow = workflow
1857
+ self.category = category
1858
+ self.customCategory = customCategory
1859
+ self.fields = fields
1860
+ self.access = access
1861
+ self.stepState = stepState
1862
+
1863
+ def _restore_defaults(self) -> None:
1864
+ self.workflow = str()
1865
+ self.category = ActionWorkflowCategoryClass.ACCESS
1866
+ self.customCategory = self.RECORD_SCHEMA.fields_dict["customCategory"].default
1867
+ self.fields = list()
1868
+ self.access = self.RECORD_SCHEMA.fields_dict["access"].default
1869
+ self.stepState = ActionWorkflowRequestStepStateClass._construct_with_defaults()
1870
+
1871
+
1872
+ @property
1873
+ def workflow(self) -> str:
1874
+ """The urn of the associated access request workflow."""
1875
+ return self._inner_dict.get('workflow') # type: ignore
1876
+
1877
+ @workflow.setter
1878
+ def workflow(self, value: str) -> None:
1879
+ self._inner_dict['workflow'] = value
1880
+
1881
+
1882
+ @property
1883
+ def category(self) -> Union[str, "ActionWorkflowCategoryClass"]:
1884
+ """The category of the workflow.
1885
+ Primarily used for searching / filtering action requests."""
1886
+ return self._inner_dict.get('category') # type: ignore
1887
+
1888
+ @category.setter
1889
+ def category(self, value: Union[str, "ActionWorkflowCategoryClass"]) -> None:
1890
+ self._inner_dict['category'] = value
1891
+
1892
+
1893
+ @property
1894
+ def customCategory(self) -> Union[None, str]:
1895
+ """The custom category of the workflow, if category is custom.
1896
+ Primarily used for searching / filtering action requests."""
1897
+ return self._inner_dict.get('customCategory') # type: ignore
1898
+
1899
+ @customCategory.setter
1900
+ def customCategory(self, value: Union[None, str]) -> None:
1901
+ self._inner_dict['customCategory'] = value
1902
+
1903
+
1904
+ @property
1905
+ def fields(self) -> List["ActionWorkflowFormRequestFieldClass"]:
1906
+ """Custom fields provided by the user making the request if the action request is of type FORM_SUBMITTED
1907
+ Eventually, these may need to become search indexed. For now, not indexed."""
1908
+ return self._inner_dict.get('fields') # type: ignore
1909
+
1910
+ @fields.setter
1911
+ def fields(self, value: List["ActionWorkflowFormRequestFieldClass"]) -> None:
1912
+ self._inner_dict['fields'] = value
1913
+
1914
+
1915
+ @property
1916
+ def access(self) -> Union[None, "ActionWorkflowRequestAccessClass"]:
1917
+ """Details specific for access request workflow requests."""
1918
+ return self._inner_dict.get('access') # type: ignore
1919
+
1920
+ @access.setter
1921
+ def access(self, value: Union[None, "ActionWorkflowRequestAccessClass"]) -> None:
1922
+ self._inner_dict['access'] = value
1923
+
1924
+
1925
+ @property
1926
+ def stepState(self) -> "ActionWorkflowRequestStepStateClass":
1927
+ """State related to steps. This should correspond to a step of type ACTION_REQUEST_REVIEW in the workflow
1928
+ definition."""
1929
+ return self._inner_dict.get('stepState') # type: ignore
1930
+
1931
+ @stepState.setter
1932
+ def stepState(self, value: "ActionWorkflowRequestStepStateClass") -> None:
1933
+ self._inner_dict['stepState'] = value
1934
+
1935
+
1936
+ class ActionWorkflowFormRequestFieldClass(DictWrapper):
1937
+ """Simply capture the field id + the value."""
1938
+
1939
+ RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowFormRequestField")
1940
+ def __init__(self,
1941
+ id: str,
1942
+ values: List[Union[str, float]],
1943
+ ):
1944
+ super().__init__()
1945
+
1946
+ self.id = id
1947
+ self.values = values
1948
+
1949
+ def _restore_defaults(self) -> None:
1950
+ self.id = str()
1951
+ self.values = list()
1952
+
1953
+
1954
+ @property
1955
+ def id(self) -> str:
1956
+ """Workflow-local id for the field"""
1957
+ return self._inner_dict.get('id') # type: ignore
1958
+
1959
+ @id.setter
1960
+ def id(self, value: str) -> None:
1961
+ self._inner_dict['id'] = value
1962
+
1963
+
1964
+ @property
1965
+ def values(self) -> List[Union[str, float]]:
1966
+ """Value, reused model from structured properties. Empty if no response was provided."""
1967
+ return self._inner_dict.get('values') # type: ignore
1968
+
1969
+ @values.setter
1970
+ def values(self, value: List[Union[str, float]]) -> None:
1971
+ self._inner_dict['values'] = value
1972
+
1973
+
1974
+ class ActionWorkflowInfoClass(_Aspect):
1975
+ """The ActionWorkflowInfo record captures the metadata and configuration of a workflow.
1976
+ TODO: In the future, we may store the serialized camunda / flowable workflow instance ID inside.
1977
+ We'll likely also need to add the "steps" into here since we'll need that to inform state transitions."""
1978
+
1979
+
1980
+ ASPECT_NAME = 'actionWorkflowInfo'
1981
+ ASPECT_INFO = {}
1982
+ RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowInfo")
1983
+
1984
+ def __init__(self,
1985
+ name: str,
1986
+ category: Union[str, "ActionWorkflowCategoryClass"],
1987
+ trigger: "ActionWorkflowTriggerClass",
1988
+ steps: List["ActionWorkflowStepClass"],
1989
+ created: "AuditStampClass",
1990
+ lastModified: "AuditStampClass",
1991
+ customCategory: Union[None, str]=None,
1992
+ description: Union[None, str]=None,
1993
+ ):
1994
+ super().__init__()
1995
+
1996
+ self.name = name
1997
+ self.category = category
1998
+ self.customCategory = customCategory
1999
+ self.description = description
2000
+ self.trigger = trigger
2001
+ self.steps = steps
2002
+ self.created = created
2003
+ self.lastModified = lastModified
2004
+
2005
+ def _restore_defaults(self) -> None:
2006
+ self.name = str()
2007
+ self.category = ActionWorkflowCategoryClass.ACCESS
2008
+ self.customCategory = self.RECORD_SCHEMA.fields_dict["customCategory"].default
2009
+ self.description = self.RECORD_SCHEMA.fields_dict["description"].default
2010
+ self.trigger = ActionWorkflowTriggerClass._construct_with_defaults()
2011
+ self.steps = list()
2012
+ self.created = AuditStampClass._construct_with_defaults()
2013
+ self.lastModified = AuditStampClass._construct_with_defaults()
2014
+
2015
+
2016
+ @property
2017
+ def name(self) -> str:
2018
+ """Display name of the workflow"""
2019
+ return self._inner_dict.get('name') # type: ignore
2020
+
2021
+ @name.setter
2022
+ def name(self, value: str) -> None:
2023
+ self._inner_dict['name'] = value
2024
+
2025
+
2026
+ @property
2027
+ def category(self) -> Union[str, "ActionWorkflowCategoryClass"]:
2028
+ """Top-level category of the workflow, e.g. ACCESS"""
2029
+ return self._inner_dict.get('category') # type: ignore
2030
+
2031
+ @category.setter
2032
+ def category(self, value: Union[str, "ActionWorkflowCategoryClass"]) -> None:
2033
+ self._inner_dict['category'] = value
2034
+
2035
+
2036
+ @property
2037
+ def customCategory(self) -> Union[None, str]:
2038
+ """Custom category for the workflow, if applicable.
2039
+
2040
+ This is used to group workflows that are not part of the standard types.
2041
+ Should be provided when the type is CUSTOM."""
2042
+ return self._inner_dict.get('customCategory') # type: ignore
2043
+
2044
+ @customCategory.setter
2045
+ def customCategory(self, value: Union[None, str]) -> None:
2046
+ self._inner_dict['customCategory'] = value
2047
+
2048
+
2049
+ @property
2050
+ def description(self) -> Union[None, str]:
2051
+ """Description of the workflow.
2052
+ If this is based on a Form trigger, this will be displayed to users when completing the form. """
2053
+ return self._inner_dict.get('description') # type: ignore
2054
+
2055
+ @description.setter
2056
+ def description(self, value: Union[None, str]) -> None:
2057
+ self._inner_dict['description'] = value
2058
+
2059
+
2060
+ @property
2061
+ def trigger(self) -> "ActionWorkflowTriggerClass":
2062
+ """The action or event that triggers the workflow. This MUST be stored here, because there is no other
2063
+ place to capture dynamic form state like this. """
2064
+ return self._inner_dict.get('trigger') # type: ignore
2065
+
2066
+ @trigger.setter
2067
+ def trigger(self, value: "ActionWorkflowTriggerClass") -> None:
2068
+ self._inner_dict['trigger'] = value
2069
+
2070
+
2071
+ @property
2072
+ def steps(self) -> List["ActionWorkflowStepClass"]:
2073
+ """Definition of the steps / tasks / nodes comprising the workflow definition. This is the part we can aim
2074
+ to be able to convert / transform into serialized XML BPMN Format. For now, we model it strongly here.
2075
+ If we can successfully use BPMN for step state, we can deprecate this field in place of the XML serialization.
2076
+
2077
+ This is the part we'll try to build a transpiler to BPMN for execution for. Ultimately, we do need
2078
+ a representation we can easily convert into the frontend framework for display. This represents the set of
2079
+ well known workflow step types - across tasks, conditionals, notifications, etc - that are officially supported today.
2080
+
2081
+ If necessary, we'll extend this to represent conditional branching nodes as a step / node in the Workflow, e.g. Conditional Step, Notification Step, Review Step"""
2082
+ return self._inner_dict.get('steps') # type: ignore
2083
+
2084
+ @steps.setter
2085
+ def steps(self, value: List["ActionWorkflowStepClass"]) -> None:
2086
+ self._inner_dict['steps'] = value
2087
+
2088
+
2089
+ @property
2090
+ def created(self) -> "AuditStampClass":
2091
+ """Audit stamp capturing the time and actor who created the workflow."""
2092
+ return self._inner_dict.get('created') # type: ignore
2093
+
2094
+ @created.setter
2095
+ def created(self, value: "AuditStampClass") -> None:
2096
+ self._inner_dict['created'] = value
2097
+
2098
+
2099
+ @property
2100
+ def lastModified(self) -> "AuditStampClass":
2101
+ """Audit stamp capturing the time and actor who last modified the workflow."""
2102
+ return self._inner_dict.get('lastModified') # type: ignore
2103
+
2104
+ @lastModified.setter
2105
+ def lastModified(self, value: "AuditStampClass") -> None:
2106
+ self._inner_dict['lastModified'] = value
2107
+
2108
+
2109
+ class ActionWorkflowRequestAccessClass(DictWrapper):
2110
+ # No docs available.
2111
+
2112
+ RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowRequestAccess")
2113
+ def __init__(self,
2114
+ expiresAt: Union[None, int]=None,
2115
+ ):
2116
+ super().__init__()
2117
+
2118
+ self.expiresAt = expiresAt
2119
+
2120
+ def _restore_defaults(self) -> None:
2121
+ self.expiresAt = self.RECORD_SCHEMA.fields_dict["expiresAt"].default
2122
+
2123
+
2124
+ @property
2125
+ def expiresAt(self) -> Union[None, int]:
2126
+ """Expiration time for the action request (optional, if part of the template)."""
2127
+ return self._inner_dict.get('expiresAt') # type: ignore
2128
+
2129
+ @expiresAt.setter
2130
+ def expiresAt(self, value: Union[None, int]) -> None:
2131
+ self._inner_dict['expiresAt'] = value
2132
+
2133
+
2134
+ class ActionWorkflowRequestStepStateClass(DictWrapper):
2135
+ # No docs available.
2136
+
2137
+ RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowRequestStepState")
2138
+ def __init__(self,
2139
+ stepId: str,
2140
+ ):
2141
+ super().__init__()
2142
+
2143
+ self.stepId = stepId
2144
+
2145
+ def _restore_defaults(self) -> None:
2146
+ self.stepId = str()
2147
+
2148
+
2149
+ @property
2150
+ def stepId(self) -> str:
2151
+ """The id of the current step in the workflow, which should be of type ACTION_REQUEST_REVIEW."""
2152
+ return self._inner_dict.get('stepId') # type: ignore
2153
+
2154
+ @stepId.setter
2155
+ def stepId(self, value: str) -> None:
2156
+ self._inner_dict['stepId'] = value
2157
+
2158
+
2159
+ class ActionWorkflowSingleFieldValueConditionClass(DictWrapper):
2160
+ """A specific type of field condition that checks whether a field should be shown based on the value of a previously completed field."""
2161
+
2162
+ RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowSingleFieldValueCondition")
2163
+ def __init__(self,
2164
+ field: str,
2165
+ values: Optional[List[str]]=None,
2166
+ condition: Optional[Union[str, "ConditionClass"]]=None,
2167
+ negated: Optional[bool]=None,
2168
+ ):
2169
+ super().__init__()
2170
+
2171
+ self.field = field
2172
+ if values is None:
2173
+ # default: []
2174
+ self.values = list()
2175
+ else:
2176
+ self.values = values
2177
+ if condition is None:
2178
+ # default: 'EQUAL'
2179
+ self.condition = self.RECORD_SCHEMA.fields_dict["condition"].default
2180
+ else:
2181
+ self.condition = condition
2182
+ if negated is None:
2183
+ # default: False
2184
+ self.negated = self.RECORD_SCHEMA.fields_dict["negated"].default
2185
+ else:
2186
+ self.negated = negated
2187
+
2188
+ def _restore_defaults(self) -> None:
2189
+ self.field = str()
2190
+ self.values = list()
2191
+ self.condition = self.RECORD_SCHEMA.fields_dict["condition"].default
2192
+ self.negated = self.RECORD_SCHEMA.fields_dict["negated"].default
2193
+
2194
+
2195
+ @property
2196
+ def field(self) -> str:
2197
+ """The id / name of the field that the criterion refers to"""
2198
+ return self._inner_dict.get('field') # type: ignore
2199
+
2200
+ @field.setter
2201
+ def field(self, value: str) -> None:
2202
+ self._inner_dict['field'] = value
2203
+
2204
+
2205
+ @property
2206
+ def values(self) -> List[str]:
2207
+ """Values. one of which the intended field should match
2208
+ Note, if values is set, the above "value" field will be ignored"""
2209
+ return self._inner_dict.get('values') # type: ignore
2210
+
2211
+ @values.setter
2212
+ def values(self, value: List[str]) -> None:
2213
+ self._inner_dict['values'] = value
2214
+
2215
+
2216
+ @property
2217
+ def condition(self) -> Union[str, "ConditionClass"]:
2218
+ """The condition for the criterion, e.g. EQUAL, START_WITH"""
2219
+ return self._inner_dict.get('condition') # type: ignore
2220
+
2221
+ @condition.setter
2222
+ def condition(self, value: Union[str, "ConditionClass"]) -> None:
2223
+ self._inner_dict['condition'] = value
2224
+
2225
+
2226
+ @property
2227
+ def negated(self) -> bool:
2228
+ """Whether the condition should be negated"""
2229
+ return self._inner_dict.get('negated') # type: ignore
2230
+
2231
+ @negated.setter
2232
+ def negated(self, value: bool) -> None:
2233
+ self._inner_dict['negated'] = value
2234
+
2235
+
2236
+ class ActionWorkflowStepClass(DictWrapper):
2237
+ """Defines a single review step in a workflow.
2238
+
2239
+ Today, steps are simple. They execute in sequence after the trigger event.
2240
+
2241
+ In the future, we may extend steps to include "depends on steps" to form a DAG structure across
2242
+ steps. For now, steps execute in linear sequence after the trigger event -- however the expectation
2243
+ is that they COULD run in parallel after the trigger event without a problem in the future.
2244
+
2245
+ If necessary, we'll extend this to represent conditional branching nodes as a step / node in the Workflow, e.g. Conditional Step, Notification Step, Review Step
2246
+
2247
+ Today, step state is reflected via a single entity representing the workflow instance: the ActionRequest entity.
2248
+ In the future we'll explore modeling individual step states separately if required."""
2249
+
2250
+ RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowStep")
2251
+ def __init__(self,
2252
+ id: str,
2253
+ type: Union[str, "ActionWorkflowStepTypeClass"],
2254
+ description: Union[None, str]=None,
2255
+ actors: Union[None, "ActionWorkflowStepActorsClass"]=None,
2256
+ ):
2257
+ super().__init__()
2258
+
2259
+ self.id = id
2260
+ self.type = type
2261
+ self.description = description
2262
+ self.actors = actors
2263
+
2264
+ def _restore_defaults(self) -> None:
2265
+ self.id = str()
2266
+ self.type = ActionWorkflowStepTypeClass.APPROVAL
2267
+ self.description = self.RECORD_SCHEMA.fields_dict["description"].default
2268
+ self.actors = self.RECORD_SCHEMA.fields_dict["actors"].default
2269
+
2270
+
2271
+ @property
2272
+ def id(self) -> str:
2273
+ """A unique identifier for this step within the workflow.
2274
+ This ID must be unique within the workflow and is used to match values during workflow execution."""
2275
+ return self._inner_dict.get('id') # type: ignore
2276
+
2277
+ @id.setter
2278
+ def id(self, value: str) -> None:
2279
+ self._inner_dict['id'] = value
2280
+
2281
+
2282
+ @property
2283
+ def type(self) -> Union[str, "ActionWorkflowStepTypeClass"]:
2284
+ """A type of step / task / node in the Action Workflow. """
2285
+ return self._inner_dict.get('type') # type: ignore
2286
+
2287
+ @type.setter
2288
+ def type(self, value: Union[str, "ActionWorkflowStepTypeClass"]) -> None:
2289
+ self._inner_dict['type'] = value
2290
+
2291
+
2292
+ @property
2293
+ def description(self) -> Union[None, str]:
2294
+ """Optional description shown alongside the step to explain its purpose."""
2295
+ return self._inner_dict.get('description') # type: ignore
2296
+
2297
+ @description.setter
2298
+ def description(self, value: Union[None, str]) -> None:
2299
+ self._inner_dict['description'] = value
2300
+
2301
+
2302
+ @property
2303
+ def actors(self) -> Union[None, "ActionWorkflowStepActorsClass"]:
2304
+ """A definition of the actors required to execute the step, if there are any.
2305
+
2306
+ For steps of type REQUEST_REVIEW, this field MUST be provided! """
2307
+ return self._inner_dict.get('actors') # type: ignore
2308
+
2309
+ @actors.setter
2310
+ def actors(self, value: Union[None, "ActionWorkflowStepActorsClass"]) -> None:
2311
+ self._inner_dict['actors'] = value
2312
+
2313
+
2314
+ class ActionWorkflowStepActorsClass(DictWrapper):
2315
+ """A definition of the actors required to review."""
2316
+
2317
+ RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowStepActors")
2318
+ def __init__(self,
2319
+ users: List[str],
2320
+ groups: List[str],
2321
+ roles: List[str],
2322
+ dynamicAssignment: Union[None, "ActionWorkflowStepDynamicAssignmentClass"]=None,
2323
+ ):
2324
+ super().__init__()
2325
+
2326
+ self.users = users
2327
+ self.groups = groups
2328
+ self.roles = roles
2329
+ self.dynamicAssignment = dynamicAssignment
2330
+
2331
+ def _restore_defaults(self) -> None:
2332
+ self.users = list()
2333
+ self.groups = list()
2334
+ self.roles = list()
2335
+ self.dynamicAssignment = self.RECORD_SCHEMA.fields_dict["dynamicAssignment"].default
2336
+
2337
+
2338
+ @property
2339
+ def users(self) -> List[str]:
2340
+ """Users statically assigned to perform the review step."""
2341
+ return self._inner_dict.get('users') # type: ignore
2342
+
2343
+ @users.setter
2344
+ def users(self, value: List[str]) -> None:
2345
+ self._inner_dict['users'] = value
2346
+
2347
+
2348
+ @property
2349
+ def groups(self) -> List[str]:
2350
+ """Groups statically assigned to perform the review step."""
2351
+ return self._inner_dict.get('groups') # type: ignore
2352
+
2353
+ @groups.setter
2354
+ def groups(self, value: List[str]) -> None:
2355
+ self._inner_dict['groups'] = value
2356
+
2357
+
2358
+ @property
2359
+ def roles(self) -> List[str]:
2360
+ """Roles statically assigned to perform the review step."""
2361
+ return self._inner_dict.get('roles') # type: ignore
2362
+
2363
+ @roles.setter
2364
+ def roles(self, value: List[str]) -> None:
2365
+ self._inner_dict['roles'] = value
2366
+
2367
+
2368
+ @property
2369
+ def dynamicAssignment(self) -> Union[None, "ActionWorkflowStepDynamicAssignmentClass"]:
2370
+ """Dynamic assignment type for the review step."""
2371
+ return self._inner_dict.get('dynamicAssignment') # type: ignore
2372
+
2373
+ @dynamicAssignment.setter
2374
+ def dynamicAssignment(self, value: Union[None, "ActionWorkflowStepDynamicAssignmentClass"]) -> None:
2375
+ self._inner_dict['dynamicAssignment'] = value
2376
+
2377
+
2378
+ class ActionWorkflowStepDynamicAssignmentClass(DictWrapper):
2379
+ # No docs available.
2380
+
2381
+ RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowStepDynamicAssignment")
2382
+ def __init__(self,
2383
+ type: Union[str, "ActionWorkflowStepDynamicAssignmentTypeClass"],
2384
+ ownershipTypeUrns: Union[None, List[str]]=None,
2385
+ ):
2386
+ super().__init__()
2387
+
2388
+ self.type = type
2389
+ self.ownershipTypeUrns = ownershipTypeUrns
2390
+
2391
+ def _restore_defaults(self) -> None:
2392
+ self.type = ActionWorkflowStepDynamicAssignmentTypeClass.ENTITY_OWNERS
2393
+ self.ownershipTypeUrns = self.RECORD_SCHEMA.fields_dict["ownershipTypeUrns"].default
2394
+
2395
+
2396
+ @property
2397
+ def type(self) -> Union[str, "ActionWorkflowStepDynamicAssignmentTypeClass"]:
2398
+ """A standardized policy for resolving actors dynamically for an access request."""
2399
+ return self._inner_dict.get('type') # type: ignore
2400
+
2401
+ @type.setter
2402
+ def type(self, value: Union[str, "ActionWorkflowStepDynamicAssignmentTypeClass"]) -> None:
2403
+ self._inner_dict['type'] = value
2404
+
2405
+
2406
+ @property
2407
+ def ownershipTypeUrns(self) -> Union[None, List[str]]:
2408
+ """Optional: A well defined set of ownership type urns to including in routing."""
2409
+ return self._inner_dict.get('ownershipTypeUrns') # type: ignore
2410
+
2411
+ @ownershipTypeUrns.setter
2412
+ def ownershipTypeUrns(self, value: Union[None, List[str]]) -> None:
2413
+ self._inner_dict['ownershipTypeUrns'] = value
2414
+
2415
+
2416
+ class ActionWorkflowStepDynamicAssignmentTypeClass(object):
2417
+ # No docs available.
2418
+
2419
+ ENTITY_OWNERS = "ENTITY_OWNERS"
2420
+ """Assign the entity owners."""
2421
+
2422
+ ENTITY_DOMAIN_OWNERS = "ENTITY_DOMAIN_OWNERS"
2423
+ """Assign the entity domain owners."""
2424
+
2425
+ ENTITY_DATA_PRODUCT_OWNERS = "ENTITY_DATA_PRODUCT_OWNERS"
2426
+ """Assign the entity data product owners."""
2427
+
2428
+
2429
+
2430
+ class ActionWorkflowStepTypeClass(object):
2431
+ # No docs available.
2432
+
2433
+ APPROVAL = "APPROVAL"
2434
+ """The only step type currently supported - a human review step.
2435
+ This step type requires that an assigned user reviews an action request associated with this workflow.
2436
+ reviews the request, approving or denying it (currently the actions supported, may extend later). """
2437
+
2438
+
2439
+
2440
+ class ActionWorkflowTriggerClass(DictWrapper):
2441
+ """Defines the conditions on which the action workflow is triggered.
2442
+
2443
+ Currently we have only one trigger type, but we expect this to extend e.g. in the case that change events, proposals,
2444
+ or other actions can trigger workflows.
2445
+
2446
+ Currently, the workflow must have exactly 1 trigger condition. We don't expect this to change. """
2447
+
2448
+ RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowTrigger")
2449
+ def __init__(self,
2450
+ type: Union[str, "ActionWorkflowTriggerTypeClass"],
2451
+ form: Union[None, "ActionWorkflowFormClass"]=None,
2452
+ ):
2453
+ super().__init__()
2454
+
2455
+ self.type = type
2456
+ self.form = form
2457
+
2458
+ def _restore_defaults(self) -> None:
2459
+ self.type = ActionWorkflowTriggerTypeClass.FORM_SUBMITTED
2460
+ self.form = self.RECORD_SCHEMA.fields_dict["form"].default
2461
+
2462
+
2463
+ @property
2464
+ def type(self) -> Union[str, "ActionWorkflowTriggerTypeClass"]:
2465
+ """A type of step / task / node in the Action Workflow. """
2466
+ return self._inner_dict.get('type') # type: ignore
2467
+
2468
+ @type.setter
2469
+ def type(self, value: Union[str, "ActionWorkflowTriggerTypeClass"]) -> None:
2470
+ self._inner_dict['type'] = value
2471
+
2472
+
2473
+ @property
2474
+ def form(self) -> Union[None, "ActionWorkflowFormClass"]:
2475
+ """The form definition that will trigger the action workflow when submitted. """
2476
+ return self._inner_dict.get('form') # type: ignore
2477
+
2478
+ @form.setter
2479
+ def form(self, value: Union[None, "ActionWorkflowFormClass"]) -> None:
2480
+ self._inner_dict['form'] = value
2481
+
2482
+
2483
+ class ActionWorkflowTriggerTypeClass(object):
2484
+ # No docs available.
2485
+
2486
+ FORM_SUBMITTED = "FORM_SUBMITTED"
2487
+ """The only trigger type currently supported - a workflow request form is submitted successfully.
2488
+ This enables admins to create forms and display them on various entrypoints.
2489
+ The form is also captured in the field "form" below. """
2490
+
2491
+
2492
+
1501
2493
  class AiInferenceMetadataClass(_Aspect):
1502
2494
  """AI Inference Metadata of various types."""
1503
2495
 
@@ -2288,7 +3280,6 @@ class AssertionAnalyticsRunEventClass(_Aspect):
2288
3280
  asserteeGlossaryTerms: Union[None, List[str]]=None,
2289
3281
  asserteeOwners: Union[None, List[str]]=None,
2290
3282
  asserteeDataPlatform: Union[None, str]=None,
2291
- asserteeContainer: Union[None, str]=None,
2292
3283
  asserteeDataPlatformInstance: Union[None, str]=None,
2293
3284
  asserteeSchemaFieldGlossaryTerms: Union[None, List[str]]=None,
2294
3285
  asserteeSchemaFieldTags: Union[None, List[str]]=None,
@@ -2307,7 +3298,6 @@ class AssertionAnalyticsRunEventClass(_Aspect):
2307
3298
  self.asserteeGlossaryTerms = asserteeGlossaryTerms
2308
3299
  self.asserteeOwners = asserteeOwners
2309
3300
  self.asserteeDataPlatform = asserteeDataPlatform
2310
- self.asserteeContainer = asserteeContainer
2311
3301
  self.asserteeDataPlatformInstance = asserteeDataPlatformInstance
2312
3302
  self.asserteeSchemaFieldGlossaryTerms = asserteeSchemaFieldGlossaryTerms
2313
3303
  self.asserteeSchemaFieldTags = asserteeSchemaFieldTags
@@ -2334,7 +3324,6 @@ class AssertionAnalyticsRunEventClass(_Aspect):
2334
3324
  self.asserteeGlossaryTerms = self.RECORD_SCHEMA.fields_dict["asserteeGlossaryTerms"].default
2335
3325
  self.asserteeOwners = self.RECORD_SCHEMA.fields_dict["asserteeOwners"].default
2336
3326
  self.asserteeDataPlatform = self.RECORD_SCHEMA.fields_dict["asserteeDataPlatform"].default
2337
- self.asserteeContainer = self.RECORD_SCHEMA.fields_dict["asserteeContainer"].default
2338
3327
  self.asserteeDataPlatformInstance = self.RECORD_SCHEMA.fields_dict["asserteeDataPlatformInstance"].default
2339
3328
  self.asserteeSchemaFieldGlossaryTerms = self.RECORD_SCHEMA.fields_dict["asserteeSchemaFieldGlossaryTerms"].default
2340
3329
  self.asserteeSchemaFieldTags = self.RECORD_SCHEMA.fields_dict["asserteeSchemaFieldTags"].default
@@ -2430,16 +3419,6 @@ class AssertionAnalyticsRunEventClass(_Aspect):
2430
3419
  self._inner_dict['asserteeDataPlatform'] = value
2431
3420
 
2432
3421
 
2433
- @property
2434
- def asserteeContainer(self) -> Union[None, str]:
2435
- """The Container attached to the entity's parent Asset"""
2436
- return self._inner_dict.get('asserteeContainer') # type: ignore
2437
-
2438
- @asserteeContainer.setter
2439
- def asserteeContainer(self, value: Union[None, str]) -> None:
2440
- self._inner_dict['asserteeContainer'] = value
2441
-
2442
-
2443
3422
  @property
2444
3423
  def asserteeDataPlatformInstance(self) -> Union[None, str]:
2445
3424
  """Instance of the parent's data platform (e.g. db instance)"""
@@ -2999,7 +3978,6 @@ class AssertionInfoClass(_Aspect):
2999
3978
  source: Union[None, "AssertionSourceClass"]=None,
3000
3979
  lastUpdated: Union[None, "AuditStampClass"]=None,
3001
3980
  description: Union[None, str]=None,
3002
- note: Union[None, "AssertionNoteClass"]=None,
3003
3981
  ):
3004
3982
  super().__init__()
3005
3983
 
@@ -3020,7 +3998,6 @@ class AssertionInfoClass(_Aspect):
3020
3998
  self.source = source
3021
3999
  self.lastUpdated = lastUpdated
3022
4000
  self.description = description
3023
- self.note = note
3024
4001
 
3025
4002
  def _restore_defaults(self) -> None:
3026
4003
  self.customProperties = dict()
@@ -3036,7 +4013,6 @@ class AssertionInfoClass(_Aspect):
3036
4013
  self.source = self.RECORD_SCHEMA.fields_dict["source"].default
3037
4014
  self.lastUpdated = self.RECORD_SCHEMA.fields_dict["lastUpdated"].default
3038
4015
  self.description = self.RECORD_SCHEMA.fields_dict["description"].default
3039
- self.note = self.RECORD_SCHEMA.fields_dict["note"].default
3040
4016
 
3041
4017
 
3042
4018
  @property
@@ -3173,17 +4149,6 @@ class AssertionInfoClass(_Aspect):
3173
4149
  self._inner_dict['description'] = value
3174
4150
 
3175
4151
 
3176
- @property
3177
- def note(self) -> Union[None, "AssertionNoteClass"]:
3178
- """An optional note to give technical owners more context about the assertion, and how to troubleshoot it.
3179
- The UI will render this in markdown format."""
3180
- return self._inner_dict.get('note') # type: ignore
3181
-
3182
- @note.setter
3183
- def note(self, value: Union[None, "AssertionNoteClass"]) -> None:
3184
- self._inner_dict['note'] = value
3185
-
3186
-
3187
4152
  class AssertionMetricClass(DictWrapper):
3188
4153
  # No docs available.
3189
4154
 
@@ -3247,44 +4212,6 @@ class AssertionMonitorSensitivityClass(DictWrapper):
3247
4212
  self._inner_dict['level'] = value
3248
4213
 
3249
4214
 
3250
- class AssertionNoteClass(DictWrapper):
3251
- # No docs available.
3252
-
3253
- RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.assertion.AssertionNote")
3254
- def __init__(self,
3255
- content: str,
3256
- lastModified: "AuditStampClass",
3257
- ):
3258
- super().__init__()
3259
-
3260
- self.content = content
3261
- self.lastModified = lastModified
3262
-
3263
- def _restore_defaults(self) -> None:
3264
- self.content = str()
3265
- self.lastModified = AuditStampClass._construct_with_defaults()
3266
-
3267
-
3268
- @property
3269
- def content(self) -> str:
3270
- """The note to give technical owners more context about the assertion, and how to troubleshoot it."""
3271
- return self._inner_dict.get('content') # type: ignore
3272
-
3273
- @content.setter
3274
- def content(self, value: str) -> None:
3275
- self._inner_dict['content'] = value
3276
-
3277
-
3278
- @property
3279
- def lastModified(self) -> "AuditStampClass":
3280
- """The time at which the note was last modified."""
3281
- return self._inner_dict.get('lastModified') # type: ignore
3282
-
3283
- @lastModified.setter
3284
- def lastModified(self, value: "AuditStampClass") -> None:
3285
- self._inner_dict['lastModified'] = value
3286
-
3287
-
3288
4215
  class AssertionResultClass(DictWrapper):
3289
4216
  """The result of running an assertion"""
3290
4217
 
@@ -17646,6 +18573,12 @@ class NotificationTemplateTypeClass(object):
17646
18573
 
17647
18574
  BROADCAST_COMPLIANCE_FORM_PUBLISH = "BROADCAST_COMPLIANCE_FORM_PUBLISH"
17648
18575
 
18576
+ BROADCAST_NEW_ACTION_WORKFLOW_FORM_REQUEST = "BROADCAST_NEW_ACTION_WORKFLOW_FORM_REQUEST"
18577
+ """Broadcast that a new action workflow form request has been created or needs review."""
18578
+
18579
+ BROADCAST_ACTION_WORKFLOW_FORM_REQUEST_STATUS_CHANGE = "BROADCAST_ACTION_WORKFLOW_FORM_REQUEST_STATUS_CHANGE"
18580
+ """Broadcast that an action workflow form request has been completed (approved or denied)."""
18581
+
17649
18582
  INVALID_TEMPLATE = "INVALID_TEMPLATE"
17650
18583
 
17651
18584
 
@@ -22055,42 +22988,42 @@ class LinkPreviewTypeClass(object):
22055
22988
 
22056
22989
 
22057
22990
 
22058
- class LogicalParentClass(_Aspect):
22059
- # No docs available.
22991
+ class ActionRequestKeyClass(_Aspect):
22992
+ """Key for an ActionRequest"""
22060
22993
 
22061
22994
 
22062
- ASPECT_NAME = 'logicalParent'
22063
- ASPECT_INFO = {}
22064
- RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.logical.LogicalParent")
22995
+ ASPECT_NAME = 'actionRequestKey'
22996
+ ASPECT_INFO = {'keyForEntity': 'actionRequest', 'entityCategory': 'internal', 'entityAspects': ['actionRequestStatus', 'actionRequestInfo']}
22997
+ RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.metadata.key.ActionRequestKey")
22065
22998
 
22066
22999
  def __init__(self,
22067
- parent: "EdgeClass",
23000
+ id: str,
22068
23001
  ):
22069
23002
  super().__init__()
22070
23003
 
22071
- self.parent = parent
23004
+ self.id = id
22072
23005
 
22073
23006
  def _restore_defaults(self) -> None:
22074
- self.parent = EdgeClass._construct_with_defaults()
23007
+ self.id = str()
22075
23008
 
22076
23009
 
22077
23010
  @property
22078
- def parent(self) -> "EdgeClass":
23011
+ def id(self) -> str:
22079
23012
  # No docs available.
22080
- return self._inner_dict.get('parent') # type: ignore
23013
+ return self._inner_dict.get('id') # type: ignore
22081
23014
 
22082
- @parent.setter
22083
- def parent(self, value: "EdgeClass") -> None:
22084
- self._inner_dict['parent'] = value
23015
+ @id.setter
23016
+ def id(self, value: str) -> None:
23017
+ self._inner_dict['id'] = value
22085
23018
 
22086
23019
 
22087
- class ActionRequestKeyClass(_Aspect):
22088
- """Key for an ActionRequest"""
23020
+ class ActionWorkflowKeyClass(_Aspect):
23021
+ """Key for an ActionRequestWorkflow"""
22089
23022
 
22090
23023
 
22091
- ASPECT_NAME = 'actionRequestKey'
22092
- ASPECT_INFO = {'keyForEntity': 'actionRequest', 'entityCategory': 'internal', 'entityAspects': ['actionRequestStatus', 'actionRequestInfo']}
22093
- RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.metadata.key.ActionRequestKey")
23024
+ ASPECT_NAME = 'actionWorkflowKey'
23025
+ ASPECT_INFO = {'keyForEntity': 'actionWorkflow', 'entityCategory': 'internal', 'entityAspects': ['actionWorkflowInfo']}
23026
+ RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.metadata.key.ActionWorkflowKey")
22094
23027
 
22095
23028
  def __init__(self,
22096
23029
  id: str,
@@ -22105,7 +23038,7 @@ class ActionRequestKeyClass(_Aspect):
22105
23038
 
22106
23039
  @property
22107
23040
  def id(self) -> str:
22108
- # No docs available.
23041
+ """ The unique identifier for the workflow """
22109
23042
  return self._inner_dict.get('id') # type: ignore
22110
23043
 
22111
23044
  @id.setter
@@ -23135,7 +24068,7 @@ class DatasetKeyClass(_Aspect):
23135
24068
 
23136
24069
 
23137
24070
  ASPECT_NAME = 'datasetKey'
23138
- ASPECT_INFO = {'keyForEntity': 'dataset', 'entityCategory': 'core', 'entityAspects': ['viewProperties', 'subTypes', 'datasetProfile', 'datasetUsageStatistics', 'operation', 'domains', 'applications', 'schemaMetadata', 'status', 'container', 'deprecation', 'testResults', 'siblings', 'embed', 'incidentsSummary', 'datasetProperties', 'editableDatasetProperties', 'datasetDeprecation', 'datasetUpstreamLineage', 'upstreamLineage', 'institutionalMemory', 'ownership', 'editableSchemaMetadata', 'globalTags', 'glossaryTerms', 'browsePaths', 'dataPlatformInstance', 'browsePathsV2', 'access', 'structuredProperties', 'forms', 'partitionsSummary', 'versionProperties', 'icebergCatalogInfo', 'logicalParent', 'inferredNeighbors', 'inferredMetadata', 'schemaFieldsInferredMetadata', 'schemaFieldsInferredNeighbors', 'assertionsSummary', 'usageFeatures', 'storageFeatures', 'lineageFeatures', 'proposals', 'schemaProposals', 'anomaliesSummary', 'share', 'origin', 'documentation', 'entityInferenceMetadata'], 'entityDoc': 'Datasets represent logical or physical data assets stored or represented in various data platforms. Tables, Views, Streams are all instances of datasets.'}
24071
+ ASPECT_INFO = {'keyForEntity': 'dataset', 'entityCategory': 'core', 'entityAspects': ['viewProperties', 'subTypes', 'datasetProfile', 'datasetUsageStatistics', 'operation', 'domains', 'applications', 'schemaMetadata', 'status', 'container', 'deprecation', 'testResults', 'siblings', 'embed', 'incidentsSummary', 'datasetProperties', 'editableDatasetProperties', 'datasetDeprecation', 'datasetUpstreamLineage', 'upstreamLineage', 'institutionalMemory', 'ownership', 'editableSchemaMetadata', 'globalTags', 'glossaryTerms', 'browsePaths', 'dataPlatformInstance', 'browsePathsV2', 'access', 'structuredProperties', 'forms', 'partitionsSummary', 'versionProperties', 'icebergCatalogInfo', 'inferredNeighbors', 'inferredMetadata', 'schemaFieldsInferredMetadata', 'schemaFieldsInferredNeighbors', 'assertionsSummary', 'usageFeatures', 'storageFeatures', 'lineageFeatures', 'proposals', 'schemaProposals', 'anomaliesSummary', 'share', 'origin', 'documentation', 'entityInferenceMetadata'], 'entityDoc': 'Datasets represent logical or physical data assets stored or represented in various data platforms. Tables, Views, Streams are all instances of datasets.'}
23139
24072
  RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.metadata.key.DatasetKey")
23140
24073
 
23141
24074
  def __init__(self,
@@ -24163,7 +25096,7 @@ class SchemaFieldKeyClass(_Aspect):
24163
25096
 
24164
25097
 
24165
25098
  ASPECT_NAME = 'schemaFieldKey'
24166
- ASPECT_INFO = {'keyForEntity': 'schemaField', 'entityCategory': 'core', 'entityAspects': ['schemafieldInfo', 'structuredProperties', 'forms', 'businessAttributes', 'status', 'schemaFieldAliases', 'documentation', 'testResults', 'deprecation', 'subTypes', 'logicalParent', 'schemaFieldProfile', 'lineageFeatures']}
25099
+ ASPECT_INFO = {'keyForEntity': 'schemaField', 'entityCategory': 'core', 'entityAspects': ['schemafieldInfo', 'structuredProperties', 'forms', 'businessAttributes', 'status', 'schemaFieldAliases', 'documentation', 'testResults', 'deprecation', 'subTypes', 'schemaFieldProfile', 'lineageFeatures']}
24167
25100
  RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.metadata.key.SchemaFieldKey")
24168
25101
 
24169
25102
  def __init__(self,
@@ -28412,31 +29345,6 @@ class TrainingDataClass(_Aspect):
28412
29345
  self._inner_dict['trainingData'] = value
28413
29346
 
28414
29347
 
28415
- class AssetCollectionModuleParamsClass(DictWrapper):
28416
- """The params required if the module is type ASSET_COLLECTION"""
28417
-
28418
- RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.module.AssetCollectionModuleParams")
28419
- def __init__(self,
28420
- assetUrns: List[str],
28421
- ):
28422
- super().__init__()
28423
-
28424
- self.assetUrns = assetUrns
28425
-
28426
- def _restore_defaults(self) -> None:
28427
- self.assetUrns = list()
28428
-
28429
-
28430
- @property
28431
- def assetUrns(self) -> List[str]:
28432
- # No docs available.
28433
- return self._inner_dict.get('assetUrns') # type: ignore
28434
-
28435
- @assetUrns.setter
28436
- def assetUrns(self, value: List[str]) -> None:
28437
- self._inner_dict['assetUrns'] = value
28438
-
28439
-
28440
29348
  class DataHubPageModuleParamsClass(DictWrapper):
28441
29349
  """The specific parameters stored for a module"""
28442
29350
 
@@ -28444,21 +29352,15 @@ class DataHubPageModuleParamsClass(DictWrapper):
28444
29352
  def __init__(self,
28445
29353
  linkParams: Union[None, "LinkModuleParamsClass"]=None,
28446
29354
  richTextParams: Union[None, "RichTextModuleParamsClass"]=None,
28447
- assetCollectionParams: Union[None, "AssetCollectionModuleParamsClass"]=None,
28448
- hierarchyViewParams: Union[None, "HierarchyModuleParamsClass"]=None,
28449
29355
  ):
28450
29356
  super().__init__()
28451
29357
 
28452
29358
  self.linkParams = linkParams
28453
29359
  self.richTextParams = richTextParams
28454
- self.assetCollectionParams = assetCollectionParams
28455
- self.hierarchyViewParams = hierarchyViewParams
28456
29360
 
28457
29361
  def _restore_defaults(self) -> None:
28458
29362
  self.linkParams = self.RECORD_SCHEMA.fields_dict["linkParams"].default
28459
29363
  self.richTextParams = self.RECORD_SCHEMA.fields_dict["richTextParams"].default
28460
- self.assetCollectionParams = self.RECORD_SCHEMA.fields_dict["assetCollectionParams"].default
28461
- self.hierarchyViewParams = self.RECORD_SCHEMA.fields_dict["hierarchyViewParams"].default
28462
29364
 
28463
29365
 
28464
29366
  @property
@@ -28481,26 +29383,6 @@ class DataHubPageModuleParamsClass(DictWrapper):
28481
29383
  self._inner_dict['richTextParams'] = value
28482
29384
 
28483
29385
 
28484
- @property
28485
- def assetCollectionParams(self) -> Union[None, "AssetCollectionModuleParamsClass"]:
28486
- """The params required if the module is type ASSET_COLLECTION"""
28487
- return self._inner_dict.get('assetCollectionParams') # type: ignore
28488
-
28489
- @assetCollectionParams.setter
28490
- def assetCollectionParams(self, value: Union[None, "AssetCollectionModuleParamsClass"]) -> None:
28491
- self._inner_dict['assetCollectionParams'] = value
28492
-
28493
-
28494
- @property
28495
- def hierarchyViewParams(self) -> Union[None, "HierarchyModuleParamsClass"]:
28496
- """The params required if the module is type HIERARCHY_VIEW"""
28497
- return self._inner_dict.get('hierarchyViewParams') # type: ignore
28498
-
28499
- @hierarchyViewParams.setter
28500
- def hierarchyViewParams(self, value: Union[None, "HierarchyModuleParamsClass"]) -> None:
28501
- self._inner_dict['hierarchyViewParams'] = value
28502
-
28503
-
28504
29386
  class DataHubPageModulePropertiesClass(_Aspect):
28505
29387
  """The main properties of a DataHub page module"""
28506
29388
 
@@ -28616,9 +29498,6 @@ class DataHubPageModuleTypeClass(object):
28616
29498
  DOMAINS = "DOMAINS"
28617
29499
  """Module displaying the top domains"""
28618
29500
 
28619
- SUBSCRIBED_ASSETS = "SUBSCRIBED_ASSETS"
28620
- """Module displaying assets subscribed to by a given user"""
28621
-
28622
29501
 
28623
29502
 
28624
29503
  class DataHubPageModuleVisibilityClass(DictWrapper):
@@ -28646,110 +29525,29 @@ class DataHubPageModuleVisibilityClass(DictWrapper):
28646
29525
  self._inner_dict['scope'] = value
28647
29526
 
28648
29527
 
28649
- class HierarchyModuleParamsClass(DictWrapper):
28650
- """The params required if the module is type HIERARCHY_VIEW"""
28651
-
28652
- RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.module.HierarchyModuleParams")
28653
- def __init__(self,
28654
- showRelatedEntities: bool,
28655
- assetUrns: Union[None, List[str]]=None,
28656
- relatedEntitiesFilterJson: Union[None, str]=None,
28657
- ):
28658
- super().__init__()
28659
-
28660
- self.assetUrns = assetUrns
28661
- self.showRelatedEntities = showRelatedEntities
28662
- self.relatedEntitiesFilterJson = relatedEntitiesFilterJson
28663
-
28664
- def _restore_defaults(self) -> None:
28665
- self.assetUrns = self.RECORD_SCHEMA.fields_dict["assetUrns"].default
28666
- self.showRelatedEntities = bool()
28667
- self.relatedEntitiesFilterJson = self.RECORD_SCHEMA.fields_dict["relatedEntitiesFilterJson"].default
28668
-
28669
-
28670
- @property
28671
- def assetUrns(self) -> Union[None, List[str]]:
28672
- # No docs available.
28673
- return self._inner_dict.get('assetUrns') # type: ignore
28674
-
28675
- @assetUrns.setter
28676
- def assetUrns(self, value: Union[None, List[str]]) -> None:
28677
- self._inner_dict['assetUrns'] = value
28678
-
28679
-
28680
- @property
28681
- def showRelatedEntities(self) -> bool:
28682
- # No docs available.
28683
- return self._inner_dict.get('showRelatedEntities') # type: ignore
28684
-
28685
- @showRelatedEntities.setter
28686
- def showRelatedEntities(self, value: bool) -> None:
28687
- self._inner_dict['showRelatedEntities'] = value
28688
-
28689
-
28690
- @property
28691
- def relatedEntitiesFilterJson(self) -> Union[None, str]:
28692
- """Optional filters to filter relatedEntities (assetUrns) out
28693
-
28694
- The stringified json representing the logical predicate built in the UI to select assets.
28695
- This predicate is turned into orFilters to send through graphql since graphql doesn't support
28696
- arbitrary nesting. This string is used to restore the UI for this logical predicate."""
28697
- return self._inner_dict.get('relatedEntitiesFilterJson') # type: ignore
28698
-
28699
- @relatedEntitiesFilterJson.setter
28700
- def relatedEntitiesFilterJson(self, value: Union[None, str]) -> None:
28701
- self._inner_dict['relatedEntitiesFilterJson'] = value
28702
-
28703
-
28704
29528
  class LinkModuleParamsClass(DictWrapper):
28705
29529
  # No docs available.
28706
29530
 
28707
29531
  RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.module.LinkModuleParams")
28708
29532
  def __init__(self,
28709
- linkUrl: str,
28710
- imageUrl: Union[None, str]=None,
28711
- description: Union[None, str]=None,
29533
+ linkUrn: str,
28712
29534
  ):
28713
29535
  super().__init__()
28714
29536
 
28715
- self.linkUrl = linkUrl
28716
- self.imageUrl = imageUrl
28717
- self.description = description
29537
+ self.linkUrn = linkUrn
28718
29538
 
28719
29539
  def _restore_defaults(self) -> None:
28720
- self.linkUrl = str()
28721
- self.imageUrl = self.RECORD_SCHEMA.fields_dict["imageUrl"].default
28722
- self.description = self.RECORD_SCHEMA.fields_dict["description"].default
28723
-
28724
-
28725
- @property
28726
- def linkUrl(self) -> str:
28727
- # No docs available.
28728
- return self._inner_dict.get('linkUrl') # type: ignore
28729
-
28730
- @linkUrl.setter
28731
- def linkUrl(self, value: str) -> None:
28732
- self._inner_dict['linkUrl'] = value
29540
+ self.linkUrn = str()
28733
29541
 
28734
29542
 
28735
29543
  @property
28736
- def imageUrl(self) -> Union[None, str]:
29544
+ def linkUrn(self) -> str:
28737
29545
  # No docs available.
28738
- return self._inner_dict.get('imageUrl') # type: ignore
28739
-
28740
- @imageUrl.setter
28741
- def imageUrl(self, value: Union[None, str]) -> None:
28742
- self._inner_dict['imageUrl'] = value
29546
+ return self._inner_dict.get('linkUrn') # type: ignore
28743
29547
 
28744
-
28745
- @property
28746
- def description(self) -> Union[None, str]:
28747
- # No docs available.
28748
- return self._inner_dict.get('description') # type: ignore
28749
-
28750
- @description.setter
28751
- def description(self, value: Union[None, str]) -> None:
28752
- self._inner_dict['description'] = value
29548
+ @linkUrn.setter
29549
+ def linkUrn(self, value: str) -> None:
29550
+ self._inner_dict['linkUrn'] = value
28753
29551
 
28754
29552
 
28755
29553
  class PageModuleScopeClass(object):
@@ -30686,8 +31484,6 @@ class SystemMetadataClass(_Aspect):
30686
31484
  registryVersion: Union[None, str]=None,
30687
31485
  properties: Union[None, Dict[str, str]]=None,
30688
31486
  version: Union[None, str]=None,
30689
- aspectCreated: Union[None, "AuditStampClass"]=None,
30690
- aspectModified: Union[None, "AuditStampClass"]=None,
30691
31487
  ):
30692
31488
  super().__init__()
30693
31489
 
@@ -30711,8 +31507,6 @@ class SystemMetadataClass(_Aspect):
30711
31507
  self.registryVersion = registryVersion
30712
31508
  self.properties = properties
30713
31509
  self.version = version
30714
- self.aspectCreated = aspectCreated
30715
- self.aspectModified = aspectModified
30716
31510
 
30717
31511
  def _restore_defaults(self) -> None:
30718
31512
  self.lastObserved = self.RECORD_SCHEMA.fields_dict["lastObserved"].default
@@ -30723,8 +31517,6 @@ class SystemMetadataClass(_Aspect):
30723
31517
  self.registryVersion = self.RECORD_SCHEMA.fields_dict["registryVersion"].default
30724
31518
  self.properties = self.RECORD_SCHEMA.fields_dict["properties"].default
30725
31519
  self.version = self.RECORD_SCHEMA.fields_dict["version"].default
30726
- self.aspectCreated = self.RECORD_SCHEMA.fields_dict["aspectCreated"].default
30727
- self.aspectModified = self.RECORD_SCHEMA.fields_dict["aspectModified"].default
30728
31520
 
30729
31521
 
30730
31522
  @property
@@ -30809,26 +31601,6 @@ class SystemMetadataClass(_Aspect):
30809
31601
  self._inner_dict['version'] = value
30810
31602
 
30811
31603
 
30812
- @property
30813
- def aspectCreated(self) -> Union[None, "AuditStampClass"]:
30814
- """When the aspect was initially created and who created it, detected by version 0 -> 1 change"""
30815
- return self._inner_dict.get('aspectCreated') # type: ignore
30816
-
30817
- @aspectCreated.setter
30818
- def aspectCreated(self, value: Union[None, "AuditStampClass"]) -> None:
30819
- self._inner_dict['aspectCreated'] = value
30820
-
30821
-
30822
- @property
30823
- def aspectModified(self) -> Union[None, "AuditStampClass"]:
30824
- """When the aspect was last modified and the actor that performed the modification"""
30825
- return self._inner_dict.get('aspectModified') # type: ignore
30826
-
30827
- @aspectModified.setter
30828
- def aspectModified(self, value: Union[None, "AuditStampClass"]) -> None:
30829
- self._inner_dict['aspectModified'] = value
30830
-
30831
-
30832
31604
  class ChartCellClass(DictWrapper):
30833
31605
  """Chart cell in a notebook, which will present content in chart format"""
30834
31606
 
@@ -35641,7 +36413,6 @@ class SlackIntegrationSettingsClass(DictWrapper):
35641
36413
  enabled: Optional[bool]=None,
35642
36414
  encryptedBotToken: Union[None, str]=None,
35643
36415
  defaultChannelName: Union[None, str]=None,
35644
- datahubAtMentionEnabled: Union[None, bool]=None,
35645
36416
  ):
35646
36417
  super().__init__()
35647
36418
 
@@ -35652,13 +36423,11 @@ class SlackIntegrationSettingsClass(DictWrapper):
35652
36423
  self.enabled = enabled
35653
36424
  self.encryptedBotToken = encryptedBotToken
35654
36425
  self.defaultChannelName = defaultChannelName
35655
- self.datahubAtMentionEnabled = datahubAtMentionEnabled
35656
36426
 
35657
36427
  def _restore_defaults(self) -> None:
35658
36428
  self.enabled = self.RECORD_SCHEMA.fields_dict["enabled"].default
35659
36429
  self.encryptedBotToken = self.RECORD_SCHEMA.fields_dict["encryptedBotToken"].default
35660
36430
  self.defaultChannelName = self.RECORD_SCHEMA.fields_dict["defaultChannelName"].default
35661
- self.datahubAtMentionEnabled = self.RECORD_SCHEMA.fields_dict["datahubAtMentionEnabled"].default
35662
36431
 
35663
36432
 
35664
36433
  @property
@@ -35694,17 +36463,6 @@ class SlackIntegrationSettingsClass(DictWrapper):
35694
36463
  self._inner_dict['defaultChannelName'] = value
35695
36464
 
35696
36465
 
35697
- @property
35698
- def datahubAtMentionEnabled(self) -> Union[None, bool]:
35699
- """Whether the Slack @DataHub bot mention functionality is enabled.
35700
- If null, use the default value from feature flags."""
35701
- return self._inner_dict.get('datahubAtMentionEnabled') # type: ignore
35702
-
35703
- @datahubAtMentionEnabled.setter
35704
- def datahubAtMentionEnabled(self, value: Union[None, bool]) -> None:
35705
- self._inner_dict['datahubAtMentionEnabled'] = value
35706
-
35707
-
35708
36466
  class SsoSettingsClass(DictWrapper):
35709
36467
  """SSO Integrations, supported on the UI."""
35710
36468
 
@@ -38545,6 +39303,26 @@ __SCHEMA_TYPES = {
38545
39303
  'com.linkedin.pegasus2avro.actionrequest.OwnerProposal': OwnerProposalClass,
38546
39304
  'com.linkedin.pegasus2avro.actionrequest.StructuredPropertyProposal': StructuredPropertyProposalClass,
38547
39305
  'com.linkedin.pegasus2avro.actionrequest.TagProposal': TagProposalClass,
39306
+ 'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowCategory': ActionWorkflowCategoryClass,
39307
+ 'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowEntrypoint': ActionWorkflowEntrypointClass,
39308
+ 'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowEntrypointType': ActionWorkflowEntrypointTypeClass,
39309
+ 'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowField': ActionWorkflowFieldClass,
39310
+ 'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowFieldCondition': ActionWorkflowFieldConditionClass,
39311
+ 'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowFieldConditionType': ActionWorkflowFieldConditionTypeClass,
39312
+ 'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowForm': ActionWorkflowFormClass,
39313
+ 'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowFormRequest': ActionWorkflowFormRequestClass,
39314
+ 'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowFormRequestField': ActionWorkflowFormRequestFieldClass,
39315
+ 'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowInfo': ActionWorkflowInfoClass,
39316
+ 'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowRequestAccess': ActionWorkflowRequestAccessClass,
39317
+ 'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowRequestStepState': ActionWorkflowRequestStepStateClass,
39318
+ 'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowSingleFieldValueCondition': ActionWorkflowSingleFieldValueConditionClass,
39319
+ 'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowStep': ActionWorkflowStepClass,
39320
+ 'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowStepActors': ActionWorkflowStepActorsClass,
39321
+ 'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowStepDynamicAssignment': ActionWorkflowStepDynamicAssignmentClass,
39322
+ 'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowStepDynamicAssignmentType': ActionWorkflowStepDynamicAssignmentTypeClass,
39323
+ 'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowStepType': ActionWorkflowStepTypeClass,
39324
+ 'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowTrigger': ActionWorkflowTriggerClass,
39325
+ 'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowTriggerType': ActionWorkflowTriggerTypeClass,
38548
39326
  'com.linkedin.pegasus2avro.ai.AiInferenceMetadata': AiInferenceMetadataClass,
38549
39327
  'com.linkedin.pegasus2avro.ai.EntityInferenceMetadata': EntityInferenceMetadataClass,
38550
39328
  'com.linkedin.pegasus2avro.ai.GlossaryTermsInferenceMetadata': GlossaryTermsInferenceMetadataClass,
@@ -38572,7 +39350,6 @@ __SCHEMA_TYPES = {
38572
39350
  'com.linkedin.pegasus2avro.assertion.AssertionInfo': AssertionInfoClass,
38573
39351
  'com.linkedin.pegasus2avro.assertion.AssertionMetric': AssertionMetricClass,
38574
39352
  'com.linkedin.pegasus2avro.assertion.AssertionMonitorSensitivity': AssertionMonitorSensitivityClass,
38575
- 'com.linkedin.pegasus2avro.assertion.AssertionNote': AssertionNoteClass,
38576
39353
  'com.linkedin.pegasus2avro.assertion.AssertionResult': AssertionResultClass,
38577
39354
  'com.linkedin.pegasus2avro.assertion.AssertionResultError': AssertionResultErrorClass,
38578
39355
  'com.linkedin.pegasus2avro.assertion.AssertionResultErrorType': AssertionResultErrorTypeClass,
@@ -38904,8 +39681,8 @@ __SCHEMA_TYPES = {
38904
39681
  'com.linkedin.pegasus2avro.ingestion.DataHubIngestionSourceSourceType': DataHubIngestionSourceSourceTypeClass,
38905
39682
  'com.linkedin.pegasus2avro.link.LinkPreviewInfo': LinkPreviewInfoClass,
38906
39683
  'com.linkedin.pegasus2avro.link.LinkPreviewType': LinkPreviewTypeClass,
38907
- 'com.linkedin.pegasus2avro.logical.LogicalParent': LogicalParentClass,
38908
39684
  'com.linkedin.pegasus2avro.metadata.key.ActionRequestKey': ActionRequestKeyClass,
39685
+ 'com.linkedin.pegasus2avro.metadata.key.ActionWorkflowKey': ActionWorkflowKeyClass,
38909
39686
  'com.linkedin.pegasus2avro.metadata.key.AnomalyKey': AnomalyKeyClass,
38910
39687
  'com.linkedin.pegasus2avro.metadata.key.AssertionKey': AssertionKeyClass,
38911
39688
  'com.linkedin.pegasus2avro.metadata.key.ChartKey': ChartKeyClass,
@@ -39048,12 +39825,10 @@ __SCHEMA_TYPES = {
39048
39825
  'com.linkedin.pegasus2avro.ml.metadata.SourceCodeUrl': SourceCodeUrlClass,
39049
39826
  'com.linkedin.pegasus2avro.ml.metadata.SourceCodeUrlType': SourceCodeUrlTypeClass,
39050
39827
  'com.linkedin.pegasus2avro.ml.metadata.TrainingData': TrainingDataClass,
39051
- 'com.linkedin.pegasus2avro.module.AssetCollectionModuleParams': AssetCollectionModuleParamsClass,
39052
39828
  'com.linkedin.pegasus2avro.module.DataHubPageModuleParams': DataHubPageModuleParamsClass,
39053
39829
  'com.linkedin.pegasus2avro.module.DataHubPageModuleProperties': DataHubPageModulePropertiesClass,
39054
39830
  'com.linkedin.pegasus2avro.module.DataHubPageModuleType': DataHubPageModuleTypeClass,
39055
39831
  'com.linkedin.pegasus2avro.module.DataHubPageModuleVisibility': DataHubPageModuleVisibilityClass,
39056
- 'com.linkedin.pegasus2avro.module.HierarchyModuleParams': HierarchyModuleParamsClass,
39057
39832
  'com.linkedin.pegasus2avro.module.LinkModuleParams': LinkModuleParamsClass,
39058
39833
  'com.linkedin.pegasus2avro.module.PageModuleScope': PageModuleScopeClass,
39059
39834
  'com.linkedin.pegasus2avro.module.RichTextModuleParams': RichTextModuleParamsClass,
@@ -39284,6 +40059,26 @@ __SCHEMA_TYPES = {
39284
40059
  'OwnerProposal': OwnerProposalClass,
39285
40060
  'StructuredPropertyProposal': StructuredPropertyProposalClass,
39286
40061
  'TagProposal': TagProposalClass,
40062
+ 'ActionWorkflowCategory': ActionWorkflowCategoryClass,
40063
+ 'ActionWorkflowEntrypoint': ActionWorkflowEntrypointClass,
40064
+ 'ActionWorkflowEntrypointType': ActionWorkflowEntrypointTypeClass,
40065
+ 'ActionWorkflowField': ActionWorkflowFieldClass,
40066
+ 'ActionWorkflowFieldCondition': ActionWorkflowFieldConditionClass,
40067
+ 'ActionWorkflowFieldConditionType': ActionWorkflowFieldConditionTypeClass,
40068
+ 'ActionWorkflowForm': ActionWorkflowFormClass,
40069
+ 'ActionWorkflowFormRequest': ActionWorkflowFormRequestClass,
40070
+ 'ActionWorkflowFormRequestField': ActionWorkflowFormRequestFieldClass,
40071
+ 'ActionWorkflowInfo': ActionWorkflowInfoClass,
40072
+ 'ActionWorkflowRequestAccess': ActionWorkflowRequestAccessClass,
40073
+ 'ActionWorkflowRequestStepState': ActionWorkflowRequestStepStateClass,
40074
+ 'ActionWorkflowSingleFieldValueCondition': ActionWorkflowSingleFieldValueConditionClass,
40075
+ 'ActionWorkflowStep': ActionWorkflowStepClass,
40076
+ 'ActionWorkflowStepActors': ActionWorkflowStepActorsClass,
40077
+ 'ActionWorkflowStepDynamicAssignment': ActionWorkflowStepDynamicAssignmentClass,
40078
+ 'ActionWorkflowStepDynamicAssignmentType': ActionWorkflowStepDynamicAssignmentTypeClass,
40079
+ 'ActionWorkflowStepType': ActionWorkflowStepTypeClass,
40080
+ 'ActionWorkflowTrigger': ActionWorkflowTriggerClass,
40081
+ 'ActionWorkflowTriggerType': ActionWorkflowTriggerTypeClass,
39287
40082
  'AiInferenceMetadata': AiInferenceMetadataClass,
39288
40083
  'EntityInferenceMetadata': EntityInferenceMetadataClass,
39289
40084
  'GlossaryTermsInferenceMetadata': GlossaryTermsInferenceMetadataClass,
@@ -39311,7 +40106,6 @@ __SCHEMA_TYPES = {
39311
40106
  'AssertionInfo': AssertionInfoClass,
39312
40107
  'AssertionMetric': AssertionMetricClass,
39313
40108
  'AssertionMonitorSensitivity': AssertionMonitorSensitivityClass,
39314
- 'AssertionNote': AssertionNoteClass,
39315
40109
  'AssertionResult': AssertionResultClass,
39316
40110
  'AssertionResultError': AssertionResultErrorClass,
39317
40111
  'AssertionResultErrorType': AssertionResultErrorTypeClass,
@@ -39643,8 +40437,8 @@ __SCHEMA_TYPES = {
39643
40437
  'DataHubIngestionSourceSourceType': DataHubIngestionSourceSourceTypeClass,
39644
40438
  'LinkPreviewInfo': LinkPreviewInfoClass,
39645
40439
  'LinkPreviewType': LinkPreviewTypeClass,
39646
- 'LogicalParent': LogicalParentClass,
39647
40440
  'ActionRequestKey': ActionRequestKeyClass,
40441
+ 'ActionWorkflowKey': ActionWorkflowKeyClass,
39648
40442
  'AnomalyKey': AnomalyKeyClass,
39649
40443
  'AssertionKey': AssertionKeyClass,
39650
40444
  'ChartKey': ChartKeyClass,
@@ -39787,12 +40581,10 @@ __SCHEMA_TYPES = {
39787
40581
  'SourceCodeUrl': SourceCodeUrlClass,
39788
40582
  'SourceCodeUrlType': SourceCodeUrlTypeClass,
39789
40583
  'TrainingData': TrainingDataClass,
39790
- 'AssetCollectionModuleParams': AssetCollectionModuleParamsClass,
39791
40584
  'DataHubPageModuleParams': DataHubPageModuleParamsClass,
39792
40585
  'DataHubPageModuleProperties': DataHubPageModulePropertiesClass,
39793
40586
  'DataHubPageModuleType': DataHubPageModuleTypeClass,
39794
40587
  'DataHubPageModuleVisibility': DataHubPageModuleVisibilityClass,
39795
- 'HierarchyModuleParams': HierarchyModuleParamsClass,
39796
40588
  'LinkModuleParams': LinkModuleParamsClass,
39797
40589
  'PageModuleScope': PageModuleScopeClass,
39798
40590
  'RichTextModuleParams': RichTextModuleParamsClass,
@@ -40078,6 +40870,7 @@ ASPECT_CLASSES: List[Type[_Aspect]] = [
40078
40870
  CorpGroupKeyClass,
40079
40871
  VersionSetKeyClass,
40080
40872
  AnomalyKeyClass,
40873
+ ActionWorkflowKeyClass,
40081
40874
  ChartKeyClass,
40082
40875
  DataHubPageTemplateKeyClass,
40083
40876
  OwnershipTypeKeyClass,
@@ -40168,7 +40961,6 @@ ASPECT_CLASSES: List[Type[_Aspect]] = [
40168
40961
  BusinessAttributeInfoClass,
40169
40962
  BusinessAttributeKeyClass,
40170
40963
  BusinessAttributesClass,
40171
- LogicalParentClass,
40172
40964
  LinkPreviewInfoClass,
40173
40965
  GlobalSettingsInfoClass,
40174
40966
  TelemetryClientIdClass,
@@ -40236,6 +41028,7 @@ ASPECT_CLASSES: List[Type[_Aspect]] = [
40236
41028
  DataContractPropertiesClass,
40237
41029
  DataContractStatusClass,
40238
41030
  MonitorAnomalyEventClass,
41031
+ ActionWorkflowInfoClass,
40239
41032
  DataHubIngestionSourceInfoClass,
40240
41033
  GlossaryTermInfoClass,
40241
41034
  GlossaryNodeInfoClass,
@@ -40370,6 +41163,7 @@ class AspectBag(TypedDict, total=False):
40370
41163
  corpGroupKey: CorpGroupKeyClass
40371
41164
  versionSetKey: VersionSetKeyClass
40372
41165
  anomalyKey: AnomalyKeyClass
41166
+ actionWorkflowKey: ActionWorkflowKeyClass
40373
41167
  chartKey: ChartKeyClass
40374
41168
  dataHubPageTemplateKey: DataHubPageTemplateKeyClass
40375
41169
  ownershipTypeKey: OwnershipTypeKeyClass
@@ -40460,7 +41254,6 @@ class AspectBag(TypedDict, total=False):
40460
41254
  businessAttributeInfo: BusinessAttributeInfoClass
40461
41255
  businessAttributeKey: BusinessAttributeKeyClass
40462
41256
  businessAttributes: BusinessAttributesClass
40463
- logicalParent: LogicalParentClass
40464
41257
  linkPreviewInfo: LinkPreviewInfoClass
40465
41258
  globalSettingsInfo: GlobalSettingsInfoClass
40466
41259
  telemetryClientId: TelemetryClientIdClass
@@ -40528,6 +41321,7 @@ class AspectBag(TypedDict, total=False):
40528
41321
  dataContractProperties: DataContractPropertiesClass
40529
41322
  dataContractStatus: DataContractStatusClass
40530
41323
  monitorAnomalyEvent: MonitorAnomalyEventClass
41324
+ actionWorkflowInfo: ActionWorkflowInfoClass
40531
41325
  dataHubIngestionSourceInfo: DataHubIngestionSourceInfoClass
40532
41326
  glossaryTermInfo: GlossaryTermInfoClass
40533
41327
  glossaryNodeInfo: GlossaryNodeInfoClass
@@ -40614,6 +41408,7 @@ KEY_ASPECTS: Dict[str, Type[_Aspect]] = {
40614
41408
  'mlPrimaryKey': MLPrimaryKeyKeyClass,
40615
41409
  'corpGroup': CorpGroupKeyClass,
40616
41410
  'versionSet': VersionSetKeyClass,
41411
+ 'actionWorkflow': ActionWorkflowKeyClass,
40617
41412
  'chart': ChartKeyClass,
40618
41413
  'dataHubPageTemplate': DataHubPageTemplateKeyClass,
40619
41414
  'ownershipType': OwnershipTypeKeyClass,
@@ -40691,6 +41486,7 @@ ENTITY_TYPE_NAMES: List[str] = [
40691
41486
  'mlPrimaryKey',
40692
41487
  'corpGroup',
40693
41488
  'versionSet',
41489
+ 'actionWorkflow',
40694
41490
  'chart',
40695
41491
  'dataHubPageTemplate',
40696
41492
  'ownershipType',
@@ -40765,6 +41561,7 @@ EntityTypeName = Literal[
40765
41561
  'mlPrimaryKey',
40766
41562
  'corpGroup',
40767
41563
  'versionSet',
41564
+ 'actionWorkflow',
40768
41565
  'chart',
40769
41566
  'dataHubPageTemplate',
40770
41567
  'ownershipType',