Keeping all your metadata properly classified can be hard work when you only have a limited number of trusted data stewards. With DataHub Cloud, you can source proposals of Tags and Glossary Terms associated to datasets or dataset columns. These proposals may come from users with limited context or programatic processes using hueristics. Then, data stewards and data owners can go through them and only approve proposals they consider correct. This reduces the burden of your stewards and owners while increasing coverage.
Approval workflows also cover the Business Glossary itself. This allows you to source Glossary Terms and Glossary Term description changes from across your organization while limiting who has final control over what gets in.
## Using Approval Workflows
### Proposing Tags and Glossary Terms
1. When adding a Tag or Glossary Term to a column or entity, you will see a propose button.
3. From there, they can choose to either accept or reject the proposal.
## Proposing Programatically
DataHub exposes a GraphQL API for proposing Tags and Glossary Terms.
At a high level, callers of this API will be required to provide the following details:
1. A unique identifier for the target Metadata Entity (URN)
2. An optional sub-resource identifier which designates a sub-resource to attach the Tag or Glossary Term to. for example reference to a particular "field" within a Dataset.
3. A unique identifier for the Tag or Glossary Term they wish to propose (URN)
In the following sections, we will describe how to construct each of these items and use the DataHub GraphQL API to submit Tag or Glossary Term proposals.
#### Constructing an Entity Identifier
Inside DataHub, each Metadata Entity is uniquely identified by a Universal Resource Name, or an URN. This identifier can be copied from the entity page, extracted from the API, or read from a downloaded search result. You can also use the helper methods in the datahub python library given a set of components.
#### Constructing a Sub-Resource Identifier
Specific Metadata Entity types have additional sub-resources to which Tags may be applied.
Today, this only applies for Dataset Metadata Entities, which have a "fields" sub-resource. In this case, the `subResource` value would be the field path for the schema field.
#### Finding a Tag or Glossary Term Identifier
Tags and Glossary Terms are also uniquely identified by an URN.
Tag URNs have the following format:
`urn:li:tag:<id>`
Glossary Term URNs have the following format:
`urn:li:glossaryTerm:<id>`
These full identifiers can be copied from the entity pages of the Tag or Glossary Term.
Once we've constructed an Entity URN, any relevant sub-resource identifiers, and a Tag or Term URN, we're ready to propose! To do so, we'll use the DataHub GraphQL API.
In particular, we'll be using the proposeTag, proposeGlossaryTerm, and proposeUpdateDescription Mutations, which have the following interface: