Support Questions

Find answers, ask questions, and share your expertise

Add tag in Atlas on Sandbox HDP 2.5

Contributor

I had a hard time finding a way to add a tag/traits in Atlas by using the REST API.

Here is a solution:

POST http://{YOUR IP ADRESS}:21000/api/atlas/entities/{GUID FOR ENTITY}/traits/

BODY {"jsonClass":"org.apache.atlas.typesystem.json.InstanceSerialization$_Struct","typeName":"PII","values":{}}

curl -X POST -H "Content-Type: application/json" -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Cache-Control: no-cache" -d '{"jsonClass":"org.apache.atlas.typesystem.json.InstanceSerialization$_Struct","typeName":"PII","values":{}}' "http://192.168.255.128:21000/api/atlas/entities/d5dcb483-d2fc-4544-8368-6ef56321efdb/traits/"
1 ACCEPTED SOLUTION

Thanks @Anders Boje

Below are some additional examples:

Let's suppose we want to annotate a table (GUID f4019a65-8948- 46f1-afcf-545baa2df99f) with the Trait PublicData to indicate it is a data asset that is created by crawling public sites. Also, suppose that we want to set a "Retainable" trait on the column family contents (GUID 9e6308c6-1006-48f8-95a8-a605968e64d2) with a retention period of 100 days.

The following are the requests to send:

POST 
http://<atlas-server-host:port>/api/atlas/entities/f4019a65-8948-46f1-afcf- 545baa2df99f/traits

BODY
{ "jsonClass":"org.apache.atlas.typesystem.json.InstanceSerialization$_Struct",
	"typeName":"PublicData", 
	"values":{}
} 
POST 
http://<atlas-server-host:port>/api/atlas/entities/9e6308c6-1006-48f8-95a8- a605968e64d2/traits

BODY
{ "jsonClass":"org.apache.atlas.typesystem.json.InstanceSerialization$_Struct", 			"typeName":"Retainable",
	"values":{"retentionPeriod":"100" }
} 

@Stig Hammeken

To associate a Term/Taxonomy to an entity use the below

POST 
http://<atlas-server-host:port>/api/atlas/v1/entities/{entity_guid}/tags/{fully_qualified_name_of_te... 	

for example:

POST http://<atlas-server-host:port>/api/atlas/v1/entities/f4019a65-8948-46f1-afcf-545baa2df99f/tags/d.te... 

You can get the "fully_qualified_name_of_term" using:

#Listing all terms under the Catalog Taxonomy
GET http://<atlas-server-host:port>/api/atlas/v1/taxonomies/Catalog/terms

#Listing all terms under a given Term
GET http://<atlas-server-host:port>/api/atlas/v1/taxonomies/Catalog/terms/term_name/terms/.../terms/term... 

View solution in original post

4 REPLIES 4

New Contributor

Thanks Anders. It works fine, but not if the tag i a business term (tag) a trait type (super typer) "TaxonomyTerm". The REST interface respond with a "Error deserializing trait instance". Any idea how I add a Business Term to an Entity?

Thanks @Anders Boje

Below are some additional examples:

Let's suppose we want to annotate a table (GUID f4019a65-8948- 46f1-afcf-545baa2df99f) with the Trait PublicData to indicate it is a data asset that is created by crawling public sites. Also, suppose that we want to set a "Retainable" trait on the column family contents (GUID 9e6308c6-1006-48f8-95a8-a605968e64d2) with a retention period of 100 days.

The following are the requests to send:

POST 
http://<atlas-server-host:port>/api/atlas/entities/f4019a65-8948-46f1-afcf- 545baa2df99f/traits

BODY
{ "jsonClass":"org.apache.atlas.typesystem.json.InstanceSerialization$_Struct",
	"typeName":"PublicData", 
	"values":{}
} 
POST 
http://<atlas-server-host:port>/api/atlas/entities/9e6308c6-1006-48f8-95a8- a605968e64d2/traits

BODY
{ "jsonClass":"org.apache.atlas.typesystem.json.InstanceSerialization$_Struct", 			"typeName":"Retainable",
	"values":{"retentionPeriod":"100" }
} 

@Stig Hammeken

To associate a Term/Taxonomy to an entity use the below

POST 
http://<atlas-server-host:port>/api/atlas/v1/entities/{entity_guid}/tags/{fully_qualified_name_of_te... 	

for example:

POST http://<atlas-server-host:port>/api/atlas/v1/entities/f4019a65-8948-46f1-afcf-545baa2df99f/tags/d.te... 

You can get the "fully_qualified_name_of_term" using:

#Listing all terms under the Catalog Taxonomy
GET http://<atlas-server-host:port>/api/atlas/v1/taxonomies/Catalog/terms

#Listing all terms under a given Term
GET http://<atlas-server-host:port>/api/atlas/v1/taxonomies/Catalog/terms/term_name/terms/.../terms/term... 

New Contributor

Thank you Eyad you nailed it for me:-)

API "Tags" = Business Term

API "Traits" = Tag

Actually you mean:

API "Terms" = Business Term

API "Traits" = Tag