{"openapi":"3.0.4","info":{"title":"CluedIn REST API — Search","description":"Query the CluedIn graph and manage saved searches.","version":"v1"},"tags":[{"name":"SavedSearch"},{"name":"Search"}],"paths":{"/api/v1/savedsearch":{"get":{"tags":["SavedSearch"],"summary":"List saved searches","parameters":[{"name":"Area","in":"query","required":true,"schema":{"maxLength":250,"type":"string"}},{"name":"IsGlobal","in":"query","schema":{"type":"boolean"}},{"name":"take","in":"query","schema":{"type":"integer","format":"int32","default":20},"description":"Page size. Defaults to 20."},{"name":"page","in":"query","schema":{"type":"integer","format":"int32","default":0},"description":"0-based page number. Defaults to 0."}],"responses":{"200":{"description":"OK"}},"description":"Returns paged saved searches matching the supplied filter model. Returns 400 with validation details when the filter model is invalid."},"post":{"tags":["SavedSearch"],"summary":"Create a saved search","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateOrUpdateSavedSearchModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateOrUpdateSavedSearchModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateOrUpdateSavedSearchModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateOrUpdateSavedSearchModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Creates a new saved search from the supplied model. Returns 201 Created with a `Location` header pointing at the new resource. Returns 400 when the filter rule fails validation."}},"/api/savedsearch":{"get":{"tags":["SavedSearch"],"summary":"List saved searches","parameters":[{"name":"Area","in":"query","required":true,"schema":{"maxLength":250,"type":"string"}},{"name":"IsGlobal","in":"query","schema":{"type":"boolean"}},{"name":"take","in":"query","schema":{"type":"integer","format":"int32","default":20},"description":"Page size. Defaults to 20."},{"name":"page","in":"query","schema":{"type":"integer","format":"int32","default":0},"description":"0-based page number. Defaults to 0."}],"responses":{"200":{"description":"OK"}},"description":"Returns paged saved searches matching the supplied filter model. Returns 400 with validation details when the filter model is invalid."},"post":{"tags":["SavedSearch"],"summary":"Create a saved search","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateOrUpdateSavedSearchModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateOrUpdateSavedSearchModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateOrUpdateSavedSearchModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateOrUpdateSavedSearchModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Creates a new saved search from the supplied model. Returns 201 Created with a `Location` header pointing at the new resource. Returns 400 when the filter rule fails validation."}},"/api/v1/savedsearch/{savedSearchId}":{"get":{"tags":["SavedSearch"],"summary":"Get a saved search","parameters":[{"name":"savedSearchId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Saved search identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns a single saved search by id. Returns 404 if the saved search cannot be found."},"post":{"tags":["SavedSearch"],"summary":"Update a saved search","parameters":[{"name":"savedSearchId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Saved search identifier."}],"requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateOrUpdateSavedSearchModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateOrUpdateSavedSearchModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateOrUpdateSavedSearchModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateOrUpdateSavedSearchModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Updates a saved search. Returns 403 if the caller does not have access to update it, 404 if it cannot be found, and 400 when the filter rule fails validation."},"delete":{"tags":["SavedSearch"],"summary":"Delete a saved search","parameters":[{"name":"savedSearchId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Saved search identifier."}],"responses":{"200":{"description":"OK"}},"description":"Deletes a saved search. Returns 403 if the caller does not have access to delete it and 404 if it cannot be found."}},"/api/savedsearch/{savedSearchId}":{"get":{"tags":["SavedSearch"],"summary":"Get a saved search","parameters":[{"name":"savedSearchId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Saved search identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns a single saved search by id. Returns 404 if the saved search cannot be found."},"post":{"tags":["SavedSearch"],"summary":"Update a saved search","parameters":[{"name":"savedSearchId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Saved search identifier."}],"requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateOrUpdateSavedSearchModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateOrUpdateSavedSearchModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateOrUpdateSavedSearchModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateOrUpdateSavedSearchModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Updates a saved search. Returns 403 if the caller does not have access to update it, 404 if it cannot be found, and 400 when the filter rule fails validation."},"delete":{"tags":["SavedSearch"],"summary":"Delete a saved search","parameters":[{"name":"savedSearchId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Saved search identifier."}],"responses":{"200":{"description":"OK"}},"description":"Deletes a saved search. Returns 403 if the caller does not have access to delete it and 404 if it cannot be found."}},"/api/v1/savedsearch/favorites":{"get":{"tags":["SavedSearch"],"summary":"List favorite saved searches","parameters":[{"name":"take","in":"query","schema":{"type":"integer","format":"int32","default":20},"description":"Page size. Defaults to 20."},{"name":"page","in":"query","schema":{"type":"integer","format":"int32","default":0},"description":"0-based page number. Defaults to 0."}],"responses":{"200":{"description":"OK"}},"description":"Returns the caller's favorite saved searches, paged."},"post":{"tags":["SavedSearch"],"summary":"Add favorite saved search","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateFavoriteModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateFavoriteModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateFavoriteModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateFavoriteModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Adds a saved search to the caller's favorites. Returns 201 Created with a link to the favorites list and 404 when the saved search id cannot be found."}},"/api/savedsearch/favorites":{"get":{"tags":["SavedSearch"],"summary":"List favorite saved searches","parameters":[{"name":"take","in":"query","schema":{"type":"integer","format":"int32","default":20},"description":"Page size. Defaults to 20."},{"name":"page","in":"query","schema":{"type":"integer","format":"int32","default":0},"description":"0-based page number. Defaults to 0."}],"responses":{"200":{"description":"OK"}},"description":"Returns the caller's favorite saved searches, paged."},"post":{"tags":["SavedSearch"],"summary":"Add favorite saved search","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateFavoriteModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateFavoriteModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateFavoriteModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateFavoriteModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Adds a saved search to the caller's favorites. Returns 201 Created with a link to the favorites list and 404 when the saved search id cannot be found."}},"/api/v1/savedsearch/favorites/{favoriteId}":{"delete":{"tags":["SavedSearch"],"summary":"Remove favorite saved search","parameters":[{"name":"favoriteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Favorite identifier."}],"responses":{"200":{"description":"OK"}},"description":"Removes a favorite by id. Returns 404 if the favorite cannot be found."}},"/api/savedsearch/favorites/{favoriteId}":{"delete":{"tags":["SavedSearch"],"summary":"Remove favorite saved search","parameters":[{"name":"favoriteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Favorite identifier."}],"responses":{"200":{"description":"OK"}},"description":"Removes a favorite by id. Returns 404 if the favorite cannot be found."}},"/api/search/suggest":{"get":{"tags":["Search"],"summary":"Get search auto-suggest","parameters":[{"name":"q","in":"query","schema":{"type":"string"},"description":"Query prefix to complete."}],"responses":{"200":{"description":"OK"}},"description":"Returns auto-suggest completions for a query prefix. Dispatches to V1, V2, or V3 implementation based on the `Search.V3.Enabled` / `Search.V3.AutoSuggestEnabled` / `Search.V2.Enabled` configuration flags. Returns an empty list when the query is empty."}},"/api/v2/search/suggest":{"get":{"tags":["Search"],"summary":"Get search auto-suggest (v2)","parameters":[{"name":"q","in":"query","schema":{"type":"string"},"description":"Query prefix to complete."}],"responses":{"200":{"description":"OK"}},"description":"Version 2 of the auto-suggest endpoint, used when `Search.V2.Enabled` is true and V3 is not."}},"/api/v3/search/suggest":{"get":{"tags":["Search"],"summary":"Get search auto-suggest (v3)","parameters":[{"name":"q","in":"query","schema":{"type":"string"},"description":"Query prefix to complete."}],"responses":{"200":{"description":"OK"}},"description":"Version 3 of the auto-suggest endpoint, used when `Search.V3.Enabled` or `Search.V3.AutoSuggestEnabled` is true."}},"/api/search":{"get":{"tags":["Search"],"summary":"Search entities","parameters":[{"name":"q","in":"query","schema":{"type":"string"},"description":"Search query string."},{"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":27},"description":"Page size. Defaults to 27."},{"name":"includeExternalData","in":"query","schema":{"type":"boolean","default":false},"description":"Include externally-sourced entities. Defaults to false."},{"name":"includeUnstructuredData","in":"query","schema":{"type":"boolean","default":false},"description":"Include unstructured entities. Defaults to false."}],"responses":{"200":{"description":"OK"}},"description":"Free-text search across the CluedIn graph. The controller dispatches to the V1, V2, or V3 implementation depending on the `Feature.Search.V3.Enabled` / `Feature.Search.V2.Enabled` flags. Multiple overloads accept additional combinations of `type`, `dateSort`, `nameSort`, `direction`, `includePreviousFacets`, and `searchUnTokenized` — the spec exposes a single endpoint and the controller resolves the actual signature by `ExactQueryParam` matching. Response is cached for 120 seconds."}},"/api/v1/search":{"get":{"tags":["Search"],"summary":"Search entities","parameters":[{"name":"q","in":"query","schema":{"type":"string"},"description":"Search query string."},{"name":"type","in":"query","schema":{"type":"string"},"description":"Optional entity-type filter."},{"name":"nameSort","in":"query","schema":{"type":"string"},"description":"When true, sort by name."},{"name":"page","in":"query","schema":{"type":"integer","format":"int32","default":0},"description":"0-based page number. Defaults to 0."},{"name":"direction","in":"query","schema":{"type":"string","default":"desc"},"description":"Sort direction: `asc` or `desc`. Defaults to `desc`."},{"name":"includeExternalData","in":"query","schema":{"type":"boolean","default":false},"description":"Include externally-sourced entities. Defaults to false."},{"name":"includeUnstructuredData","in":"query","schema":{"type":"boolean","default":false},"description":"Include unstructured entities. Defaults to false."}],"responses":{"200":{"description":"OK"}},"description":"Free-text search across the CluedIn graph. The controller dispatches to the V1, V2, or V3 implementation depending on the `Feature.Search.V3.Enabled` / `Feature.Search.V2.Enabled` flags. Multiple overloads accept additional combinations of `type`, `dateSort`, `nameSort`, `direction`, `includePreviousFacets`, and `searchUnTokenized` — the spec exposes a single endpoint and the controller resolves the actual signature by `ExactQueryParam` matching. Response is cached for 120 seconds."}},"/api/entitysearch":{"get":{"tags":["Search"],"summary":"Search inside an entity","parameters":[{"name":"id","in":"query","schema":{"type":"string"},"description":"Root entity identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns a paged sub-search scoped to a single root entity, optionally filtered by entity type, with date-sort options. Dispatches between V2 and V3 implementations based on `Feature.Search.V3.Enabled`."}},"/api/v1/entitysearch":{"get":{"tags":["Search"],"summary":"Search inside an entity","parameters":[{"name":"id","in":"query","schema":{"type":"string"},"description":"Root entity identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns a paged sub-search scoped to a single root entity, optionally filtered by entity type, with date-sort options. Dispatches between V2 and V3 implementations based on `Feature.Search.V3.Enabled`."}},"/api/dynamicfacets":{"get":{"tags":["Search"],"summary":"Search with dynamic facets","parameters":[{"name":"id","in":"query","schema":{"type":"string"},"description":"Root entity identifier."},{"name":"type","in":"query","schema":{"type":"string"},"description":"Entity-type filter."},{"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 a paged entity sub-search together with dynamically computed vocabulary-key facets, for use in the entity-detail facet panel. Dispatches between V2 and V3 implementations based on `Feature.Search.V3.Enabled`."}},"/api/v1/dynamicfacets":{"get":{"tags":["Search"],"summary":"Search with dynamic facets","parameters":[{"name":"id","in":"query","schema":{"type":"string"},"description":"Root entity identifier."},{"name":"type","in":"query","schema":{"type":"string"},"description":"Entity-type filter."},{"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 a paged entity sub-search together with dynamically computed vocabulary-key facets, for use in the entity-detail facet panel. Dispatches between V2 and V3 implementations based on `Feature.Search.V3.Enabled`."}},"/api/v2/entitysearch":{"get":{"tags":["Search"],"summary":"Search inside an entity (v2)","parameters":[{"name":"id","in":"query","schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"take","in":"query","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK"}},"description":"Version 2 of the entity sub-search. Same parameters as `/api/v1/entitysearch`."}},"/api/v2/dynamicfacets":{"get":{"tags":["Search"],"summary":"Search with dynamic facets (v2)","parameters":[{"name":"id","in":"query","schema":{"type":"string"}},{"name":"type","in":"query","schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"take","in":"query","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK"}},"description":"Version 2 of the dynamic-facets endpoint."}},"/api/v3/entitysearch":{"get":{"tags":["Search"],"summary":"Search inside an entity (v3)","parameters":[{"name":"id","in":"query","schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"take","in":"query","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK"}},"description":"Version 3 of the entity sub-search. Same parameters as `/api/v1/entitysearch`."}},"/api/v3/dynamicfacets":{"get":{"tags":["Search"],"summary":"Search with dynamic facets (v3)","parameters":[{"name":"id","in":"query","schema":{"type":"string"}},{"name":"type","in":"query","schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"take","in":"query","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK"}},"description":"Version 3 of the dynamic-facets endpoint."}},"/api/search/id":{"get":{"tags":["Search"],"summary":"Get entity from search store by id","parameters":[{"name":"q","in":"query","schema":{"type":"string"},"description":"Entity identifier (GUID)."}],"responses":{"200":{"description":"OK"}},"description":"Returns the entity record stored in the search index (Elasticsearch) for the supplied id. Returns 400 for invalid GUIDs."}},"/api/v1/search/id":{"get":{"tags":["Search"],"summary":"Get entity from search store by id","parameters":[{"name":"q","in":"query","schema":{"type":"string"},"description":"Entity identifier (GUID)."}],"responses":{"200":{"description":"OK"}},"description":"Returns the entity record stored in the search index (Elasticsearch) for the supplied id. Returns 400 for invalid GUIDs."}},"/api/joinsearch":{"get":{"tags":["Search"],"summary":" (Auth)","parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"take","in":"query","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK"}}}},"/api/v2/joinsearch":{"get":{"tags":["Search"],"summary":"Joined search","parameters":[{"name":"q","in":"query","schema":{"type":"string"},"description":"Search query string."},{"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":"Joined search that lets a query span related entities; results are still entity instances but ranking includes edges of related types. Available only as `/api/joinsearch` and `/api/v2/joinsearch`. Dispatches to V2 or V3 implementation when feature flags are enabled. Returns an empty response when neither V2 nor V3 is enabled."}},"/api/v3/joinsearch":{"get":{"tags":["Search"],"summary":"Joined search (v3)","parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"take","in":"query","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK"}},"description":"Version 3 of the joined search endpoint, used when `Feature.Search.V3.Enabled` is true."}},"/api/v1/search/suggest":{"get":{"tags":["Search"],"summary":"Get search auto-suggest","parameters":[{"name":"q","in":"query","schema":{"type":"string"},"description":"Query prefix to complete."}],"responses":{"200":{"description":"OK"}},"description":"Returns auto-suggest completions for a query prefix. Dispatches to V1, V2, or V3 implementation based on the `Search.V3.Enabled` / `Search.V3.AutoSuggestEnabled` / `Search.V2.Enabled` configuration flags. Returns an empty list when the query is empty."}},"/api/search/morelikethis":{"get":{"tags":["Search"],"summary":"More like this","parameters":[{"name":"id","in":"query","schema":{"type":"string"},"description":"Entity identifier (GUID)."}],"responses":{"200":{"description":"OK"}},"description":"Returns entities that the search index considers similar to the supplied entity, augmented with suggested searches per hit. With the `type` parameter the similarity is restricted to one or more entity types (comma-separated). Returns 400 for invalid GUIDs."}},"/api/v1/search/morelikethis":{"get":{"tags":["Search"],"summary":"More like this","parameters":[{"name":"id","in":"query","schema":{"type":"string"},"description":"Entity identifier (GUID)."}],"responses":{"200":{"description":"OK"}},"description":"Returns entities that the search index considers similar to the supplied entity, augmented with suggested searches per hit. With the `type` parameter the similarity is restricted to one or more entity types (comma-separated). Returns 400 for invalid GUIDs."}},"/api/subsearch":{"get":{"tags":["Search"],"summary":"Sub-search","parameters":[{"name":"id","in":"query","schema":{"type":"string","format":"uuid"},"description":"Parent entity identifier."},{"name":"q","in":"query","schema":{"type":"string"},"description":"Search query string."}],"responses":{"200":{"description":"OK"}},"description":"Runs a free-text search restricted to entities related to (a sub-graph of) the supplied parent entity id. Dispatches between V2 and V3 implementations based on `Feature.Search.V3.Enabled`."}},"/api/v1/subsearch":{"get":{"tags":["Search"],"summary":"Sub-search","parameters":[{"name":"id","in":"query","schema":{"type":"string","format":"uuid"},"description":"Parent entity identifier."},{"name":"q","in":"query","schema":{"type":"string"},"description":"Search query string."}],"responses":{"200":{"description":"OK"}},"description":"Runs a free-text search restricted to entities related to (a sub-graph of) the supplied parent entity id. Dispatches between V2 and V3 implementations based on `Feature.Search.V3.Enabled`."}},"/api/v2/subsearch":{"get":{"tags":["Search"],"summary":"Sub-search (v2)","parameters":[{"name":"id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"q","in":"query","schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"take","in":"query","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK"}},"description":"Version 2 of the sub-search endpoint. Same parameters as `/api/v1/subsearch`."}},"/api/v3/subsearch":{"get":{"tags":["Search"],"summary":"Sub-search (v3)","parameters":[{"name":"id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"q","in":"query","schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"take","in":"query","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK"}},"description":"Version 3 of the sub-search endpoint. Same parameters as `/api/v1/subsearch`."}},"/api/search/terms":{"get":{"tags":["Search"],"summary":"Get term aggregations for a property","parameters":[{"name":"id","in":"query","schema":{"type":"string"},"description":"Entity identifier (when running on a single record)."}],"responses":{"200":{"description":"OK"}},"description":"Returns a term aggregation for a vocabulary key (property name) — the list of distinct values seen across the index and their counts. With only `id` the aggregation is run on the entity record id; with `propertyName` it targets a vocabulary key. Supports `resolveMappedKeys` to follow mapping chains. Returns 404 if the property cannot be resolved."}},"/api/v1/search/terms":{"get":{"tags":["Search"],"summary":"Get term aggregations for a property","parameters":[{"name":"id","in":"query","schema":{"type":"string"},"description":"Entity identifier (when running on a single record)."}],"responses":{"200":{"description":"OK"}},"description":"Returns a term aggregation for a vocabulary key (property name) — the list of distinct values seen across the index and their counts. With only `id` the aggregation is run on the entity record id; with `propertyName` it targets a vocabulary key. Supports `resolveMappedKeys` to follow mapping chains. Returns 404 if the property cannot be resolved."}},"/api/search/terms/paged":{"get":{"tags":["Search"],"summary":"Get paged term aggregations","parameters":[{"name":"propertyName","in":"query","schema":{"type":"string"},"description":"Fully-qualified vocabulary key."},{"name":"size","in":"query","schema":{"type":"integer","format":"int32","default":10},"description":"Page size. Defaults to 10."},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"Opaque paging cursor for the next page."},{"name":"searchTerm","in":"query","schema":{"type":"string"},"description":"Optional substring search inside bucket names."},{"name":"resolveMappedKeys","in":"query","schema":{"type":"boolean","default":false},"description":"When true, resolve to the destination mapped key. Defaults to false."}],"responses":{"200":{"description":"OK"}},"description":"Returns paged term aggregations for a vocabulary key with optional text search inside the bucket names. Returns 404 if the property cannot be resolved and 400 when the cursor cannot be parsed."}},"/api/v1/search/terms/paged":{"get":{"tags":["Search"],"summary":"Get paged term aggregations","parameters":[{"name":"propertyName","in":"query","schema":{"type":"string"},"description":"Fully-qualified vocabulary key."},{"name":"size","in":"query","schema":{"type":"integer","format":"int32","default":10},"description":"Page size. Defaults to 10."},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"Opaque paging cursor for the next page."},{"name":"searchTerm","in":"query","schema":{"type":"string"},"description":"Optional substring search inside bucket names."},{"name":"resolveMappedKeys","in":"query","schema":{"type":"boolean","default":false},"description":"When true, resolve to the destination mapped key. Defaults to false."}],"responses":{"200":{"description":"OK"}},"description":"Returns paged term aggregations for a vocabulary key with optional text search inside the bucket names. Returns 404 if the property cannot be resolved and 400 when the cursor cannot be parsed."}},"/api/search/facets":{"get":{"tags":["Search"],"summary":"Get facet aggregations for a field","parameters":[{"name":"fieldName","in":"query","schema":{"type":"string"},"description":"Schema field name."},{"name":"size","in":"query","schema":{"type":"integer","format":"int32","default":1000},"description":"Maximum number of buckets. Defaults to 1000."},{"name":"resolveMappedKeys","in":"query","schema":{"type":"boolean","default":false},"description":"When true, follow mapping chains when running the aggregation."}],"responses":{"200":{"description":"OK"}},"description":"Returns Elasticsearch term aggregations for a single schema field, taking the field's `DataType` into account (IP addresses get an additional `IpRange` aggregation). Returns 404 if the field is not in the entity schema."}},"/api/v1/search/facets":{"get":{"tags":["Search"],"summary":"Get facet aggregations for a field","parameters":[{"name":"fieldName","in":"query","schema":{"type":"string"},"description":"Schema field name."},{"name":"size","in":"query","schema":{"type":"integer","format":"int32","default":1000},"description":"Maximum number of buckets. Defaults to 1000."},{"name":"resolveMappedKeys","in":"query","schema":{"type":"boolean","default":false},"description":"When true, follow mapping chains when running the aggregation."}],"responses":{"200":{"description":"OK"}},"description":"Returns Elasticsearch term aggregations for a single schema field, taking the field's `DataType` into account (IP addresses get an additional `IpRange` aggregation). Returns 404 if the field is not in the entity schema."}},"/api/v2/search":{"get":{"tags":["Search"],"summary":"Search entities (v2)","parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"take","in":"query","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK"}},"description":"Version 2 of the entity search endpoint. Reached either explicitly via `/api/v2/search` or implicitly when `Feature.Search.V2.Enabled` is true and V3 is not. Same query parameters as `/api/v1/search`."}},"/api/v3/search":{"get":{"tags":["Search"],"summary":"Search entities (v3)","parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"take","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"searchUntokenized","in":"query","schema":{"type":"boolean","default":false}},{"name":"includeExternalData","in":"query","schema":{"type":"boolean","default":false}},{"name":"includeUnstructuredData","in":"query","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK"}},"description":"Version 3 of the entity search endpoint. Reached either explicitly via `/api/v3/search` or implicitly when `Feature.Search.V3.Enabled` is true. Adds the `searchUnTokenized` option and richer ranking."}}},"components":{"schemas":{"CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateOrUpdateSavedSearchModel":{"required":["area","data","name"],"type":"object","properties":{"name":{"maxLength":250,"minLength":1,"type":"string"},"data":{"minLength":1,"type":"string"},"isGlobal":{"type":"boolean"},"area":{"maxLength":250,"minLength":1,"type":"string"}},"additionalProperties":false},"CluedIn.Server.WebApi.Controllers.SavedSearchUI.Models.CreateFavoriteModel":{"required":["savedSearchId"],"type":"object","properties":{"savedSearchId":{"type":"string","format":"uuid"}},"additionalProperties":false}},"securitySchemes":{"Bearer":{"type":"http","description":"Please enter a valid token","scheme":"Bearer"}}}}