{"openapi":"3.0.4","info":{"title":"CluedIn REST API — Glossary","description":"Manage glossary categories and terms, and search the glossary.","version":"v1"},"tags":[{"name":"Glossary"},{"name":"GlossarySearch"}],"paths":{"/api/v1/glossary":{"post":{"tags":["Glossary"],"summary":"Create glossary term","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.AddTermModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.AddTermModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.AddTermModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.AddTermModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Creates a new glossary term from the supplied model. Returns 409 Conflict if a term with the same name already exists, 400 with validation details when the model is invalid or the term has no condition."},"put":{"tags":["Glossary"],"summary":"Update glossary term","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.UpdateTermModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.UpdateTermModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.UpdateTermModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.UpdateTermModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Updates an existing glossary term. Returns 409 Conflict on name collisions, 400 with validation details when the model or filter rules fail validation, and re-reads the term after update so the response contains the latest state. The action goes through the RACI approval pipeline for glossary term updates."},"get":{"tags":["Glossary"],"summary":"List glossary terms","parameters":[{"name":"page","in":"query","schema":{"type":"integer","format":"int32","default":0},"description":"0-based page number. Defaults to 0."},{"name":"take","in":"query","schema":{"type":"integer","format":"int32","default":20},"description":"Page size. Defaults to 20."},{"name":"filterActive","in":"query","schema":{"type":"boolean"},"description":"When set, restrict to active or inactive terms."},{"name":"filterCreator","in":"query","schema":{"type":"string"},"description":"Filter by creator id/name."},{"name":"filterTag","in":"query","schema":{"type":"string"},"description":"Filter by tag."},{"name":"filterCategory","in":"query","schema":{"type":"string","format":"uuid"},"description":"Filter by category id."},{"name":"searchName","in":"query","schema":{"type":"string"},"description":"Free-text search over term name."},{"name":"orderBy","in":"query","schema":{"type":"string"},"description":"Field to order by."},{"name":"orderAsc","in":"query","schema":{"type":"boolean","default":true},"description":"Sort direction. Defaults to true (ascending)."}],"responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.TermPagingResult"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.TermPagingResult"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.TermPagingResult"}}}}},"description":"Returns paged glossary terms along with a total count. Filter by active state, creator, tag, category, and search text. When `GlossaryAccess.FilterTermsByOwnership` is on, the result is restricted to terms the caller owns or has been granted access to."}},"/api/glossary":{"post":{"tags":["Glossary"],"summary":"Create glossary term","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.AddTermModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.AddTermModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.AddTermModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.AddTermModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Creates a new glossary term from the supplied model. Returns 409 Conflict if a term with the same name already exists, 400 with validation details when the model is invalid or the term has no condition."},"put":{"tags":["Glossary"],"summary":"Update glossary term","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.UpdateTermModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.UpdateTermModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.UpdateTermModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.UpdateTermModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Updates an existing glossary term. Returns 409 Conflict on name collisions, 400 with validation details when the model or filter rules fail validation, and re-reads the term after update so the response contains the latest state. The action goes through the RACI approval pipeline for glossary term updates."},"get":{"tags":["Glossary"],"summary":"List glossary terms","parameters":[{"name":"page","in":"query","schema":{"type":"integer","format":"int32","default":0},"description":"0-based page number. Defaults to 0."},{"name":"take","in":"query","schema":{"type":"integer","format":"int32","default":20},"description":"Page size. Defaults to 20."},{"name":"filterActive","in":"query","schema":{"type":"boolean"},"description":"When set, restrict to active or inactive terms."},{"name":"filterCreator","in":"query","schema":{"type":"string"},"description":"Filter by creator id/name."},{"name":"filterTag","in":"query","schema":{"type":"string"},"description":"Filter by tag."},{"name":"filterCategory","in":"query","schema":{"type":"string","format":"uuid"},"description":"Filter by category id."},{"name":"searchName","in":"query","schema":{"type":"string"},"description":"Free-text search over term name."},{"name":"orderBy","in":"query","schema":{"type":"string"},"description":"Field to order by."},{"name":"orderAsc","in":"query","schema":{"type":"boolean","default":true},"description":"Sort direction. Defaults to true (ascending)."}],"responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.TermPagingResult"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.TermPagingResult"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.TermPagingResult"}}}}},"description":"Returns paged glossary terms along with a total count. Filter by active state, creator, tag, category, and search text. When `GlossaryAccess.FilterTermsByOwnership` is on, the result is restricted to terms the caller owns or has been granted access to."}},"/api/v1/glossary/category":{"post":{"tags":["Glossary"],"summary":"Create glossary category","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.AddCategoryModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.AddCategoryModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.AddCategoryModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.AddCategoryModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Creates a new glossary category from the supplied model. Returns 409 Conflict when a category with the same name already exists."},"get":{"tags":["Glossary"],"summary":"List glossary categories","parameters":[{"name":"page","in":"query","schema":{"type":"integer","format":"int32","default":0},"description":"0-based page number. Defaults to 0."},{"name":"take","in":"query","schema":{"type":"integer","format":"int32","default":2147483647},"description":"Page size. Defaults to int.MaxValue (returns all)."}],"responses":{"200":{"description":"OK"}},"description":"Returns paged glossary categories."},"put":{"tags":["Glossary"],"summary":"Update glossary category","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.UpdateCategoryModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.UpdateCategoryModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.UpdateCategoryModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.UpdateCategoryModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Updates an existing glossary category. Returns 409 Conflict on name collisions. The response includes the refreshed category."}},"/api/glossary/category":{"post":{"tags":["Glossary"],"summary":"Create glossary category","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.AddCategoryModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.AddCategoryModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.AddCategoryModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.AddCategoryModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Creates a new glossary category from the supplied model. Returns 409 Conflict when a category with the same name already exists."},"get":{"tags":["Glossary"],"summary":"List glossary categories","parameters":[{"name":"page","in":"query","schema":{"type":"integer","format":"int32","default":0},"description":"0-based page number. Defaults to 0."},{"name":"take","in":"query","schema":{"type":"integer","format":"int32","default":2147483647},"description":"Page size. Defaults to int.MaxValue (returns all)."}],"responses":{"200":{"description":"OK"}},"description":"Returns paged glossary categories."},"put":{"tags":["Glossary"],"summary":"Update glossary category","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.UpdateCategoryModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.UpdateCategoryModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.UpdateCategoryModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.UpdateCategoryModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Updates an existing glossary category. Returns 409 Conflict on name collisions. The response includes the refreshed category."}},"/api/v1/glossary/termlexicon":{"post":{"tags":["Glossary"],"summary":"Add term lexicon entry","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Data.Relational.GlossaryTermLexicon"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Data.Relational.GlossaryTermLexicon"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Data.Relational.GlossaryTermLexicon"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Data.Relational.GlossaryTermLexicon"}}}},"responses":{"200":{"description":"OK"}},"description":"Adds a lexicon entry (synonym, alias) to a glossary term. Returns 409 Conflict when a lexicon entry with the same name already exists."}},"/api/glossary/termlexicon":{"post":{"tags":["Glossary"],"summary":"Add term lexicon entry","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Data.Relational.GlossaryTermLexicon"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Data.Relational.GlossaryTermLexicon"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Data.Relational.GlossaryTermLexicon"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Data.Relational.GlossaryTermLexicon"}}}},"responses":{"200":{"description":"OK"}},"description":"Adds a lexicon entry (synonym, alias) to a glossary term. Returns 409 Conflict when a lexicon entry with the same name already exists."}},"/api/v1/glossary/tag":{"post":{"tags":["Glossary"],"summary":"Create glossary tag","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.TagModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.TagModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.TagModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.TagModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Creates a new glossary tag. Returns 409 Conflict when a tag with the same name already exists."},"get":{"tags":["Glossary"],"summary":"List glossary tags","parameters":[{"name":"page","in":"query","schema":{"type":"integer","format":"int32","default":0},"description":"0-based page number. Defaults to 0."},{"name":"take","in":"query","schema":{"type":"integer","format":"int32","default":2147483647},"description":"Page size. Defaults to int.MaxValue."}],"responses":{"200":{"description":"OK"}},"description":"Returns paged glossary tags."}},"/api/glossary/tag":{"post":{"tags":["Glossary"],"summary":"Create glossary tag","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.TagModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.TagModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.TagModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.TagModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Creates a new glossary tag. Returns 409 Conflict when a tag with the same name already exists."},"get":{"tags":["Glossary"],"summary":"List glossary tags","parameters":[{"name":"page","in":"query","schema":{"type":"integer","format":"int32","default":0},"description":"0-based page number. Defaults to 0."},{"name":"take","in":"query","schema":{"type":"integer","format":"int32","default":2147483647},"description":"Page size. Defaults to int.MaxValue."}],"responses":{"200":{"description":"OK"}},"description":"Returns paged glossary tags."}},"/api/v1/glossary/endorsement":{"post":{"tags":["Glossary"],"summary":"Endorse glossary term","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.AddEndorsementModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.AddEndorsementModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.AddEndorsementModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.AddEndorsementModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Adds an endorsement on a glossary term. Endorsement is not restricted by RACI level — any authenticated user can endorse."},"delete":{"tags":["Glossary"],"summary":"Remove glossary endorsement","parameters":[{"name":"termId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Glossary term identifier."}],"responses":{"200":{"description":"OK"}},"description":"Removes the caller's endorsement from a glossary term."}},"/api/glossary/endorsement":{"post":{"tags":["Glossary"],"summary":"Endorse glossary term","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.AddEndorsementModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.AddEndorsementModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.AddEndorsementModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.AddEndorsementModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Adds an endorsement on a glossary term. Endorsement is not restricted by RACI level — any authenticated user can endorse."},"delete":{"tags":["Glossary"],"summary":"Remove glossary endorsement","parameters":[{"name":"termId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Glossary term identifier."}],"responses":{"200":{"description":"OK"}},"description":"Removes the caller's endorsement from a glossary term."}},"/api/v1/glossary/category/{id}":{"get":{"tags":["Glossary"],"summary":"Get glossary category","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Glossary category identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns a single glossary category by id. Returns 404 if the category cannot be found."},"delete":{"tags":["Glossary"],"summary":"Delete glossary category","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Glossary category identifier."}],"responses":{"200":{"description":"OK"}},"description":"Deletes a glossary category. The action goes through the RACI approval pipeline for glossary category deletion."}},"/api/glossary/category/{id}":{"get":{"tags":["Glossary"],"summary":"Get glossary category","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Glossary category identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns a single glossary category by id. Returns 404 if the category cannot be found."},"delete":{"tags":["Glossary"],"summary":"Delete glossary category","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Glossary category identifier."}],"responses":{"200":{"description":"OK"}},"description":"Deletes a glossary category. The action goes through the RACI approval pipeline for glossary category deletion."}},"/api/v1/glossary/rating":{"post":{"tags":["Glossary"],"summary":"Rate glossary term","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.RatingModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.RatingModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.RatingModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.RatingModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Adds a rating for a glossary term. Open to any authenticated user."},"put":{"tags":["Glossary"],"summary":"Update glossary rating","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.RatingModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.RatingModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.RatingModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.RatingModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Updates an existing rating for a glossary term."}},"/api/glossary/rating":{"post":{"tags":["Glossary"],"summary":"Rate glossary term","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.RatingModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.RatingModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.RatingModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.RatingModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Adds a rating for a glossary term. Open to any authenticated user."},"put":{"tags":["Glossary"],"summary":"Update glossary rating","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.RatingModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.RatingModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.RatingModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.RatingModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Updates an existing rating for a glossary term."}},"/api/v1/glossary/{id}":{"get":{"tags":["Glossary"],"summary":"Get glossary term","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Glossary term identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns a single glossary term by id, scoped to the calling user."},"delete":{"tags":["Glossary"],"summary":"Delete glossary term","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Glossary term identifier."}],"responses":{"200":{"description":"OK"}},"description":"Deletes a glossary term. The action goes through the RACI approval pipeline for glossary term deletion."}},"/api/glossary/{id}":{"get":{"tags":["Glossary"],"summary":"Get glossary term","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Glossary term identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns a single glossary term by id, scoped to the calling user."},"delete":{"tags":["Glossary"],"summary":"Delete glossary term","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Glossary term identifier."}],"responses":{"200":{"description":"OK"}},"description":"Deletes a glossary term. The action goes through the RACI approval pipeline for glossary term deletion."}},"/api/v1/glossary/term/search/{name}":{"get":{"tags":["Glossary"],"summary":"Search glossary terms by name","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Term name to search for."}],"responses":{"200":{"description":"OK"}},"description":"Returns glossary terms whose name matches the supplied value. Returns 404 if nothing matches."}},"/api/glossary/term/search/{name}":{"get":{"tags":["Glossary"],"summary":"Search glossary terms by name","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Term name to search for."}],"responses":{"200":{"description":"OK"}},"description":"Returns glossary terms whose name matches the supplied value. Returns 404 if nothing matches."}},"/api/v1/glossary/category/search/{name}":{"get":{"tags":["Glossary"],"summary":"Search glossary categories by name","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Category name to search for."}],"responses":{"200":{"description":"OK"}},"description":"Returns glossary categories whose name matches the supplied value. Returns 404 if nothing matches."}},"/api/glossary/category/search/{name}":{"get":{"tags":["Glossary"],"summary":"Search glossary categories by name","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Category name to search for."}],"responses":{"200":{"description":"OK"}},"description":"Returns glossary categories whose name matches the supplied value. Returns 404 if nothing matches."}},"/api/v1/glossary/lexicon/{id}":{"delete":{"tags":["Glossary"],"summary":"Delete term lexicon entry","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Lexicon entry identifier."}],"responses":{"200":{"description":"OK"}},"description":"Deletes a glossary term lexicon entry."}},"/api/glossary/lexicon/{id}":{"delete":{"tags":["Glossary"],"summary":"Delete term lexicon entry","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Lexicon entry identifier."}],"responses":{"200":{"description":"OK"}},"description":"Deletes a glossary term lexicon entry."}},"/api/v1/glossary/tag/{id}":{"delete":{"tags":["Glossary"],"summary":"Delete glossary tag","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Glossary tag identifier."}],"responses":{"200":{"description":"OK"}},"description":"Deletes a glossary tag."}},"/api/glossary/tag/{id}":{"delete":{"tags":["Glossary"],"summary":"Delete glossary tag","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Glossary tag identifier."}],"responses":{"200":{"description":"OK"}},"description":"Deletes a glossary tag."}},"/api/v1/glossary/import":{"post":{"tags":["Glossary"],"summary":"Import glossary terms from CSV","responses":{"200":{"description":"OK"}},"description":"Imports glossary terms from one or more uploaded CSV files (file size capped at 10 MB per file). The body must be a multipart upload containing `.csv` files."}},"/api/glossary/import":{"post":{"tags":["Glossary"],"summary":"Import glossary terms from CSV","responses":{"200":{"description":"OK"}},"description":"Imports glossary terms from one or more uploaded CSV files (file size capped at 10 MB per file). The body must be a multipart upload containing `.csv` files."}},"/api/v1/glossary/stream":{"post":{"tags":["Glossary"],"summary":"Create stream from glossary term","parameters":[{"name":"id","in":"query","schema":{"type":"string","format":"uuid"},"description":"Glossary term identifier."}],"responses":{"200":{"description":"OK"}},"description":"Creates a stream seeded from the supplied glossary term. Returns 404 if the term cannot be found. (The implementation is partial — the stream creation step is currently a TODO and may be a no-op in some builds.)"}},"/api/glossary/stream":{"post":{"tags":["Glossary"],"summary":"Create stream from glossary term","parameters":[{"name":"id","in":"query","schema":{"type":"string","format":"uuid"},"description":"Glossary term identifier."}],"responses":{"200":{"description":"OK"}},"description":"Creates a stream seeded from the supplied glossary term. Returns 404 if the term cannot be found. (The implementation is partial — the stream creation step is currently a TODO and may be a no-op in some builds.)"}},"/api/v1/glossary/reference":{"get":{"tags":["Glossary"],"summary":"List terms that reference a term","parameters":[{"name":"id","in":"query","schema":{"type":"string","format":"uuid"},"description":"Referenced glossary term identifier."},{"name":"page","in":"query","schema":{"type":"integer","format":"int32"},"description":"0-based page number."},{"name":"take","in":"query","schema":{"type":"integer","format":"int32"},"description":"Page size."}],"responses":{"200":{"description":"OK"}},"description":"Returns paged glossary terms that reference the supplied term — terms whose rules or text mention it."}},"/api/glossary/reference":{"get":{"tags":["Glossary"],"summary":"List terms that reference a term","parameters":[{"name":"id","in":"query","schema":{"type":"string","format":"uuid"},"description":"Referenced glossary term identifier."},{"name":"page","in":"query","schema":{"type":"integer","format":"int32"},"description":"0-based page number."},{"name":"take","in":"query","schema":{"type":"integer","format":"int32"},"description":"Page size."}],"responses":{"200":{"description":"OK"}},"description":"Returns paged glossary terms that reference the supplied term — terms whose rules or text mention it."}},"/api/v1/glossary/clean":{"post":{"tags":["Glossary"],"summary":"Create clean project from glossary term","parameters":[{"name":"id","in":"query","schema":{"type":"string","format":"uuid"},"description":"Glossary term identifier."},{"name":"take","in":"query","schema":{"type":"integer","format":"int32"},"description":"Maximum number of records to seed the clean project with."}],"responses":{"200":{"description":"OK"}},"description":"Creates a clean project seeded from the supplied glossary term — useful to remediate the records the term currently matches."}},"/api/glossary/clean":{"post":{"tags":["Glossary"],"summary":"Create clean project from glossary term","parameters":[{"name":"id","in":"query","schema":{"type":"string","format":"uuid"},"description":"Glossary term identifier."},{"name":"take","in":"query","schema":{"type":"integer","format":"int32"},"description":"Maximum number of records to seed the clean project with."}],"responses":{"200":{"description":"OK"}},"description":"Creates a clean project seeded from the supplied glossary term — useful to remediate the records the term currently matches."}},"/api/v1/glossary/dependencies/{id}":{"get":{"tags":["Glossary"],"summary":"Find glossary dependencies","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Glossary term identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns the dependencies of a glossary term — other glossary artifacts (terms, lexicons, tags, rules) that reference it."}},"/api/glossary/dependencies/{id}":{"get":{"tags":["Glossary"],"summary":"Find glossary dependencies","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Glossary term identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns the dependencies of a glossary term — other glossary artifacts (terms, lexicons, tags, rules) that reference it."}},"/api/v1/glossarysearch/entities":{"get":{"tags":["GlossarySearch"],"summary":"List entities matched by a glossary term","parameters":[{"name":"id","in":"query","schema":{"type":"string","format":"uuid"},"description":"Glossary term identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns paged entities that match a glossary term's rule set. Response is cached for 360 seconds."}},"/api/v1/glossarysearch/metrics":{"get":{"tags":["GlossarySearch"],"summary":"Get glossary completeness metrics","responses":{"200":{"description":"OK"}},"description":"Returns completeness statistics across the organisation's glossary — for example coverage and adoption metrics surfaced in the Governance Cockpit. Response is cached for 360 seconds."}},"/api/v1/glossarysearch/lineage":{"get":{"tags":["GlossarySearch"],"summary":"Get glossary term lineage","parameters":[{"name":"id","in":"query","schema":{"type":"string","format":"uuid"},"description":"Glossary term identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns a glossary term together with its lexicon and tags, used by the lineage view in the UI. Returns 404 if the term cannot be found. Response is cached for 360 seconds."}},"/api/v1/glossarysearch/analytics":{"get":{"tags":["GlossarySearch"],"summary":"Get glossary term analytics","parameters":[{"name":"id","in":"query","schema":{"type":"string","format":"uuid"},"description":"Glossary term identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns analytics-oriented metadata for a glossary term (lexicon, tags, and the term itself). Returns 404 if the term cannot be found. Response is cached for 360 seconds."}},"/api/v1/glossarysearch/pii":{"get":{"tags":["GlossarySearch"],"summary":"Get PII details for a glossary term","parameters":[{"name":"id","in":"query","schema":{"type":"string","format":"uuid"},"description":"Glossary term identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns personally-identifiable-information details (counts of sensitive classifications) associated with the entities a glossary term currently matches. Response is cached for 360 seconds."}}},"components":{"schemas":{"CluedIn.Glossary.Models.AddTermModel":{"required":["categoryId","name","ruleSet"],"type":"object","properties":{"name":{"minLength":1,"type":"string"},"categoryId":{"type":"string","format":"uuid"},"parentId":{"type":"string","format":"uuid","nullable":true},"ruleSet":{"$ref":"#/components/schemas/CluedIn.Core.Rules.QueryBuilder.FilterRule"}},"additionalProperties":false},"CluedIn.Glossary.Models.UpdateTermModel":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"shortDescription":{"type":"string","nullable":true},"isObsolete":{"type":"boolean"},"active":{"type":"boolean"},"categoryId":{"type":"string","format":"uuid"},"certificationLevel":{"type":"string","nullable":true},"ruleSet":{"$ref":"#/components/schemas/CluedIn.Core.Rules.QueryBuilder.FilterRule"},"organizationId":{"type":"string","format":"uuid"},"relatedTags":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.TagModel"},"nullable":true}},"additionalProperties":false},"CluedIn.Glossary.Models.TermPagingResult":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Glossary.Models.TermListModel"},"nullable":true},"total":{"type":"integer","format":"int32"}},"additionalProperties":false},"CluedIn.Glossary.Models.AddCategoryModel":{"required":["name"],"type":"object","properties":{"name":{"minLength":1,"type":"string"}},"additionalProperties":false},"CluedIn.Glossary.Models.UpdateCategoryModel":{"required":["id","name"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"minLength":1,"type":"string"}},"additionalProperties":false},"CluedIn.Core.Data.Relational.GlossaryTermLexicon":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"value":{"type":"string","nullable":true},"glossaryTermId":{"type":"string","format":"uuid"},"type":{"type":"string","nullable":true},"createdDate":{"type":"string","format":"date-time"},"term":{"$ref":"#/components/schemas/CluedIn.Core.Data.Relational.GlossaryTerm"}},"additionalProperties":false},"CluedIn.Glossary.Models.TagModel":{"required":["name"],"type":"object","properties":{"id":{"type":"string","format":"uuid","nullable":true},"name":{"minLength":1,"type":"string"}},"additionalProperties":false},"CluedIn.Glossary.Models.AddEndorsementModel":{"required":["termId"],"type":"object","properties":{"termId":{"type":"string","format":"uuid"}},"additionalProperties":false},"CluedIn.Glossary.Models.RatingModel":{"required":["rating","termId"],"type":"object","properties":{"rating":{"maximum":5,"minimum":1,"type":"integer","format":"int32"},"termId":{"type":"string","format":"uuid"}},"additionalProperties":false},"CluedIn.Core.Rules.QueryBuilder.FilterRule":{"type":"object","properties":{"objectTypeId":{"type":"string","format":"uuid"},"condition":{"type":"string","nullable":true},"field":{"type":"string","nullable":true},"id":{"type":"string","format":"uuid"},"operator":{"type":"string","format":"uuid"},"rules":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.Rules.QueryBuilder.FilterRule"},"nullable":true},"type":{"type":"string","nullable":true},"value":{"type":"array","items":{},"nullable":true}},"additionalProperties":false},"CluedIn.Glossary.Models.TermListModel":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"modifiedAt":{"type":"string","format":"date-time","nullable":true},"name":{"type":"string","nullable":true},"modifiedBy":{"type":"string","nullable":true},"createdBy":{"type":"string","nullable":true},"active":{"type":"boolean"},"categoryId":{"type":"string","format":"uuid"},"categoryName":{"type":"string","nullable":true},"matches":{"type":"integer","format":"int32"},"requiresAttention":{"type":"boolean"}},"additionalProperties":false},"CluedIn.Core.Data.Relational.GlossaryTerm":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"modifiedAt":{"type":"string","format":"date-time","nullable":true},"expiryDate":{"type":"string","format":"date-time","nullable":true},"name":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"shortDescription":{"type":"string","nullable":true},"ruleSet":{"type":"string","nullable":true},"isObsolete":{"type":"boolean"},"definition":{"type":"string","nullable":true},"icon":{"type":"string","nullable":true},"status":{"type":"string","nullable":true},"rating":{"type":"string","nullable":true},"scoring":{"type":"integer","format":"int32"},"parentId":{"type":"string","format":"uuid","nullable":true},"modifiedBy":{"type":"string","nullable":true},"createdBy":{"type":"string","nullable":true},"organizationId":{"type":"string","format":"uuid"},"version":{"type":"integer","format":"int32"},"expert":{"type":"string","nullable":true},"active":{"type":"boolean"},"categoryId":{"type":"string","format":"uuid"},"certificationLevel":{"type":"string","nullable":true},"filterQuery":{"type":"string","nullable":true,"deprecated":true},"filterQueryType":{"type":"string","nullable":true},"lexicons":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.Data.Relational.GlossaryTermLexicon"},"nullable":true},"endorsements":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.Data.Relational.GlossaryEndorsement"},"nullable":true},"termTags":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.Data.Relational.GlossaryTermTag"},"nullable":true},"ratings":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.Data.Relational.GlossaryRating"},"nullable":true},"category":{"$ref":"#/components/schemas/CluedIn.Core.Data.Relational.GlossaryCategory"},"requiresAttention":{"type":"boolean"}},"additionalProperties":false},"CluedIn.Core.Data.Relational.GlossaryEndorsement":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"endorsedBy":{"type":"string","format":"uuid"},"status":{"type":"string","nullable":true},"glossaryTermId":{"type":"string","format":"uuid"},"user":{"$ref":"#/components/schemas/CluedIn.Core.Data.Relational.UserProfile"},"term":{"$ref":"#/components/schemas/CluedIn.Core.Data.Relational.GlossaryTerm"}},"additionalProperties":false},"CluedIn.Core.Data.Relational.GlossaryTermTag":{"type":"object","properties":{"glossaryTermId":{"type":"string","format":"uuid"},"glossaryTagId":{"type":"string","format":"uuid"},"term":{"$ref":"#/components/schemas/CluedIn.Core.Data.Relational.GlossaryTerm"},"tag":{"$ref":"#/components/schemas/CluedIn.Core.Data.Relational.GlossaryTag"}},"additionalProperties":false},"CluedIn.Core.Data.Relational.GlossaryRating":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"glossaryTermId":{"type":"string","format":"uuid"},"userId":{"type":"string","format":"uuid"},"rating":{"type":"integer","format":"int32"},"user":{"$ref":"#/components/schemas/CluedIn.Core.Data.Relational.UserProfile"},"term":{"$ref":"#/components/schemas/CluedIn.Core.Data.Relational.GlossaryTerm"}},"additionalProperties":false},"CluedIn.Core.Data.Relational.GlossaryCategory":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","nullable":true},"organizationId":{"type":"string","format":"uuid"}},"additionalProperties":false},"CluedIn.Core.Data.Relational.UserProfile":{"required":["organizationId"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"organizationId":{"type":"string","format":"uuid"},"email":{"maxLength":256,"minLength":0,"type":"string","format":"email","nullable":true},"description":{"maxLength":200,"minLength":0,"type":"string","nullable":true},"domain":{"maxLength":100,"minLength":0,"type":"string","nullable":true},"logo":{"maxLength":150,"minLength":0,"type":"string","nullable":true},"banner":{"maxLength":150,"minLength":0,"type":"string","nullable":true},"website":{"maxLength":150,"minLength":0,"type":"string","nullable":true},"location":{"maxLength":100,"minLength":0,"type":"string","nullable":true},"userName":{"maxLength":256,"minLength":0,"type":"string","nullable":true},"firstName":{"maxLength":100,"minLength":0,"type":"string","nullable":true},"lastName":{"maxLength":100,"minLength":0,"type":"string","nullable":true},"geo":{"maxLength":100,"minLength":0,"type":"string","nullable":true},"logoFullResolution":{"maxLength":150,"minLength":0,"type":"string","nullable":true},"bannerFullResolution":{"maxLength":150,"minLength":0,"type":"string","nullable":true},"allowSoundOnNotifications":{"type":"boolean","nullable":true},"newsletter":{"type":"boolean","nullable":true}},"additionalProperties":false},"CluedIn.Core.Data.Relational.GlossaryTag":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","nullable":true},"organizationId":{"type":"string","format":"uuid"},"termTags":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.Data.Relational.GlossaryTermTag"},"nullable":true}},"additionalProperties":false}},"securitySchemes":{"Bearer":{"type":"http","description":"Please enter a valid token","scheme":"Bearer"}}}}