Archives of Support Questions (Read Only)

This is an archived board for historical reference. Information and links may no longer be available or relevant
Announcements
This board is archived and read-only for historical reference. To ask a new question, please post a new topic on the appropriate active board.

Add tag in Atlas on Sandbox HDP 2.5

avatar
New Member

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

avatar

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

avatar
New Member

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?

avatar

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... 

avatar
New Member

Thank you Eyad you nailed it for me:-)

API "Tags" = Business Term

API "Traits" = Tag

avatar

Actually you mean:

API "Terms" = Business Term

API "Traits" = Tag