{"openapi":"3.0.4","info":{"title":"CluedIn REST API — Entities","description":"Read, create, modify, merge, and inspect golden records and their metadata.","version":"v1"},"tags":[{"name":"Entity"},{"name":"EntityDataDeletion"},{"name":"EntityHistory"},{"name":"EntityInfo"},{"name":"EntityModification"},{"name":"EntityOrigin"},{"name":"EntitySource"},{"name":"EntityTopology"},{"name":"EntityTypeInfo"}],"paths":{"/api/entity":{"get":{"tags":["Entity"],"summary":"Get entity by id","parameters":[{"name":"id","in":"query","schema":{"type":"string"},"description":"Entity identifier (GUID)."}],"responses":{"200":{"description":"OK"}},"description":"Returns the entity with the supplied id, augmented with editable-field permissions, suggested searches, and per-provider account data so the UI can render the entity card. The query supports a `full` flag that switches to the raw blob-store serialisation. For Mail entities the body is read from the search store when missing from the primary store, and HTML detection wraps plain text in `<pre>` tags. Returns 400 for invalid GUIDs, 403 when the caller lacks access to any of the entity's providers, and 404 when the entity does not exist."}},"/api/v1/entity":{"get":{"tags":["Entity"],"summary":"Get entity by id","parameters":[{"name":"id","in":"query","schema":{"type":"string"},"description":"Entity identifier (GUID)."}],"responses":{"200":{"description":"OK"}},"description":"Returns the entity with the supplied id, augmented with editable-field permissions, suggested searches, and per-provider account data so the UI can render the entity card. The query supports a `full` flag that switches to the raw blob-store serialisation. For Mail entities the body is read from the search store when missing from the primary store, and HTML detection wraps plain text in `<pre>` tags. Returns 400 for invalid GUIDs, 403 when the caller lacks access to any of the entity's providers, and 404 when the entity does not exist."}},"/api/entity/acl":{"get":{"tags":["Entity"],"summary":"Get entity ACL","parameters":[{"name":"id","in":"query","schema":{"type":"string"},"description":"Entity identifier (GUID)."}],"responses":{"200":{"description":"OK"}},"description":"Returns the user records (organisation provider accounts) that map to the providers contributing data to the entity. Useful to show who can act on an entity through which provider. Returns 404 if the entity does not exist."}},"/api/v1/entity/acl":{"get":{"tags":["Entity"],"summary":"Get entity ACL","parameters":[{"name":"id","in":"query","schema":{"type":"string"},"description":"Entity identifier (GUID)."}],"responses":{"200":{"description":"OK"}},"description":"Returns the user records (organisation provider accounts) that map to the providers contributing data to the entity. Useful to show who can act on an entity through which provider. Returns 404 if the entity does not exist."}},"/api/entityedges":{"get":{"tags":["Entity"],"summary":"Get entity edges","parameters":[{"name":"id","in":"query","schema":{"type":"string"},"description":"Entity identifier (GUID)."},{"name":"disableGrouping","in":"query","schema":{"type":"boolean","default":false},"description":"When true, return every edge individually instead of grouping by edge type."}],"responses":{"200":{"description":"OK"}},"description":"Returns the incoming and outgoing edges for an entity, with edge grouping applied when the number of edges of the same type exceeds the configured `Entity.EdgeGroupingThreshold` (default 25). Set `disableGrouping=true` to receive every individual edge. Returns 400 for invalid GUIDs and 404 if the entity does not exist."}},"/api/v1/entityedges":{"get":{"tags":["Entity"],"summary":"Get entity edges","parameters":[{"name":"id","in":"query","schema":{"type":"string"},"description":"Entity identifier (GUID)."},{"name":"disableGrouping","in":"query","schema":{"type":"boolean","default":false},"description":"When true, return every edge individually instead of grouping by edge type."}],"responses":{"200":{"description":"OK"}},"description":"Returns the incoming and outgoing edges for an entity, with edge grouping applied when the number of edges of the same type exceeds the configured `Entity.EdgeGroupingThreshold` (default 25). Set `disableGrouping=true` to receive every individual edge. Returns 400 for invalid GUIDs and 404 if the entity does not exist."}},"/api/edges/centeredOnEntity":{"get":{"tags":["Entity"],"summary":"Get edges centered on an entity","parameters":[{"name":"entityId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Centre entity identifier."},{"name":"depth","in":"query","schema":{"type":"integer","format":"int32","default":2},"description":"Hop depth. Defaults to 2."},{"name":"maxNumberOfEdges","in":"query","schema":{"type":"integer","format":"int32","default":500},"description":"Hard cap on returned edges. Defaults to 500."},{"name":"includeIncomingOnCenter","in":"query","schema":{"type":"boolean","default":true},"description":"Include incoming edges on the centre entity. Defaults to true."},{"name":"includeIncomingOnOther","in":"query","schema":{"type":"boolean","default":false},"description":"Include incoming edges on neighbouring entities. Defaults to false."},{"name":"includeShadowEntities","in":"query","schema":{"type":"boolean","default":false},"description":"Include shadow entities. Defaults to false."},{"name":"includeTemporalEntities","in":"query","schema":{"type":"boolean","default":false},"description":"Include temporal entities. Defaults to false."},{"name":"includeExternalData","in":"query","schema":{"type":"boolean","default":false},"description":"Include externally-sourced entities. Defaults to false."}],"responses":{"200":{"description":"OK"}},"description":"Returns the entities and edges reachable within `depth` hops of the supplied entity. Use the toggles to control whether incoming edges, shadow entities, temporal entities, and external data participate. Returns 404 if the centre entity does not exist. The response includes an `IsLimitedByNumberOfRelationships` flag indicating whether `maxNumberOfEdges` was reached."}},"/api/entity/edgeDetails":{"get":{"tags":["Entity"],"summary":"Get edge properties","parameters":[{"name":"fromEntityId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Source entity identifier."},{"name":"toEntityId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Target entity identifier."},{"name":"edgeType","in":"query","schema":{"type":"string"},"description":"Edge type."},{"name":"edgePropertiesHash","in":"query","schema":{"type":"string"},"description":"Hash identifying the specific edge instance."}],"responses":{"200":{"description":"OK"}},"description":"Returns the properties stored on a specific edge between two entities. Returns 404 if either endpoint cannot be found."}},"/api/entity/sensitive":{"post":{"tags":["Entity"],"summary":"Mark entity as sensitive","parameters":[{"name":"id","in":"query","schema":{"type":"string"},"description":"Entity identifier (GUID)."}],"responses":{"200":{"description":"OK"}},"description":"Publishes a service-bus command marking the entity as sensitive. Returns 400 for invalid GUIDs and 200 once the command has been published. Same handler as the PUT variant."},"put":{"tags":["Entity"],"summary":"Mark entity as sensitive","parameters":[{"name":"id","in":"query","schema":{"type":"string"},"description":"Entity identifier (GUID)."}],"responses":{"200":{"description":"OK"}},"description":"Same handler as `POST /api/entity/sensitive`; both verbs are accepted for backwards compatibility."}},"/api/property/anonymise":{"post":{"tags":["Entity"],"summary":"Anonymise a property value","parameters":[{"name":"value","in":"query","schema":{"type":"string"},"description":"Value to anonymise."}],"responses":{"200":{"description":"OK"}},"description":"Returns the supplied value with the anonymisation utility applied for the caller's organisation. Returns 400 for empty input. Same handler as the PUT variant."},"put":{"tags":["Entity"],"summary":"Anonymise a property value","parameters":[{"name":"value","in":"query","schema":{"type":"string"},"description":"Value to anonymise."}],"responses":{"200":{"description":"OK"}},"description":"Same handler as `POST /api/property/anonymise`; both verbs are accepted."}},"/api/property/deanonymise":{"post":{"tags":["Entity"],"summary":"De-anonymise a property value","parameters":[{"name":"value","in":"query","schema":{"type":"string"},"description":"Value to de-anonymise."}],"responses":{"200":{"description":"OK"}},"description":"Returns the supplied value with anonymised tokens replaced by the original values. Returns 400 when the value is empty or does not contain `<anonymised>...</anonymised>` markers. Same handler as the PUT variant."},"put":{"tags":["Entity"],"summary":"De-anonymise a property value","parameters":[{"name":"value","in":"query","schema":{"type":"string"},"description":"Value to de-anonymise."}],"responses":{"200":{"description":"OK"}},"description":"Same handler as `POST /api/property/deanonymise`; both verbs are accepted."}},"/api/entity/unsensitive":{"put":{"tags":["Entity"],"summary":"Mark entity as not sensitive","parameters":[{"name":"id","in":"query","schema":{"type":"string"},"description":"Entity identifier (GUID)."}],"responses":{"200":{"description":"OK"}},"description":"Same handler as `POST /api/entity/unsensitive`; both verbs are accepted for backwards compatibility. Requires the Administration.Data RACI claim."},"post":{"tags":["Entity"],"summary":"Mark entity as not sensitive","parameters":[{"name":"id","in":"query","schema":{"type":"string"},"description":"Entity identifier (GUID)."}],"responses":{"200":{"description":"OK"}},"description":"Publishes a service-bus command clearing the sensitive flag on the entity. Returns 400 for invalid GUIDs and 200 once the command has been published. Requires the Administration.Data RACI claim. Same handler as the PUT variant."}},"/api/entity/schema":{"get":{"tags":["Entity"],"summary":"Get entity property schema","responses":{"200":{"description":"OK"}},"description":"Returns the entity property schema known to the platform. With the `key` query parameter, the response is filtered to schema entries whose key or display name contains the value, and includes additional metadata such as editability, removability, and obsolete state."}},"/api/v1/entity/schema":{"get":{"tags":["Entity"],"summary":"Get entity property schema","responses":{"200":{"description":"OK"}},"description":"Returns the entity property schema known to the platform. With the `key` query parameter, the response is filtered to schema entries whose key or display name contains the value, and includes additional metadata such as editability, removability, and obsolete state."}},"/api/entity/code":{"get":{"tags":["Entity"],"summary":"Get entity by code","parameters":[{"name":"id","in":"query","schema":{"type":"string"},"description":"Serialised entity code."}],"responses":{"200":{"description":"OK"}},"description":"Returns an entity by its code. Two query shapes are supported: a single `id` parameter that contains a serialised entity code, or `type` + `origin` + `value` as separate components. Returns 400 for invalid codes, 404 if no entity matches, and 403 when the caller lacks access. With the three-part form the response is just the entity id rather than the full entity card."}},"/api/v1/entity/code":{"get":{"tags":["Entity"],"summary":"Get entity by code","parameters":[{"name":"id","in":"query","schema":{"type":"string"},"description":"Serialised entity code."}],"responses":{"200":{"description":"OK"}},"description":"Returns an entity by its code. Two query shapes are supported: a single `id` parameter that contains a serialised entity code, or `type` + `origin` + `value` as separate components. Returns 400 for invalid codes, 404 if no entity matches, and 403 when the caller lacks access. With the three-part form the response is just the entity id rather than the full entity card."}},"/api/entity/email":{"get":{"tags":["Entity"],"summary":"Get person entity by email","parameters":[{"name":"email","in":"query","schema":{"type":"string"},"description":"Email address to look up."}],"responses":{"200":{"description":"OK"}},"description":"Returns the Person entity whose CluedIn email entity code matches the supplied address. Returns 400 for malformed addresses, 404 if no Person matches, and 403 when the caller lacks access."}},"/api/v1/entity/email":{"get":{"tags":["Entity"],"summary":"Get person entity by email","parameters":[{"name":"email","in":"query","schema":{"type":"string"},"description":"Email address to look up."}],"responses":{"200":{"description":"OK"}},"description":"Returns the Person entity whose CluedIn email entity code matches the supplied address. Returns 400 for malformed addresses, 404 if no Person matches, and 403 when the caller lacks access."}},"/api/entity/domain":{"get":{"tags":["Entity"],"summary":"Get organization entity by email domain","parameters":[{"name":"domain","in":"query","schema":{"type":"string"},"description":"Email domain to look up."}],"responses":{"200":{"description":"OK"}},"description":"Returns the Organization entity whose CluedIn email-domain entity code matches the supplied domain. Returns 400 for empty input, 404 if no Organization matches, and 403 when the caller lacks access."}},"/api/v1/entity/domain":{"get":{"tags":["Entity"],"summary":"Get organization entity by email domain","parameters":[{"name":"domain","in":"query","schema":{"type":"string"},"description":"Email domain to look up."}],"responses":{"200":{"description":"OK"}},"description":"Returns the Organization entity whose CluedIn email-domain entity code matches the supplied domain. Returns 400 for empty input, 404 if no Organization matches, and 403 when the caller lacks access."}},"/api/entity/suggest":{"get":{"tags":["Entity"],"summary":"Get suggested graph queries for an entity","parameters":[{"name":"id","in":"query","schema":{"type":"string"},"description":"Entity identifier (GUID)."}],"responses":{"200":{"description":"OK"}},"description":"Returns a set of suggested graph search queries for the entity, used to power the \"Related\" / suggested searches surfaces in the UI. Returns 400 for invalid GUIDs and 404 if the entity does not exist."}},"/api/v1/entity/suggest":{"get":{"tags":["Entity"],"summary":"Get suggested graph queries for an entity","parameters":[{"name":"id","in":"query","schema":{"type":"string"},"description":"Entity identifier (GUID)."}],"responses":{"200":{"description":"OK"}},"description":"Returns a set of suggested graph search queries for the entity, used to power the \"Related\" / suggested searches surfaces in the UI. Returns 400 for invalid GUIDs and 404 if the entity does not exist."}},"/api/entity/relations":{"get":{"tags":["Entity"],"summary":"Get related entities","parameters":[{"name":"id","in":"query","schema":{"type":"string"},"description":"Entity identifier (GUID)."},{"name":"relationship","in":"query","schema":{"type":"string"},"description":"Relationship type to follow."}],"responses":{"200":{"description":"OK"}},"description":"Returns the entities related to the supplied entity through a specific relationship, combining incoming and outgoing endpoints. Returns 404 when no entities match the relationship. Defaults: `page=0`, `take=10`."}},"/api/v1/entity/relations":{"get":{"tags":["Entity"],"summary":"Get related entities","parameters":[{"name":"id","in":"query","schema":{"type":"string"},"description":"Entity identifier (GUID)."},{"name":"relationship","in":"query","schema":{"type":"string"},"description":"Relationship type to follow."}],"responses":{"200":{"description":"OK"}},"description":"Returns the entities related to the supplied entity through a specific relationship, combining incoming and outgoing endpoints. Returns 404 when no entities match the relationship. Defaults: `page=0`, `take=10`."}},"/api/entity/domainusers":{"get":{"tags":["Entity"],"summary":"List domain users","responses":{"200":{"description":"OK"}},"description":"Returns users whose email domain matches the organisation's configured email domain, excluding the current caller and users that already have a CluedIn profile. Returns 204 No Content when the organisation has no email domain configured, and 404 if the caller's user entity cannot be found."}},"/api/v1/entity/domainusers":{"get":{"tags":["Entity"],"summary":"List domain users","responses":{"200":{"description":"OK"}},"description":"Returns users whose email domain matches the organisation's configured email domain, excluding the current caller and users that already have a CluedIn profile. Returns 204 No Content when the organisation has no email domain configured, and 404 if the caller's user entity cannot be found."}},"/api/entity/associate":{"post":{"tags":["Entity"],"summary":"Associate entities by relationship","parameters":[{"name":"ids","in":"query","schema":{"type":"string"},"description":"Comma/semicolon/pipe-separated list of source entity ids."},{"name":"targetId","in":"query","schema":{"type":"string"},"description":"Target entity identifier."},{"name":"relationship","in":"query","schema":{"type":"string"},"description":"Relationship (edge) type."}],"responses":{"200":{"description":"OK"}},"description":"Creates outgoing edges of the supplied relationship type from each source entity to the target entity, and journals each addition. The `ids` parameter accepts comma, semicolon, or pipe-separated identifiers. Returns 406 when the relationship is not a known `EntityEdgeType`, 404 when the target entity does not exist, and 202 Accepted on success. Requires the Administration.Data RACI claim."}},"/api/v1/entity/associate":{"post":{"tags":["Entity"],"summary":"Associate entities by relationship","parameters":[{"name":"ids","in":"query","schema":{"type":"string"},"description":"Comma/semicolon/pipe-separated list of source entity ids."},{"name":"targetId","in":"query","schema":{"type":"string"},"description":"Target entity identifier."},{"name":"relationship","in":"query","schema":{"type":"string"},"description":"Relationship (edge) type."}],"responses":{"200":{"description":"OK"}},"description":"Creates outgoing edges of the supplied relationship type from each source entity to the target entity, and journals each addition. The `ids` parameter accepts comma, semicolon, or pipe-separated identifiers. Returns 406 when the relationship is not a known `EntityEdgeType`, 404 when the target entity does not exist, and 202 Accepted on success. Requires the Administration.Data RACI claim."}},"/api/entity/disassociate":{"post":{"tags":["Entity"],"summary":"Disassociate entities by relationship","parameters":[{"name":"ids","in":"query","schema":{"type":"string"},"description":"Comma/semicolon/pipe-separated list of source entity ids."},{"name":"targetId","in":"query","schema":{"type":"string"},"description":"Target entity identifier."},{"name":"relationship","in":"query","schema":{"type":"string"},"description":"Relationship (edge) type."}],"responses":{"200":{"description":"OK"}},"description":"Removes outgoing edges of the supplied relationship type from each source entity to the target entity and journals each removal. Same id parsing and validation rules as `POST /entity/associate`. Returns 202 Accepted on success. Requires the Administration.Data RACI claim."}},"/api/v1/entity/disassociate":{"post":{"tags":["Entity"],"summary":"Disassociate entities by relationship","parameters":[{"name":"ids","in":"query","schema":{"type":"string"},"description":"Comma/semicolon/pipe-separated list of source entity ids."},{"name":"targetId","in":"query","schema":{"type":"string"},"description":"Target entity identifier."},{"name":"relationship","in":"query","schema":{"type":"string"},"description":"Relationship (edge) type."}],"responses":{"200":{"description":"OK"}},"description":"Removes outgoing edges of the supplied relationship type from each source entity to the target entity and journals each removal. Same id parsing and validation rules as `POST /entity/associate`. Returns 202 Accepted on success. Requires the Administration.Data RACI claim."}},"/api/gdpr/entityTypes":{"get":{"tags":["Entity"],"summary":"List entity type facets (GDPR path)","parameters":[{"name":"includeShadowEntities","in":"query","schema":{"type":"boolean","default":true},"description":"Include shadow entity types. Defaults to true."},{"name":"includeExternalData","in":"query","schema":{"type":"boolean","default":true},"description":"Include externally-sourced entity types. Defaults to true."}],"responses":{"200":{"description":"OK"}},"description":"Alias for `GET /api/v1/entityTypes` exposed under the GDPR-themed `/api/gdpr/entityTypes` path. Same response shape and semantics."}},"/api/v1/entityTypes":{"get":{"tags":["Entity"],"summary":"List entity type facets","parameters":[{"name":"includeShadowEntities","in":"query","schema":{"type":"boolean","default":true},"description":"Include shadow entity types. Defaults to true."},{"name":"includeExternalData","in":"query","schema":{"type":"boolean","default":true},"description":"Include externally-sourced entity types. Defaults to true."}],"responses":{"200":{"description":"OK"}},"description":"Returns the entity-type facets known to the organisation. Optional `entityType` filter narrows the result to a single type. Flags `includeShadowEntities` and `includeExternalData` control whether shadow and external-data entities contribute to the facet counts. (Also exposed as `GET /api/gdpr/entityTypes`.)"}},"/api/entity/branchInfo":{"get":{"tags":["Entity"],"summary":"Get entity version branches","parameters":[{"name":"entityId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Entity identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns the version-history branches for an entity, each with its name, the origin provider definitions that contributed to it, and the list of versions (data part id, input source, parent and child part ids). Used by version-history visualisations."}},"/api/entity/summary":{"get":{"tags":["Entity"],"summary":"Get entity summary","parameters":[{"name":"entityId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Entity identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns counts and slim-info lists for the providers, sources, enrichers, clean projects, deduplication projects, AI agents, and export streams that the entity participates in. Returns 404 if the entity does not exist. Source ids and stream membership are read from the search store and stream log service for efficiency."}},"/api/entity/mergeEntities":{"post":{"tags":["Entity"],"summary":"Merge entities","parameters":[{"name":"ids","in":"query","schema":{"type":"string"},"description":"Comma/semicolon/pipe-separated source entity ids."},{"name":"targetId","in":"query","schema":{"type":"string"},"description":"Target entity identifier."}],"requestBody":{"content":{"application/json-patch+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Merge"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Merge"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Merge"}}},"application/*+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Merge"}}}}},"responses":{"200":{"description":"OK"}},"description":"Merges a set of source entities into a target entity, dispatching a merge-with-user-input command and starting a workflow that records merge context (ids, user-supplied property choices, etc.). Source ids are comma, semicolon, or pipe-separated. Returns 400 when the target entity is missing and 202 Accepted when the merge command is queued. Requires the Administration.Data RACI claim."}},"/api/v1/entity/mergeEntities":{"post":{"tags":["Entity"],"summary":"Merge entities","parameters":[{"name":"ids","in":"query","schema":{"type":"string"},"description":"Comma/semicolon/pipe-separated source entity ids."},{"name":"targetId","in":"query","schema":{"type":"string"},"description":"Target entity identifier."}],"requestBody":{"content":{"application/json-patch+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Merge"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Merge"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Merge"}}},"application/*+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Merge"}}}}},"responses":{"200":{"description":"OK"}},"description":"Merges a set of source entities into a target entity, dispatching a merge-with-user-input command and starting a workflow that records merge context (ids, user-supplied property choices, etc.). Source ids are comma, semicolon, or pipe-separated. Returns 400 when the target entity is missing and 202 Accepted when the merge command is queued. Requires the Administration.Data RACI claim."}},"/api/entity/path":{"get":{"tags":["Entity"],"summary":"Get shortest graph path","parameters":[{"name":"sourceId","in":"query","schema":{"type":"string"},"description":"Optional source entity identifier; defaults to the caller's user entity."},{"name":"targetId","in":"query","schema":{"type":"string"},"description":"Target entity identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns the all-shortest-paths between the caller's user entity (or a supplied `sourceId`) and the target entity. The Cypher query walks up to 5 hops and excludes temporal, code, and other technical relationships. Returns an empty list when neither endpoint can be found. Cached for 400 seconds."}},"/api/v1/entity/path":{"get":{"tags":["Entity"],"summary":"Get shortest graph path","parameters":[{"name":"sourceId","in":"query","schema":{"type":"string"},"description":"Optional source entity identifier; defaults to the caller's user entity."},{"name":"targetId","in":"query","schema":{"type":"string"},"description":"Target entity identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns the all-shortest-paths between the caller's user entity (or a supplied `sourceId`) and the target entity. The Cypher query walks up to 5 hops and excludes temporal, code, and other technical relationships. Returns an empty list when neither endpoint can be found. Cached for 400 seconds."}},"/api/entity/peoplepath":{"get":{"tags":["Entity"],"summary":"Get shortest people path","parameters":[{"name":"targetId","in":"query","schema":{"type":"string"},"description":"Target entity identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns the shortest graph paths from the caller's user entity to the target entity that go through Person/User/Contact/Organization nodes. Excludes temporal, code, follow, and similar technical relationships. Useful for \"who knows whom\" surfaces. Cached for 400 seconds."}},"/api/v1/entity/peoplepath":{"get":{"tags":["Entity"],"summary":"Get shortest people path","parameters":[{"name":"targetId","in":"query","schema":{"type":"string"},"description":"Target entity identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns the shortest graph paths from the caller's user entity to the target entity that go through Person/User/Contact/Organization nodes. Excludes temporal, code, follow, and similar technical relationships. Useful for \"who knows whom\" surfaces. Cached for 400 seconds."}},"/api/entity/entitypropertyfilterdetails":{"get":{"tags":["Entity"],"summary":"List entity property filter names","parameters":[{"name":"scope","in":"query","schema":{"$ref":"#/components/schemas/CluedIn.Core.PropertySelection.PropertyScope"},"description":"Property scope. Defaults to `All`."}],"responses":{"200":{"description":"OK"}},"description":"Returns the property names available for an entity-property filter, scoped by the supplied `PropertyScope` (defaults to `All`). Used by the UI to render property pickers for filters."}},"/api/v1/entity/entitypropertyfilterdetails":{"get":{"tags":["Entity"],"summary":"List entity property filter names","parameters":[{"name":"scope","in":"query","schema":{"$ref":"#/components/schemas/CluedIn.Core.PropertySelection.PropertyScope"},"description":"Property scope. Defaults to `All`."}],"responses":{"200":{"description":"OK"}},"description":"Returns the property names available for an entity-property filter, scoped by the supplied `PropertyScope` (defaults to `All`). Used by the UI to render property pickers for filters."}},"/api/entityDataDeletion/deleteByProviderDefinitionId":{"post":{"tags":["EntityDataDeletion"],"summary":"Delete entity data by provider definition","parameters":[{"name":"providerDefinitionId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Provider definition identifier."},{"name":"considerManualUserInputInsignificant","in":"query","schema":{"type":"boolean"},"description":"When true, manual user input on affected entities is treated as insignificant and does not block deletion."}],"responses":{"200":{"description":"OK"}},"description":"Starts a distributed job that deletes all entity data ingested through the given provider definition. Returns the job id on success and 400 if the provider definition id is empty or the criteria is invalid. The action is recorded in the audit log. Requires the Administration.Data RACI claim."}},"/api/v1/entityDataDeletion/deleteByProviderDefinitionId":{"post":{"tags":["EntityDataDeletion"],"summary":"Delete entity data by provider definition","parameters":[{"name":"providerDefinitionId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Provider definition identifier."},{"name":"considerManualUserInputInsignificant","in":"query","schema":{"type":"boolean"},"description":"When true, manual user input on affected entities is treated as insignificant and does not block deletion."}],"responses":{"200":{"description":"OK"}},"description":"Starts a distributed job that deletes all entity data ingested through the given provider definition. Returns the job id on success and 400 if the provider definition id is empty or the criteria is invalid. The action is recorded in the audit log. Requires the Administration.Data RACI claim."}},"/api/entityDataDeletion/deleteByIngestionSourceId":{"post":{"tags":["EntityDataDeletion"],"summary":"Delete entity data by ingestion source","parameters":[{"name":"providerDefinitionId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Provider definition identifier."},{"name":"ingestionSourceId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Ingestion source identifier."},{"name":"considerManualUserInputInsignificant","in":"query","schema":{"type":"boolean"},"description":"When true, manual user input on affected entities is treated as insignificant and does not block deletion."}],"responses":{"200":{"description":"OK"}},"description":"Starts a distributed job that deletes entity data ingested through a specific ingestion source on a provider definition. Returns the job id on success and 400 if either id is empty or the criteria is invalid. Audit-logged. Requires the Administration.Data RACI claim."}},"/api/v1/entityDataDeletion/deleteByIngestionSourceId":{"post":{"tags":["EntityDataDeletion"],"summary":"Delete entity data by ingestion source","parameters":[{"name":"providerDefinitionId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Provider definition identifier."},{"name":"ingestionSourceId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Ingestion source identifier."},{"name":"considerManualUserInputInsignificant","in":"query","schema":{"type":"boolean"},"description":"When true, manual user input on affected entities is treated as insignificant and does not block deletion."}],"responses":{"200":{"description":"OK"}},"description":"Starts a distributed job that deletes entity data ingested through a specific ingestion source on a provider definition. Returns the job id on success and 400 if either id is empty or the criteria is invalid. Audit-logged. Requires the Administration.Data RACI claim."}},"/api/entityDataDeletion/deleteByIngestionCorrelationId":{"post":{"tags":["EntityDataDeletion"],"summary":"Delete entity data by ingestion correlation id","parameters":[{"name":"providerDefinitionId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Provider definition identifier."},{"name":"ingestionCorrelationId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Ingestion correlation identifier."},{"name":"ingestionSourceId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Optional ingestion source identifier."},{"name":"considerManualUserInputInsignificant","in":"query","schema":{"type":"boolean"},"description":"When true, manual user input on affected entities is treated as insignificant and does not block deletion."}],"responses":{"200":{"description":"OK"}},"description":"Starts a distributed job that deletes entity data ingested with a specific correlation id (typically a single ingestion run) on a provider definition, optionally narrowed by ingestion source. Returns 400 when required ids are empty. Audit-logged. Requires the Administration.Data RACI claim."}},"/api/v1/entityDataDeletion/deleteByIngestionCorrelationId":{"post":{"tags":["EntityDataDeletion"],"summary":"Delete entity data by ingestion correlation id","parameters":[{"name":"providerDefinitionId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Provider definition identifier."},{"name":"ingestionCorrelationId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Ingestion correlation identifier."},{"name":"ingestionSourceId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Optional ingestion source identifier."},{"name":"considerManualUserInputInsignificant","in":"query","schema":{"type":"boolean"},"description":"When true, manual user input on affected entities is treated as insignificant and does not block deletion."}],"responses":{"200":{"description":"OK"}},"description":"Starts a distributed job that deletes entity data ingested with a specific correlation id (typically a single ingestion run) on a provider definition, optionally narrowed by ingestion source. Returns 400 when required ids are empty. Audit-logged. Requires the Administration.Data RACI claim."}},"/api/entityDataDeletion/cancelDeletionByProviderDefinitionId":{"post":{"tags":["EntityDataDeletion"],"summary":"Cancel ongoing deletion (provider definition)","parameters":[{"name":"providerDefinitionId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Provider definition identifier."}],"responses":{"200":{"description":"OK"}},"description":"Attempts to cancel an in-progress data deletion job for the given provider definition. Returns `{ Sucessful: true|false }` depending on whether a running job was found and cancellation was issued. Requires the Administration.Data RACI claim."}},"/api/v1/entityDataDeletion/cancelDeletionByProviderDefinitionId":{"post":{"tags":["EntityDataDeletion"],"summary":"Cancel ongoing deletion (provider definition)","parameters":[{"name":"providerDefinitionId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Provider definition identifier."}],"responses":{"200":{"description":"OK"}},"description":"Attempts to cancel an in-progress data deletion job for the given provider definition. Returns `{ Sucessful: true|false }` depending on whether a running job was found and cancellation was issued. Requires the Administration.Data RACI claim."}},"/api/entityDataDeletion/cancelDeletionByIngestionSourceId":{"post":{"tags":["EntityDataDeletion"],"summary":"Cancel ongoing deletion (ingestion source)","parameters":[{"name":"providerDefinitionId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Provider definition identifier."},{"name":"ingestionSourceId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Ingestion source identifier."}],"responses":{"200":{"description":"OK"}},"description":"Attempts to cancel an in-progress data deletion job for the given ingestion source on a provider definition. Returns `{ Sucessful: true|false }`. Requires the Administration.Data RACI claim."}},"/api/v1/entityDataDeletion/cancelDeletionByIngestionSourceId":{"post":{"tags":["EntityDataDeletion"],"summary":"Cancel ongoing deletion (ingestion source)","parameters":[{"name":"providerDefinitionId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Provider definition identifier."},{"name":"ingestionSourceId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Ingestion source identifier."}],"responses":{"200":{"description":"OK"}},"description":"Attempts to cancel an in-progress data deletion job for the given ingestion source on a provider definition. Returns `{ Sucessful: true|false }`. Requires the Administration.Data RACI claim."}},"/api/entityDataDeletion/cancelDeletionByIngestionCorrelationId":{"post":{"tags":["EntityDataDeletion"],"summary":"Cancel ongoing deletion (ingestion correlation)","parameters":[{"name":"providerDefinitionId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Provider definition identifier."},{"name":"ingestionCorrelationId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Ingestion correlation identifier."},{"name":"ingestionSourceId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Optional ingestion source identifier."}],"responses":{"200":{"description":"OK"}},"description":"Attempts to cancel an in-progress data deletion job for the given ingestion correlation id, optionally narrowed by ingestion source. Returns `{ Sucessful: true|false }`. Requires the Administration.Data RACI claim."}},"/api/v1/entityDataDeletion/cancelDeletionByIngestionCorrelationId":{"post":{"tags":["EntityDataDeletion"],"summary":"Cancel ongoing deletion (ingestion correlation)","parameters":[{"name":"providerDefinitionId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Provider definition identifier."},{"name":"ingestionCorrelationId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Ingestion correlation identifier."},{"name":"ingestionSourceId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Optional ingestion source identifier."}],"responses":{"200":{"description":"OK"}},"description":"Attempts to cancel an in-progress data deletion job for the given ingestion correlation id, optionally narrowed by ingestion source. Returns `{ Sucessful: true|false }`. Requires the Administration.Data RACI claim."}},"/api/entityDataDeletion/getDeleteByProviderDefinitionIdProgress":{"get":{"tags":["EntityDataDeletion"],"summary":"Get deletion progress (provider definition)","parameters":[{"name":"providerDefinitionId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Provider definition identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns the current progress and status of the deletion job for the given provider definition."}},"/api/v1/entityDataDeletion/getDeleteByProviderDefinitionIdProgress":{"get":{"tags":["EntityDataDeletion"],"summary":"Get deletion progress (provider definition)","parameters":[{"name":"providerDefinitionId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Provider definition identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns the current progress and status of the deletion job for the given provider definition."}},"/api/entityDataDeletion/getDeleteByIngestionSourceIdProgress":{"get":{"tags":["EntityDataDeletion"],"summary":"Get deletion progress (ingestion source)","parameters":[{"name":"providerDefinitionId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Provider definition identifier."},{"name":"ingestionSourceId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Ingestion source identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns the current progress and status of the deletion job for the given ingestion source on a provider definition."}},"/api/v1/entityDataDeletion/getDeleteByIngestionSourceIdProgress":{"get":{"tags":["EntityDataDeletion"],"summary":"Get deletion progress (ingestion source)","parameters":[{"name":"providerDefinitionId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Provider definition identifier."},{"name":"ingestionSourceId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Ingestion source identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns the current progress and status of the deletion job for the given ingestion source on a provider definition."}},"/api/entityDataDeletion/getDeleteByIngestionCorrelationIdProgress":{"get":{"tags":["EntityDataDeletion"],"summary":"Get deletion progress (ingestion correlation)","parameters":[{"name":"providerDefinitionId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Provider definition identifier."},{"name":"ingestionCorrelationId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Ingestion correlation identifier."},{"name":"ingestionSourceId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Optional ingestion source identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns the current progress and status of the deletion job for the given ingestion correlation id, optionally narrowed by ingestion source."}},"/api/v1/entityDataDeletion/getDeleteByIngestionCorrelationIdProgress":{"get":{"tags":["EntityDataDeletion"],"summary":"Get deletion progress (ingestion correlation)","parameters":[{"name":"providerDefinitionId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Provider definition identifier."},{"name":"ingestionCorrelationId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Ingestion correlation identifier."},{"name":"ingestionSourceId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Optional ingestion source identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns the current progress and status of the deletion job for the given ingestion correlation id, optionally narrowed by ingestion source."}},"/api/entityDataDeletion/getDeleteByProviderDefinitionIdProgressBatch":{"get":{"tags":["EntityDataDeletion"],"summary":"Get deletion progress for multiple providers","parameters":[{"name":"providerDefinitionIds","in":"query","schema":{"type":"array","items":{"type":"string","format":"uuid"}},"description":"List of provider definition identifiers."}],"responses":{"200":{"description":"OK"}},"description":"Returns the current progress and status of deletion jobs for many provider definitions in one call, keyed by provider definition id. Returns 400 if the supplied criteria is invalid."}},"/api/v1/entityDataDeletion/getDeleteByProviderDefinitionIdProgressBatch":{"get":{"tags":["EntityDataDeletion"],"summary":"Get deletion progress for multiple providers","parameters":[{"name":"providerDefinitionIds","in":"query","schema":{"type":"array","items":{"type":"string","format":"uuid"}},"description":"List of provider definition identifiers."}],"responses":{"200":{"description":"OK"}},"description":"Returns the current progress and status of deletion jobs for many provider definitions in one call, keyed by provider definition id. Returns 400 if the supplied criteria is invalid."}},"/api/entityDataDeletion/deleteEntityById":{"delete":{"tags":["EntityDataDeletion"],"summary":"Delete a single entity","parameters":[{"name":"entityId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Entity identifier."}],"responses":{"200":{"description":"OK"}},"description":"Deletes a single entity by id by dispatching a delete-by-user-action command. Caller must be an administrator, hold Administration.Data RACI at Consultant level or above, or hold Integrations.ManualDataEntryInput at Consultant level or above. Returns 403 when the caller lacks the required claims, 404 when the entity does not exist, and 400 when the entity cannot be deleted (organisation root entity, the caller themselves, an organisation user entity, or partial access). Returns 202 Accepted when the delete command has been queued."}},"/api/v1/entityDataDeletion/deleteEntityById":{"delete":{"tags":["EntityDataDeletion"],"summary":"Delete a single entity","parameters":[{"name":"entityId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Entity identifier."}],"responses":{"200":{"description":"OK"}},"description":"Deletes a single entity by id by dispatching a delete-by-user-action command. Caller must be an administrator, hold Administration.Data RACI at Consultant level or above, or hold Integrations.ManualDataEntryInput at Consultant level or above. Returns 403 when the caller lacks the required claims, 404 when the entity does not exist, and 400 when the entity cannot be deleted (organisation root entity, the caller themselves, an organisation user entity, or partial access). Returns 202 Accepted when the delete command has been queued."}},"/api/entityDataDeletion/deleteEntitiesByIds":{"delete":{"tags":["EntityDataDeletion"],"summary":"Delete entities in bulk","requestBody":{"content":{"application/json-patch+json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"}}},"application/json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"}}},"text/json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"}}},"application/*+json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"}}}}},"responses":{"200":{"description":"OK"}},"description":"Deletes a list of entities, dispatching one delete command per entity. Same claim requirements and per-entity safety checks as the single-entity variant (cannot delete the organisation root, the caller themselves, or organisation user entities). Returns 403 / 404 / 400 with details if any item fails validation; on success returns 202 Accepted after all commands have been queued."}},"/api/v1/entityDataDeletion/deleteEntitiesByIds":{"delete":{"tags":["EntityDataDeletion"],"summary":"Delete entities in bulk","requestBody":{"content":{"application/json-patch+json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"}}},"application/json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"}}},"text/json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"}}},"application/*+json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"}}}}},"responses":{"200":{"description":"OK"}},"description":"Deletes a list of entities, dispatching one delete command per entity. Same claim requirements and per-entity safety checks as the single-entity variant (cannot delete the organisation root, the caller themselves, or organisation user entities). Returns 403 / 404 / 400 with details if any item fails validation; on success returns 202 Accepted after all commands have been queued."}},"/api/entityDataDeletion/DeleteDataPartsJobComplete":{"get":{"tags":["EntityDataDeletion"],"summary":"Check whether a data-part deletion job is complete","parameters":[{"name":"jobId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Distributed job identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns true when the supplied distributed job is not in progress or stopping (i.e. it has finished, failed, or been cancelled). Returns 404 if the job id cannot be resolved."}},"/api/v1/entityDataDeletion/DeleteDataPartsJobComplete":{"get":{"tags":["EntityDataDeletion"],"summary":"Check whether a data-part deletion job is complete","parameters":[{"name":"jobId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Distributed job identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns true when the supplied distributed job is not in progress or stopping (i.e. it has finished, failed, or been cancelled). Returns 404 if the job id cannot be resolved."}},"/api/entityDataDeletion/canDeleteEntity":{"get":{"tags":["EntityDataDeletion"],"summary":"Check whether an entity can be deleted","parameters":[{"name":"entityId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Entity identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns whether the caller can delete the supplied entity along with the reason if they cannot. Reasons include the entity being the organisation root, the caller themselves, an organisation user record, missing RACI claims, or insufficient access-control coverage. Returns 404 if the entity does not exist."}},"/api/v1/entityDataDeletion/canDeleteEntity":{"get":{"tags":["EntityDataDeletion"],"summary":"Check whether an entity can be deleted","parameters":[{"name":"entityId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Entity identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns whether the caller can delete the supplied entity along with the reason if they cannot. Reasons include the entity being the organisation root, the caller themselves, an organisation user record, missing RACI claims, or insufficient access-control coverage. Returns 404 if the entity does not exist."}},"/api/entityDataDeletion/canDeleteEntities":{"post":{"tags":["EntityDataDeletion"],"summary":"Check whether entities can be deleted","requestBody":{"content":{"application/json-patch+json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"}}},"application/json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"}}},"text/json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"}}},"application/*+json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"}}}}},"responses":{"200":{"description":"OK"}},"description":"Returns the per-entity can-delete decision for a list of entity ids. Each entry follows the same rules as the single-entity check. Returns 404 with the offending id if any entity does not exist."}},"/api/v1/entityDataDeletion/canDeleteEntities":{"post":{"tags":["EntityDataDeletion"],"summary":"Check whether entities can be deleted","requestBody":{"content":{"application/json-patch+json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"}}},"application/json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"}}},"text/json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"}}},"application/*+json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"}}}}},"responses":{"200":{"description":"OK"}},"description":"Returns the per-entity can-delete decision for a list of entity ids. Each entry follows the same rules as the single-entity check. Returns 404 with the offending id if any entity does not exist."}},"/api/entityDataDeletion/DeleteDataPart":{"delete":{"tags":["EntityDataDeletion"],"summary":"Delete a single entity data part","parameters":[{"name":"entityId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Entity identifier."},{"name":"dataPartId","in":"query","schema":{"type":"integer","format":"int64"},"description":"Data part identifier."}],"responses":{"200":{"description":"OK"}},"description":"Deletes one data part from an entity. Returns 404 if the entity or the data part cannot be found, and 400 if the data part cannot be deleted (for example because it is the entity's only contributing data). Returns 202 Accepted with a job handle when the action has been queued. Requires the Administration.Data RACI claim."}},"/api/v1/entityDataDeletion/DeleteDataPart":{"delete":{"tags":["EntityDataDeletion"],"summary":"Delete a single entity data part","parameters":[{"name":"entityId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Entity identifier."},{"name":"dataPartId","in":"query","schema":{"type":"integer","format":"int64"},"description":"Data part identifier."}],"responses":{"200":{"description":"OK"}},"description":"Deletes one data part from an entity. Returns 404 if the entity or the data part cannot be found, and 400 if the data part cannot be deleted (for example because it is the entity's only contributing data). Returns 202 Accepted with a job handle when the action has been queued. Requires the Administration.Data RACI claim."}},"/api/entityDataDeletion/DeleteDataParts":{"delete":{"tags":["EntityDataDeletion"],"summary":"Delete entity data parts (bulk)","parameters":[{"name":"entityId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Entity identifier."}],"requestBody":{"content":{"application/json-patch+json":{"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},"text/json":{"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},"application/*+json":{"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}}},"responses":{"200":{"description":"OK"}},"description":"Deletes multiple data parts on a single entity in one call. Returns 404 if the entity or any data part cannot be found and 400 listing the ids of data parts that cannot be deleted. Returns 202 Accepted with a job handle on success. Requires the Administration.Data RACI claim."}},"/api/v1/entityDataDeletion/DeleteDataParts":{"delete":{"tags":["EntityDataDeletion"],"summary":"Delete entity data parts (bulk)","parameters":[{"name":"entityId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Entity identifier."}],"requestBody":{"content":{"application/json-patch+json":{"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},"text/json":{"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},"application/*+json":{"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}}},"responses":{"200":{"description":"OK"}},"description":"Deletes multiple data parts on a single entity in one call. Returns 404 if the entity or any data part cannot be found and 400 listing the ids of data parts that cannot be deleted. Returns 202 Accepted with a job handle on success. Requires the Administration.Data RACI claim."}},"/api/entityDataDeletion/CanDeleteDataPart":{"get":{"tags":["EntityDataDeletion"],"summary":"Check whether a data part can be deleted","parameters":[{"name":"entityId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Entity identifier."},{"name":"dataPartId","in":"query","schema":{"type":"integer","format":"int64"},"description":"Data part identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns whether a specific data part can be removed from an entity and the reason if it cannot. Returns 404 if the entity or data part does not exist. Requires the Administration.Data RACI claim."}},"/api/v1/entityDataDeletion/CanDeleteDataPart":{"get":{"tags":["EntityDataDeletion"],"summary":"Check whether a data part can be deleted","parameters":[{"name":"entityId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Entity identifier."},{"name":"dataPartId","in":"query","schema":{"type":"integer","format":"int64"},"description":"Data part identifier."}],"responses":{"200":{"description":"OK"}},"description":"Returns whether a specific data part can be removed from an entity and the reason if it cannot. Returns 404 if the entity or data part does not exist. Requires the Administration.Data RACI claim."}},"/api/entityDataDeletion/CanDeleteDataParts":{"post":{"tags":["EntityDataDeletion"],"summary":"Check whether data parts can be deleted (bulk)","parameters":[{"name":"entityId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Entity identifier."}],"requestBody":{"content":{"application/json-patch+json":{"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},"text/json":{"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},"application/*+json":{"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}}},"responses":{"200":{"description":"OK"}},"description":"Returns the per-data-part can-delete decision for a list of data part ids on an entity. If the body is empty, every data part on the entity is checked. Returns 404 if the entity or any data part cannot be found. Requires the Administration.Data RACI claim at View level or above."}},"/api/v1/entityDataDeletion/CanDeleteDataParts":{"post":{"tags":["EntityDataDeletion"],"summary":"Check whether data parts can be deleted (bulk)","parameters":[{"name":"entityId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Entity identifier."}],"requestBody":{"content":{"application/json-patch+json":{"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},"text/json":{"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},"application/*+json":{"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}}},"responses":{"200":{"description":"OK"}},"description":"Returns the per-data-part can-delete decision for a list of data part ids on an entity. If the body is empty, every data part on the entity is checked. Returns 404 if the entity or any data part cannot be found. Requires the Administration.Data RACI claim at View level or above."}},"/api/entityhistory/{id}":{"get":{"tags":["EntityHistory"],"summary":"Get entity history","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Entity identifier (GUID)."}],"responses":{"200":{"description":"OK"}},"description":"Returns the serialised change history for the entity with the supplied id. Returns 400 if the id is not a valid GUID, 404 if the entity does not exist, and 403 if the caller lacks access."}},"/api/entityhistory/list/{id}":{"get":{"tags":["EntityHistory"],"summary":"List entity history entries","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Entity identifier (GUID)."},{"name":"sourceName","in":"query","schema":{"type":"string"},"description":"Optional source name filter."},{"name":"origin","in":"query","schema":{"type":"string"},"description":"Optional origin filter."},{"name":"keys","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Optional list of vocabulary keys to include."},{"name":"includeDetail","in":"query","schema":{"type":"boolean"},"description":"When true, include the full per-entry detail."},{"name":"dateFrom","in":"query","schema":{"type":"string","format":"date-time"},"description":"Optional lower bound on change timestamps."},{"name":"dateTo","in":"query","schema":{"type":"string","format":"date-time"},"description":"Optional upper bound on change timestamps."},{"name":"sortedDateFilter","in":"query","schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.History.Models.SortedDateFilter"},"description":"Optional date sort direction."}],"responses":{"200":{"description":"OK"}},"description":"Returns the filtered list of entity history entries. Supports filtering by source, origin, vocabulary keys, and date range, and can include the full detail per entry."}},"/api/entityhistory/details/{id}/{partId}":{"get":{"tags":["EntityHistory"],"summary":"Get entity history details","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Entity identifier (GUID)."},{"name":"partId","in":"path","required":true,"schema":{"type":"integer","format":"int64"},"description":"Data part identifier."},{"name":"keys","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Optional list of vocabulary keys to include."}],"responses":{"200":{"description":"OK"}},"description":"Returns the full detail of a single change (data part) in the entity's history, optionally restricted to a list of vocabulary keys."}},"/api/entityhistory/{id}/changedkeys":{"get":{"tags":["EntityHistory"],"summary":"Get changed keys for entity history","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Entity identifier (GUID)."}],"responses":{"200":{"description":"OK"}},"description":"Returns the vocabulary keys that have changed across the entity's history. Useful as a quick summary before drilling into individual change details."}},"/{id}":{"get":{"tags":["EntityInfo"],"summary":" (Auth)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/entityinfo/minimal":{"get":{"tags":["EntityInfo"],"summary":"Get minimal entity type information","responses":{"200":{"description":"OK"}},"description":"Returns a compact view of the entity types available to the organisation, suitable for selectors and other UI controls that do not need the full entity type record."}},"/api/v1/entityinfo/minimal":{"get":{"tags":["EntityInfo"],"summary":"Get minimal entity type information","responses":{"200":{"description":"OK"}},"description":"Returns a compact view of the entity types available to the organisation, suitable for selectors and other UI controls that do not need the full entity type record."}},"/api/entityinfo":{"get":{"tags":["EntityInfo"],"summary":"List entity types","parameters":[{"name":"type","in":"query","schema":{"type":"string"},"description":"Exact entity type to filter by."},{"name":"searchName","in":"query","schema":{"type":"string"},"description":"Free-text search over display name."},{"name":"onlyFromData","in":"query","schema":{"type":"boolean","default":false},"description":"When true, return only entity types that have data. Defaults to false."}],"responses":{"200":{"description":"OK"}},"description":"Returns the active entity types in the organisation, merged with the entity types discovered in actual data. Supports filtering by exact type, free-text search over display name, and a flag to only return entity types that have data."},"put":{"tags":["EntityInfo"],"summary":"Update entity type","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Updates an existing entity type record (active flag, display name, icon, color, layout configuration, route, type, organisation id). If the supplied model id is `Guid.Empty`, the call is internally redirected to `POST /api/v1/entityinfo`. Returns 404 if the entity type does not exist."},"post":{"tags":["EntityInfo"],"summary":"Create entity type","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Creates a new entity type record with the supplied active flag, display name, icon, color, layout configuration, route, and type. The action goes through the RACI approval pipeline for entity-type creation and publishes a remote `AddEntityType` event."}},"/api/v1/entityinfo":{"get":{"tags":["EntityInfo"],"summary":"List entity types","parameters":[{"name":"type","in":"query","schema":{"type":"string"},"description":"Exact entity type to filter by."},{"name":"searchName","in":"query","schema":{"type":"string"},"description":"Free-text search over display name."},{"name":"onlyFromData","in":"query","schema":{"type":"boolean","default":false},"description":"When true, return only entity types that have data. Defaults to false."}],"responses":{"200":{"description":"OK"}},"description":"Returns the active entity types in the organisation, merged with the entity types discovered in actual data. Supports filtering by exact type, free-text search over display name, and a flag to only return entity types that have data."},"put":{"tags":["EntityInfo"],"summary":"Update entity type","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Updates an existing entity type record (active flag, display name, icon, color, layout configuration, route, type, organisation id). If the supplied model id is `Guid.Empty`, the call is internally redirected to `POST /api/v1/entityinfo`. Returns 404 if the entity type does not exist."},"post":{"tags":["EntityInfo"],"summary":"Create entity type","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Creates a new entity type record with the supplied active flag, display name, icon, color, layout configuration, route, and type. The action goes through the RACI approval pipeline for entity-type creation and publishes a remote `AddEntityType` event."}},"/api/entityinfo/paged":{"get":{"tags":["EntityInfo"],"summary":"List entity types (paged)","parameters":[{"name":"searchName","in":"query","schema":{"type":"string"},"description":"Free-text search over display name."},{"name":"take","in":"query","schema":{"type":"integer","format":"int32","default":10},"description":"Page size. Defaults to 10."},{"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 a paged list of entity types matching the search filter, in the legacy paged shape `{ data, total }`."}},"/api/v1/entityinfo/paged":{"get":{"tags":["EntityInfo"],"summary":"List entity types (paged)","parameters":[{"name":"searchName","in":"query","schema":{"type":"string"},"description":"Free-text search over display name."},{"name":"take","in":"query","schema":{"type":"integer","format":"int32","default":10},"description":"Page size. Defaults to 10."},{"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 a paged list of entity types matching the search filter, in the legacy paged shape `{ data, total }`."}},"/api/entityModification/ModifyMultipleOutgoingEntityEdgeByEntityIds":{"post":{"tags":["EntityModification"],"summary":"Modify entity edges in bulk","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.EdgesToModifyModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.EdgesToModifyModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.EdgesToModifyModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.EdgesToModifyModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Creates, modifies, and deletes outgoing entity edges from a single payload, dispatching the modifications as one background job. Returns 400 when all three edge collections (create, modify, delete) are empty. Requires the Administration.Data RACI claim. Returns the distributed job handle on success."}},"/api/v1/entityModification/ModifyMultipleOutgoingEntityEdgeByEntityIds":{"post":{"tags":["EntityModification"],"summary":"Modify entity edges in bulk","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.EdgesToModifyModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.EdgesToModifyModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.EdgesToModifyModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.EdgesToModifyModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Creates, modifies, and deletes outgoing entity edges from a single payload, dispatching the modifications as one background job. Returns 400 when all three edge collections (create, modify, delete) are empty. Requires the Administration.Data RACI claim. Returns the distributed job handle on success."}},"/api/entityModification/ModifyEntityEdgePreviewImage":{"post":{"tags":["EntityModification"],"summary":"Modify entity preview image","parameters":[{"name":"entityId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Entity identifier."}],"responses":{"200":{"description":"OK"}},"description":"Uploads a new preview image (binary body) for an entity. Returns 400 when the request body exceeds the configured upload limit (default in MB) or is not a valid image, 404 if the entity does not exist. If the change is intercepted by an approval workflow, returns 202 Accepted with the `X-CluedIn-SentForPowerAutomateApproval: true` header; otherwise returns 200 with the executing job handle. Requires the Administration.Data RACI claim."}},"/api/v1/entityModification/ModifyEntityEdgePreviewImage":{"post":{"tags":["EntityModification"],"summary":"Modify entity preview image","parameters":[{"name":"entityId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Entity identifier."}],"responses":{"200":{"description":"OK"}},"description":"Uploads a new preview image (binary body) for an entity. Returns 400 when the request body exceeds the configured upload limit (default in MB) or is not a valid image, 404 if the entity does not exist. If the change is intercepted by an approval workflow, returns 202 Accepted with the `X-CluedIn-SentForPowerAutomateApproval: true` header; otherwise returns 200 with the executing job handle. Requires the Administration.Data RACI claim."}},"/api/entityModification/ModifyEntityPropertiesByEntityId":{"post":{"tags":["EntityModification"],"summary":"Modify entity properties","parameters":[{"name":"entityId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Entity identifier."}],"requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.PropertiesToModifyModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.PropertiesToModifyModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.PropertiesToModifyModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.PropertiesToModifyModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Applies a property modification (set/clear properties, add/remove aliases, tags, external references, set name/description/displayName/type/URI) to a single entity. Returns 400 when the entity id is empty, the model fails to bind, or the URI is malformed; 403 when the caller lacks the metadata-level Administration.Data claim required for metadata fields (name, description, aliases, tags, etc.); 404 if the entity does not exist. When the modification is intercepted by the approval pipeline, returns 202 Accepted with `X-CluedIn-SentForPowerAutomateApproval: true`; otherwise returns 200 with the executing job handle."}},"/api/v1/entityModification/ModifyEntityPropertiesByEntityId":{"post":{"tags":["EntityModification"],"summary":"Modify entity properties","parameters":[{"name":"entityId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Entity identifier."}],"requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.PropertiesToModifyModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.PropertiesToModifyModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.PropertiesToModifyModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.PropertiesToModifyModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Applies a property modification (set/clear properties, add/remove aliases, tags, external references, set name/description/displayName/type/URI) to a single entity. Returns 400 when the entity id is empty, the model fails to bind, or the URI is malformed; 403 when the caller lacks the metadata-level Administration.Data claim required for metadata fields (name, description, aliases, tags, etc.); 404 if the entity does not exist. When the modification is intercepted by the approval pipeline, returns 202 Accepted with `X-CluedIn-SentForPowerAutomateApproval: true`; otherwise returns 200 with the executing job handle."}},"/api/entityModification/ModifyEntityPropertiesByEntityIds":{"post":{"tags":["EntityModification"],"summary":"Modify entity properties (bulk)","requestBody":{"content":{"application/json-patch+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.EntityPropertiesModificationModel"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.EntityPropertiesModificationModel"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.EntityPropertiesModificationModel"}}},"application/*+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.EntityPropertiesModificationModel"}}}}},"responses":{"200":{"description":"OK"}},"description":"Applies property modifications to many entities in a single request, dispatching one batch of commands. Same validation rules as the single-entity variant: 400 for invalid URIs, 403 when the caller lacks the metadata-level Administration.Data claim for metadata fields, 404 when any referenced entity is missing. When any command is intercepted by the approval pipeline, the whole batch returns 202 Accepted with `X-CluedIn-SentForPowerAutomateApproval: true`."}},"/api/v1/entityModification/ModifyEntityPropertiesByEntityIds":{"post":{"tags":["EntityModification"],"summary":"Modify entity properties (bulk)","requestBody":{"content":{"application/json-patch+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.EntityPropertiesModificationModel"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.EntityPropertiesModificationModel"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.EntityPropertiesModificationModel"}}},"application/*+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.EntityPropertiesModificationModel"}}}}},"responses":{"200":{"description":"OK"}},"description":"Applies property modifications to many entities in a single request, dispatching one batch of commands. Same validation rules as the single-entity variant: 400 for invalid URIs, 403 when the caller lacks the metadata-level Administration.Data claim for metadata fields, 404 when any referenced entity is missing. When any command is intercepted by the approval pipeline, the whole batch returns 202 Accepted with `X-CluedIn-SentForPowerAutomateApproval: true`."}},"/api/entityorigin/{id}":{"get":{"tags":["EntityOrigin"],"summary":"Get entity origins","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Entity identifier (GUID)."}],"responses":{"200":{"description":"OK"}},"description":"Returns the origins (the original source records) that contributed to the entity with the supplied id. Returns 400 if the id is not a valid GUID, 404 if the entity cannot be found, and 403 if the caller lacks access."}},"/api/entitysource/{id}":{"get":{"tags":["EntitySource"],"summary":"Get entity sources","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Entity identifier (GUID)."}],"responses":{"200":{"description":"OK"}},"description":"Returns the source providers that contributed data to the entity with the supplied id. Returns 400 if the id is not a valid GUID, 404 if the entity cannot be found, and 403 if the caller lacks access to the entity's providers."}},"/api/entitytopology/{id}":{"get":{"tags":["EntityTopology"],"summary":"Get entity topology graph","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Entity identifier."},{"name":"filterConnectingNodesWithOnlyOneConnection","in":"query","schema":{"type":"boolean","default":true},"description":"Drop intermediate connecting nodes that have only one connection. Defaults to true."},{"name":"resolveFuzzyMatchRelationships","in":"query","schema":{"type":"boolean","default":false},"description":"Include fuzzy-match relationships resolved by the topology service. Defaults to false."},{"name":"filterOutMissingDataPartNodes","in":"query","schema":{"type":"boolean","default":true},"description":"Hide graph nodes that correspond to missing data parts. Defaults to true."}],"responses":{"200":{"description":"OK"}},"description":"Returns the relationship-topology graph for an entity. Use the query flags to filter the graph — for example, dropping connecting nodes that have only one connection, resolving fuzzy-match relationships, or hiding nodes for missing data parts. Returns 404 if the entity cannot be found."}},"/api/entitytypeinfo":{"get":{"tags":["EntityTypeInfo"],"summary":"Get entity type info","parameters":[{"name":"type","in":"query","schema":{"type":"string"},"description":"Entity type (technical name)."},{"name":"searchName","in":"query","schema":{"type":"string"},"description":"Free-text search over display name."},{"name":"filterIsUsed","in":"query","schema":{"type":"boolean"},"description":"When set, restrict to entity types that are (or are not) in use."},{"name":"includePageTemplate","in":"query","schema":{"type":"boolean","default":false},"description":"When true, include the entity type's page template in the result. Defaults to false."},{"name":"includeShadowEntities","in":"query","schema":{"type":"boolean","default":false},"description":"When true, include shadow entity types. Defaults to false."}],"responses":{"200":{"description":"OK"}},"description":"Returns information for a single entity type, optionally filtered by free-text search, the type's usage state, whether to include the page template, and whether to include shadow entity types. Returns 404 if no matching entity type exists."},"put":{"tags":["EntityTypeInfo"],"summary":"Update entity type","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Updates an existing entity type from the supplied model. When the model id is `Guid.Empty` the call is internally redirected to `POST /api/entitytypeinfo` (Elasticsearch-sourced models may not always include a GUID; see internal notes in the controller). Returns 404 if the entity type cannot be found."},"post":{"tags":["EntityTypeInfo"],"summary":"Create entity type","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Creates a new entity type from the supplied model. Returns 409 Conflict when an entity type with the same technical name already exists. The action goes through the RACI approval pipeline for entity-type creation and publishes a remote `AddEntityType` event."}},"/api/entitytypeinfo/paged":{"get":{"tags":["EntityTypeInfo"],"summary":"List entity type info (paged)","parameters":[{"name":"searchName","in":"query","schema":{"type":"string"},"description":"Free-text search over display name."},{"name":"filterIsUsed","in":"query","schema":{"type":"boolean"},"description":"When set, restrict to entity types that are (or are not) in use."},{"name":"take","in":"query","schema":{"type":"integer","format":"int32","default":10},"description":"Page size. Defaults to 10."},{"name":"page","in":"query","schema":{"type":"integer","format":"int32","default":0},"description":"0-based page number. Defaults to 0."},{"name":"filterSource","in":"query","schema":{"type":"string"},"description":"Optional entity-type source filter."},{"name":"includePageTemplate","in":"query","schema":{"type":"boolean","default":false},"description":"When true, include the entity type's page template. Defaults to false."},{"name":"includeShadowEntities","in":"query","schema":{"type":"boolean","default":false},"description":"When true, include shadow entity types. Defaults to false."}],"responses":{"200":{"description":"OK"}},"description":"Returns a paged list of entity types matching the supplied search and source filters. Used by the UI selectors to browse available entity types."}},"/api/entitytypeinfo/exists":{"get":{"tags":["EntityTypeInfo"],"summary":"Check whether an entity type exists","parameters":[{"name":"entityType","in":"query","schema":{"type":"string"},"description":"Entity type technical name to check."}],"responses":{"200":{"description":"OK"}},"description":"Returns whether an entity type with the supplied technical name exists. Returns 400 when `entityType` is empty."}}},"components":{"schemas":{"CluedIn.Server.WebApi.Merge":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"propertyName":{"type":"string","nullable":true}},"additionalProperties":false},"CluedIn.Core.PropertySelection.PropertyScope":{"enum":[0,1,2,3],"type":"integer","format":"int32"},"CluedIn.Server.WebApi.Controllers.History.Models.SortedDateFilter":{"enum":[0,1,2,3],"type":"integer","format":"int32"},"CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.CreateOrUpdateEntityTypeInfoModel":{"required":["type"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"minLength":1,"type":"string"},"icon":{"type":"string","nullable":true},"displayName":{"type":"string","nullable":true},"route":{"type":"string","nullable":true},"active":{"type":"boolean"},"color":{"type":"string","nullable":true},"layoutConfiguration":{"type":"string","nullable":true},"pageTemplateId":{"type":"string","format":"uuid","nullable":true},"ownedByRoleId":{"type":"string","format":"uuid","nullable":true},"additionalProperties":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.EntityTypeAdditionalProperty"},"nullable":true}},"additionalProperties":false},"CluedIn.Server.WebApi.Controllers.EntityModification.Models.EdgesToModifyModel":{"type":"object","properties":{"edgeToDelete":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.EdgeToDeleteModel"},"nullable":true},"edgeToCreate":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.EdgeToCreateModel"},"nullable":true},"edgeToModify":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.EdgeToModifyModel"},"nullable":true}},"additionalProperties":false},"CluedIn.Server.WebApi.Controllers.EntityModification.Models.PropertiesToModifyModel":{"type":"object","properties":{"aliasesToRemove":{"type":"array","items":{"type":"string"},"nullable":true},"aliasesToAdd":{"type":"array","items":{"type":"string"},"nullable":true},"descriptionToSet":{"type":"string","nullable":true},"displayNameToSet":{"type":"string","nullable":true},"nameToSet":{"type":"string","nullable":true},"entityTypeToSet":{"type":"string","nullable":true},"uriToSet":{"type":"string","nullable":true},"tagsToRemove":{"type":"array","items":{"type":"string"},"nullable":true},"tagsToAdd":{"type":"array","items":{"type":"string"},"nullable":true},"externalReferencesToRemove":{"type":"array","items":{"type":"string"},"nullable":true},"externalReferencesToAdd":{"type":"array","items":{"type":"string"},"nullable":true},"propertyKeysToRemove":{"type":"array","items":{"type":"string"},"nullable":true},"propertiesToAddOrUpdate":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.PropertyToAddOrUpdate"},"nullable":true}},"additionalProperties":false},"CluedIn.Server.WebApi.Controllers.EntityModification.Models.EntityPropertiesModificationModel":{"type":"object","properties":{"entityId":{"type":"string","format":"uuid"},"modifications":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.PropertiesToModifyModel"}},"additionalProperties":false},"CluedIn.Server.WebApi.Controllers.EntityTypeInfo.Models.EntityTypeAdditionalProperty":{"type":"object","properties":{"type":{"type":"string","nullable":true},"regex":{"type":"string","nullable":true},"value":{"type":"string","nullable":true}},"additionalProperties":false},"CluedIn.Server.WebApi.Controllers.EntityModification.Models.EdgeToDeleteModel":{"type":"object","properties":{"fromEntityId":{"type":"string","format":"uuid"},"toEntityId":{"type":"string","format":"uuid"},"edgeType":{"type":"string","nullable":true},"propertiesHash":{"type":"string","nullable":true}},"additionalProperties":false},"CluedIn.Server.WebApi.Controllers.EntityModification.Models.EdgeToCreateModel":{"type":"object","properties":{"fromEntityId":{"type":"string","format":"uuid"},"toEntityId":{"type":"string","format":"uuid"},"edgeType":{"type":"string","nullable":true},"propertiesToAddOrUpdate":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.PropertyToAddOrUpdate"},"nullable":true}},"additionalProperties":false},"CluedIn.Server.WebApi.Controllers.EntityModification.Models.EdgeToModifyModel":{"type":"object","properties":{"fromEntityId":{"type":"string","format":"uuid"},"toEntityId":{"type":"string","format":"uuid"},"edgeType":{"type":"string","nullable":true},"propertiesHash":{"type":"string","nullable":true},"newEdgeType":{"type":"string","nullable":true},"newToEntityId":{"type":"string","format":"uuid","nullable":true},"propertyKeysToRemove":{"type":"array","items":{"type":"string"},"nullable":true},"propertiesToAddOrUpdate":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Server.WebApi.Controllers.EntityModification.Models.PropertyToAddOrUpdate"},"nullable":true}},"additionalProperties":false},"CluedIn.Server.WebApi.Controllers.EntityModification.Models.PropertyToAddOrUpdate":{"type":"object","properties":{"key":{"type":"string","nullable":true},"value":{"type":"string","nullable":true}},"additionalProperties":false}},"securitySchemes":{"Bearer":{"type":"http","description":"Please enter a valid token","scheme":"Bearer"}}}}