from metadata.sdk import configurefrom metadata.sdk.entities import Glossariesfrom metadata.generated.schema.api.data.createGlossary import CreateGlossaryRequestconfigure( host="https://your-company.open-metadata.org/api", jwt_token="your-jwt-token")request = CreateGlossaryRequest( name="BusinessGlossary", displayName="Business Glossary", description="Standard business terminology for the organization", mutuallyExclusive=False)glossary = Glossaries.create(request)print(f"Created: {glossary.fullyQualifiedName.root}")
import org.openmetadata.schema.api.data.CreateGlossary;// client is an initialized OpenMetadataClient.var request = new CreateGlossary() .withName("BusinessGlossary") .withDisplayName("Business Glossary") .withDescription("Standard business terminology for the organization") .withMutuallyExclusive(false);var glossary = client.glossaries().create(request);
curl -X POST "{base_url}/api/v1/glossaries" \ -H "Authorization: Bearer {access_token}" \ -H "Content-Type: application/json" \ -d '{ "name": "BusinessGlossary", "displayName": "Business Glossary", "description": "Standard business terminology for the organization", "mutuallyExclusive": false, "owners": [], "reviewers": [] }'
from metadata.sdk import configurefrom metadata.sdk.entities import Glossariesfrom metadata.generated.schema.api.data.createGlossary import CreateGlossaryRequestconfigure( host="https://your-company.open-metadata.org/api", jwt_token="your-jwt-token")request = CreateGlossaryRequest( name="BusinessGlossary", displayName="Business Glossary", description="Standard business terminology for the organization", mutuallyExclusive=False)glossary = Glossaries.create(request)print(f"Created: {glossary.fullyQualifiedName.root}")
import org.openmetadata.schema.api.data.CreateGlossary;// client is an initialized OpenMetadataClient.var request = new CreateGlossary() .withName("BusinessGlossary") .withDisplayName("Business Glossary") .withDescription("Standard business terminology for the organization") .withMutuallyExclusive(false);var glossary = client.glossaries().create(request);
curl -X POST "{base_url}/api/v1/glossaries" \ -H "Authorization: Bearer {access_token}" \ -H "Content-Type: application/json" \ -d '{ "name": "BusinessGlossary", "displayName": "Business Glossary", "description": "Standard business terminology for the organization", "mutuallyExclusive": false, "owners": [], "reviewers": [] }'
Create a new glossary for organizing business terminology.
Body Parameters
string
required
Name of the glossary. Must be unique.
string
Human-readable display name for the glossary.
string
Description of the glossary in Markdown format.
array
Array of owner references (users or teams) to assign to the glossary.
Show properties
string
UUID of the owner entity.
string
Type of owner entity, for example user, team.
string
Name of the owner entity.
array
Array of user references who can review glossary term changes.
Show properties
string
UUID of the user.
string
Type of entity (always user).
string
Name of the user.
array
Array of classification tags to apply to the glossary.
Show properties
string
required
Fully qualified name of the tag.
string
Type of label, for example Manual, Derived, Propagated.
string
State of the tag, for example Suggested, Confirmed.
array
Fully qualified names of the domains to assign for governance purposes.
boolean
default:"false"
If true, only one term from this glossary can be applied to an entity at a time.
POST /v1/glossaries
from metadata.sdk import configurefrom metadata.sdk.entities import Glossariesfrom metadata.generated.schema.api.data.createGlossary import CreateGlossaryRequestconfigure( host="https://your-company.open-metadata.org/api", jwt_token="your-jwt-token")request = CreateGlossaryRequest( name="BusinessGlossary", displayName="Business Glossary", description="Standard business terminology for the organization", mutuallyExclusive=False)glossary = Glossaries.create(request)print(f"Created: {glossary.fullyQualifiedName.root}")
import org.openmetadata.schema.api.data.CreateGlossary;// client is an initialized OpenMetadataClient.var request = new CreateGlossary() .withName("BusinessGlossary") .withDisplayName("Business Glossary") .withDescription("Standard business terminology for the organization") .withMutuallyExclusive(false);var glossary = client.glossaries().create(request);
curl -X POST "{base_url}/api/v1/glossaries" \ -H "Authorization: Bearer {access_token}" \ -H "Content-Type: application/json" \ -d '{ "name": "BusinessGlossary", "displayName": "Business Glossary", "description": "Standard business terminology for the organization", "mutuallyExclusive": false, "owners": [], "reviewers": [] }'
Returns the created glossary object with all specified properties and system-generated fields.
Response
string
Unique identifier for the glossary (UUID format).
string
Glossary name.
string
Fully qualified name of the glossary.
string
Human-readable display name.
string
Description of the glossary in Markdown format.
boolean
Whether terms in this glossary are mutually exclusive.
array
List of owners assigned to the glossary.
array
List of reviewers for glossary term changes.
array
Classification tags applied to the glossary.
number
Version number for the entity (starts at 0.1).
Create or Update (PUT)
Use PUT /v1/glossaries instead of POST to perform an upsert. If a glossary with the same fullyQualifiedName already exists, it will be updated; otherwise, a new glossary is created. The request body is the same as POST.
curl -X PUT "{base_url}/api/v1/glossaries" \ -H "Authorization: Bearer {access_token}" \ -H "Content-Type: application/json" \ -d '{ ... same body as POST ... }'
PUT will not return a 409 conflict error if the entity already exists — it will update the existing entity instead.
Error Handling
Code
Error Type
Description
400
BAD_REQUEST
Invalid request body or missing required fields
401
UNAUTHORIZED
Invalid or missing authentication token
403
FORBIDDEN
User lacks permission to create glossaries
409
ENTITY_ALREADY_EXISTS
Glossary with same name already exists (POST only)