{"openapi":"3.0.4","info":{"title":"CluedIn REST API — Access control & governance","description":"Access control policies, audit logs, entity ownership, and tag metadata.","version":"v1"},"tags":[{"name":"AccessControlPolicies"},{"name":"AuditLog"},{"name":"Ownership"},{"name":"TagMetadata"}],"paths":{"/api/accesscontrolpolicies":{"get":{"tags":["AccessControlPolicies"],"summary":"List access control policies","parameters":[{"name":"page","in":"query","schema":{"type":"integer","format":"int32","default":0},"description":"0-based page number. Defaults to 0."},{"name":"take","in":"query","schema":{"type":"integer","format":"int32","default":20},"description":"Page size. Defaults to 20."},{"name":"filterActive","in":"query","schema":{"type":"boolean"},"description":"When set, restrict to active or inactive policies."},{"name":"filterCreator","in":"query","schema":{"type":"string"},"description":"Filter by policy creator (user identifier or display name)."},{"name":"searchName","in":"query","schema":{"type":"string"},"description":"Free-text search over policy name."},{"name":"orderBy","in":"query","schema":{"type":"string"},"description":"Field to order by."},{"name":"orderAsc","in":"query","schema":{"type":"boolean","default":true},"description":"Sort direction. Defaults to true (ascending)."}],"responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}}}}}},"description":"Returns a paged list of access control policies in the organisation along with the total count. Filter by active state, creator, and free-text name; sort by any supported field."},"post":{"tags":["AccessControlPolicies"],"summary":"Create access control policy","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}}}},"responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"type":"string","format":"uuid"}},"application/json":{"schema":{"type":"string","format":"uuid"}},"text/json":{"schema":{"type":"string","format":"uuid"}}}}},"description":"Creates a new access control policy from the supplied model. Returns 400 with validation details when the model is invalid, the policy contains rule actions that are not registered on the server, or the filter rules fail validation. The model id is ignored — the server assigns a fresh identifier and returns it."}},"/api/v1/accesscontrolpolicies":{"get":{"tags":["AccessControlPolicies"],"summary":"List access control policies","parameters":[{"name":"page","in":"query","schema":{"type":"integer","format":"int32","default":0},"description":"0-based page number. Defaults to 0."},{"name":"take","in":"query","schema":{"type":"integer","format":"int32","default":20},"description":"Page size. Defaults to 20."},{"name":"filterActive","in":"query","schema":{"type":"boolean"},"description":"When set, restrict to active or inactive policies."},{"name":"filterCreator","in":"query","schema":{"type":"string"},"description":"Filter by policy creator (user identifier or display name)."},{"name":"searchName","in":"query","schema":{"type":"string"},"description":"Free-text search over policy name."},{"name":"orderBy","in":"query","schema":{"type":"string"},"description":"Field to order by."},{"name":"orderAsc","in":"query","schema":{"type":"boolean","default":true},"description":"Sort direction. Defaults to true (ascending)."}],"responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}}}}}},"description":"Returns a paged list of access control policies in the organisation along with the total count. Filter by active state, creator, and free-text name; sort by any supported field."},"post":{"tags":["AccessControlPolicies"],"summary":"Create access control policy","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}}}},"responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"type":"string","format":"uuid"}},"application/json":{"schema":{"type":"string","format":"uuid"}},"text/json":{"schema":{"type":"string","format":"uuid"}}}}},"description":"Creates a new access control policy from the supplied model. Returns 400 with validation details when the model is invalid, the policy contains rule actions that are not registered on the server, or the filter rules fail validation. The model id is ignored — the server assigns a fresh identifier and returns it."}},"/api/accesscontrolpolicies/byprocessingorder":{"get":{"tags":["AccessControlPolicies"],"summary":"Get policies in processing order","responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyOrderingModel"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyOrderingModel"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyOrderingModel"}}}}}},"description":"Returns the access control policies arranged in the order they will be evaluated against incoming requests."}},"/api/v1/accesscontrolpolicies/byprocessingorder":{"get":{"tags":["AccessControlPolicies"],"summary":"Get policies in processing order","responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyOrderingModel"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyOrderingModel"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyOrderingModel"}}}}}},"description":"Returns the access control policies arranged in the order they will be evaluated against incoming requests."}},"/api/accesscontrolpolicies/setprocessingorder":{"post":{"tags":["AccessControlPolicies"],"summary":"Set policy processing order","requestBody":{"content":{"application/json-patch+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyOrderingModel"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyOrderingModel"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyOrderingModel"}}},"application/*+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyOrderingModel"}}}}},"responses":{"200":{"description":"OK"}},"description":"Sets the processing order of access control policies from the supplied list. Send the policies in the order they should be evaluated."}},"/api/v1/accesscontrolpolicies/setprocessingorder":{"post":{"tags":["AccessControlPolicies"],"summary":"Set policy processing order","requestBody":{"content":{"application/json-patch+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyOrderingModel"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyOrderingModel"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyOrderingModel"}}},"application/*+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyOrderingModel"}}}}},"responses":{"200":{"description":"OK"}},"description":"Sets the processing order of access control policies from the supplied list. Send the policies in the order they should be evaluated."}},"/api/accesscontrolpolicies/{id}/activate":{"post":{"tags":["AccessControlPolicies"],"summary":"Activate access control policy","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Access control policy identifier."}],"responses":{"200":{"description":"OK"}},"description":"Marks a policy as active so it is included when access control is evaluated on requests. The action goes through the RACI approval pipeline for policy activation."}},"/api/v1/accesscontrolpolicies/{id}/activate":{"post":{"tags":["AccessControlPolicies"],"summary":"Activate access control policy","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Access control policy identifier."}],"responses":{"200":{"description":"OK"}},"description":"Marks a policy as active so it is included when access control is evaluated on requests. The action goes through the RACI approval pipeline for policy activation."}},"/api/accesscontrolpolicies/{id}/deactivate":{"post":{"tags":["AccessControlPolicies"],"summary":"Deactivate access control policy","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Access control policy identifier."}],"responses":{"200":{"description":"OK"}},"description":"Marks a policy as inactive so it is no longer evaluated, without deleting it. The action goes through the RACI approval pipeline for policy deactivation."}},"/api/v1/accesscontrolpolicies/{id}/deactivate":{"post":{"tags":["AccessControlPolicies"],"summary":"Deactivate access control policy","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Access control policy identifier."}],"responses":{"200":{"description":"OK"}},"description":"Marks a policy as inactive so it is no longer evaluated, without deleting it. The action goes through the RACI approval pipeline for policy deactivation."}},"/api/accesscontrolpolicies/{id}":{"get":{"tags":["AccessControlPolicies"],"summary":"Get access control policy","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Access control policy identifier."}],"responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}}}}},"description":"Returns a single access control policy by id, with the action controls appended so the UI can render the correct input controls for each rule. Returns 404 if the policy cannot be found."},"put":{"tags":["AccessControlPolicies"],"summary":"Update access control policy","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Access control policy identifier."}],"requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Updates an existing access control policy from the supplied model. The path id overrides any id in the body. Returns 400 with validation details when the model fails validation or contains unsupported rule actions. The action goes through the RACI approval pipeline for access control policy updates."},"delete":{"tags":["AccessControlPolicies"],"summary":"Delete access control policy","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Access control policy identifier."}],"responses":{"200":{"description":"OK"}},"description":"Deletes an access control policy. The action goes through the RACI approval pipeline for access control policy deletion."}},"/api/v1/accesscontrolpolicies/{id}":{"get":{"tags":["AccessControlPolicies"],"summary":"Get access control policy","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Access control policy identifier."}],"responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}}}}},"description":"Returns a single access control policy by id, with the action controls appended so the UI can render the correct input controls for each rule. Returns 404 if the policy cannot be found."},"put":{"tags":["AccessControlPolicies"],"summary":"Update access control policy","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Access control policy identifier."}],"requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Updates an existing access control policy from the supplied model. The path id overrides any id in the body. Returns 400 with validation details when the model fails validation or contains unsupported rule actions. The action goes through the RACI approval pipeline for access control policy updates."},"delete":{"tags":["AccessControlPolicies"],"summary":"Delete access control policy","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Access control policy identifier."}],"responses":{"200":{"description":"OK"}},"description":"Deletes an access control policy. The action goes through the RACI approval pipeline for access control policy deletion."}},"/api/accesscontrolpolicies/actions":{"get":{"tags":["AccessControlPolicies"],"summary":"List policy rule actions","responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.Rules.Models.RuleActionModel"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.Rules.Models.RuleActionModel"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.Rules.Models.RuleActionModel"}}}}}},"description":"Returns every access control policy rule action registered on the server, along with the configurable properties each action exposes. Used by the UI to populate the action picker when building or editing policies."}},"/api/v1/accesscontrolpolicies/actions":{"get":{"tags":["AccessControlPolicies"],"summary":"List policy rule actions","responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.Rules.Models.RuleActionModel"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.Rules.Models.RuleActionModel"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.Rules.Models.RuleActionModel"}}}}}},"description":"Returns every access control policy rule action registered on the server, along with the configurable properties each action exposes. Used by the UI to populate the action picker when building or editing policies."}},"/api/auditLog/{objectId}/{objectTypeId}":{"get":{"tags":["AuditLog"],"summary":"Get audit log for an object","parameters":[{"name":"objectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Identifier of the audited object."},{"name":"objectTypeId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Identifier of the object type."},{"name":"page","in":"query","schema":{"type":"integer","format":"int32","default":0},"description":"0-based page number. Defaults to 0."},{"name":"take","in":"query","schema":{"type":"integer","format":"int32","default":20},"description":"Page size. Defaults to 20."}],"responses":{"200":{"description":"OK"}},"description":"Returns the paged audit log entries recorded for a single object. Internally delegates to the bulk endpoint with a single-item array for both ids."}},"/api/v1/auditLog/{objectId}/{objectTypeId}":{"get":{"tags":["AuditLog"],"summary":"Get audit log for an object","parameters":[{"name":"objectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Identifier of the audited object."},{"name":"objectTypeId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Identifier of the object type."},{"name":"page","in":"query","schema":{"type":"integer","format":"int32","default":0},"description":"0-based page number. Defaults to 0."},{"name":"take","in":"query","schema":{"type":"integer","format":"int32","default":20},"description":"Page size. Defaults to 20."}],"responses":{"200":{"description":"OK"}},"description":"Returns the paged audit log entries recorded for a single object. Internally delegates to the bulk endpoint with a single-item array for both ids."}},"/api/auditLog/getByObjectTypeIds":{"get":{"tags":["AuditLog"],"summary":"Get audit log by object types","parameters":[{"name":"objectIds","in":"query","schema":{"type":"array","items":{"type":"string","format":"uuid"}},"description":"Optional list of audited object ids."},{"name":"objectTypeIds","in":"query","schema":{"type":"array","items":{"type":"string","format":"uuid"}},"description":"Optional list of object type ids. When omitted, every type the caller can read is considered."},{"name":"authorId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Optional filter for the user who made the change."},{"name":"fromDate","in":"query","schema":{"type":"string","format":"date-time"},"description":"Optional lower bound on entry timestamp."},{"name":"toDate","in":"query","schema":{"type":"string","format":"date-time"},"description":"Optional upper bound on entry timestamp."},{"name":"page","in":"query","schema":{"type":"integer","format":"int32","default":0},"description":"0-based page number. Defaults to 0."},{"name":"take","in":"query","schema":{"type":"integer","format":"int32","default":20},"description":"Page size. Defaults to 20."}],"responses":{"200":{"description":"OK"}},"description":"Returns paged audit log entries filtered by object ids, object types, author, and date range. When `objectTypeIds` is empty, every known object type is considered. The server restricts the requested types to those the caller has at least View permission on (Edit for some sensitive types such as export targets and role administration), so the result may be narrower than requested."}},"/api/v1/auditLog/getByObjectTypeIds":{"get":{"tags":["AuditLog"],"summary":"Get audit log by object types","parameters":[{"name":"objectIds","in":"query","schema":{"type":"array","items":{"type":"string","format":"uuid"}},"description":"Optional list of audited object ids."},{"name":"objectTypeIds","in":"query","schema":{"type":"array","items":{"type":"string","format":"uuid"}},"description":"Optional list of object type ids. When omitted, every type the caller can read is considered."},{"name":"authorId","in":"query","schema":{"type":"string","format":"uuid"},"description":"Optional filter for the user who made the change."},{"name":"fromDate","in":"query","schema":{"type":"string","format":"date-time"},"description":"Optional lower bound on entry timestamp."},{"name":"toDate","in":"query","schema":{"type":"string","format":"date-time"},"description":"Optional upper bound on entry timestamp."},{"name":"page","in":"query","schema":{"type":"integer","format":"int32","default":0},"description":"0-based page number. Defaults to 0."},{"name":"take","in":"query","schema":{"type":"integer","format":"int32","default":20},"description":"Page size. Defaults to 20."}],"responses":{"200":{"description":"OK"}},"description":"Returns paged audit log entries filtered by object ids, object types, author, and date range. When `objectTypeIds` is empty, every known object type is considered. The server restricts the requested types to those the caller has at least View permission on (Edit for some sensitive types such as export targets and role administration), so the result may be narrower than requested."}},"/api/v1/ownership/object/{objectId}":{"get":{"tags":["Ownership"],"summary":"List object owners","parameters":[{"name":"objectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Identifier of the object to look up."}],"responses":{"200":{"description":"OK"}},"description":"Returns the owners registered on a specific object along with the total count."}},"/api/ownership/object/{objectId}":{"get":{"tags":["Ownership"],"summary":"List object owners","parameters":[{"name":"objectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Identifier of the object to look up."}],"responses":{"200":{"description":"OK"}},"description":"Returns the owners registered on a specific object along with the total count."}},"/api/v1/ownership/object":{"post":{"tags":["Ownership"],"summary":"Add object owner","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Ownership.Models.AddOwnershipModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Ownership.Models.AddOwnershipModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Ownership.Models.AddOwnershipModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Ownership.Models.AddOwnershipModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Adds an owner to the supplied object. The caller must hold at least Consultant level on any of their claims. The action goes through the RACI approval pipeline for ownership additions."},"delete":{"tags":["Ownership"],"summary":"Remove object owner","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Ownership.Models.RemoveOwnershipModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Ownership.Models.RemoveOwnershipModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Ownership.Models.RemoveOwnershipModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Ownership.Models.RemoveOwnershipModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Removes an owner from the supplied object. The caller must hold at least Consultant level on any of their claims. The action goes through the RACI approval pipeline for ownership removals."}},"/api/ownership/object":{"post":{"tags":["Ownership"],"summary":"Add object owner","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Ownership.Models.AddOwnershipModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Ownership.Models.AddOwnershipModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Ownership.Models.AddOwnershipModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Ownership.Models.AddOwnershipModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Adds an owner to the supplied object. The caller must hold at least Consultant level on any of their claims. The action goes through the RACI approval pipeline for ownership additions."},"delete":{"tags":["Ownership"],"summary":"Remove object owner","requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Ownership.Models.RemoveOwnershipModel"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Ownership.Models.RemoveOwnershipModel"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Ownership.Models.RemoveOwnershipModel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Ownership.Models.RemoveOwnershipModel"}}}},"responses":{"200":{"description":"OK"}},"description":"Removes an owner from the supplied object. The caller must hold at least Consultant level on any of their claims. The action goes through the RACI approval pipeline for ownership removals."}},"/api/tag/metadata/{tagName}":{"get":{"tags":["TagMetadata"],"summary":"Get tag metadata","parameters":[{"name":"tagName","in":"path","required":true,"schema":{"type":"string"},"description":"Tag name."}],"responses":{"200":{"description":"OK"}},"description":"Returns metadata for the supplied tag (description, owner, folder, etc.)."}},"/api/tag/metadata/{tagName}/update":{"post":{"tags":["TagMetadata"],"summary":"Update tag metadata","parameters":[{"name":"tagName","in":"path","required":true,"schema":{"type":"string"},"description":"Tag name."}],"requestBody":{"content":{"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Tags.TagMetadataUpdate"}},"application/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Tags.TagMetadataUpdate"}},"text/json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Tags.TagMetadataUpdate"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CluedIn.Core.Tags.TagMetadataUpdate"}}}},"responses":{"200":{"description":"OK"}},"description":"Updates metadata for the supplied tag."}},"/api/tag/metadata/folder/rename":{"post":{"tags":["TagMetadata"],"summary":"Rename tag folder","parameters":[{"name":"oldFolderName","in":"query","schema":{"type":"string"}},{"name":"newFolderName","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"description":"Renames a tag folder. All tags inside the folder remain in place but the folder name changes."}}},"components":{"schemas":{"CluedIn.Core.AccessControl.Models.AccessControlPolicyModel":{"type":"object","properties":{"name":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"id":{"type":"string","format":"uuid"},"organizationId":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"createdBy":{"type":"string","nullable":true},"modifiedAt":{"type":"string","format":"date-time","nullable":true},"modifiedBy":{"type":"string","nullable":true},"condition":{"$ref":"#/components/schemas/CluedIn.Core.Rules.QueryBuilder.FilterRule"},"rules":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyRuleModel"},"nullable":true},"isActive":{"type":"boolean"},"order":{"type":"integer","format":"int32"},"requiresAttention":{"type":"boolean"}},"additionalProperties":false},"CluedIn.Core.AccessControl.Models.AccessControlPolicyOrderingModel":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","nullable":true},"order":{"type":"integer","format":"int32"}},"additionalProperties":false},"CluedIn.Core.Rules.Models.RuleActionModel":{"type":"object","properties":{"name":{"type":"string","nullable":true},"supportsPreview":{"type":"boolean"},"properties":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.Rules.Models.RuleProperty"},"nullable":true},"type":{"type":"string","nullable":true},"supportsProcessingRuleScopes":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.Rules.Models.ProcessingRuleScope"},"nullable":true},"supportsRuleUsages":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.Rules.Models.RuleUsageEnum"},"nullable":true}},"additionalProperties":false},"CluedIn.Core.Ownership.Models.AddOwnershipModel":{"type":"object","properties":{"userId":{"type":"string","format":"uuid","nullable":true},"roleId":{"type":"string","format":"uuid","nullable":true},"objectId":{"type":"string","format":"uuid"},"objectTypeId":{"type":"string","format":"uuid"}},"additionalProperties":false},"CluedIn.Core.Ownership.Models.RemoveOwnershipModel":{"type":"object","properties":{"userId":{"type":"string","format":"uuid","nullable":true},"roleId":{"type":"string","format":"uuid","nullable":true},"objectId":{"type":"string","format":"uuid"}},"additionalProperties":false},"CluedIn.Core.Tags.TagMetadataUpdate":{"type":"object","properties":{"description":{"type":"string","nullable":true},"folder":{"type":"string","nullable":true},"threshold":{"type":"number","format":"double","nullable":true},"priority":{"type":"integer","format":"int32","nullable":true},"propertyBlob":{"type":"string","nullable":true}},"additionalProperties":false},"CluedIn.Core.Rules.QueryBuilder.FilterRule":{"type":"object","properties":{"objectTypeId":{"type":"string","format":"uuid"},"condition":{"type":"string","nullable":true},"field":{"type":"string","nullable":true},"id":{"type":"string","format":"uuid"},"operator":{"type":"string","format":"uuid"},"rules":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.Rules.QueryBuilder.FilterRule"},"nullable":true},"type":{"type":"string","nullable":true},"value":{"type":"array","items":{},"nullable":true}},"additionalProperties":false},"CluedIn.Core.AccessControl.Models.AccessControlPolicyRuleModel":{"required":["name"],"type":"object","properties":{"conditions":{"$ref":"#/components/schemas/CluedIn.Core.Rules.QueryBuilder.FilterRule"},"actions":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.AccessControl.Models.AccessControlPolicyRuleActionModel"},"nullable":true},"id":{"type":"string","format":"uuid","nullable":true},"name":{"minLength":1,"type":"string"},"description":{"type":"string","nullable":true},"organizationId":{"type":"string","format":"uuid"},"type":{"type":"string","nullable":true},"order":{"type":"integer","format":"int32"},"createdBy":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"modifiedBy":{"type":"string","nullable":true},"modifiedAt":{"type":"string","format":"date-time","nullable":true},"isActive":{"type":"boolean"}},"additionalProperties":false},"CluedIn.Core.Rules.Models.RuleProperty":{"type":"object","properties":{"name":{"type":"string","nullable":true},"type":{"type":"string","nullable":true},"kind":{"$ref":"#/components/schemas/CluedIn.Core.Rules.Models.ActionControlKind"},"friendlyType":{"type":"string","nullable":true},"friendlyName":{"type":"string","nullable":true},"defaultValue":{"type":"string","nullable":true},"value":{"nullable":true},"isStringOnly":{"type":"boolean"},"excludedProperties":{"type":"string","nullable":true},"isRequired":{"type":"boolean"}},"additionalProperties":false},"CluedIn.Core.Rules.Models.ProcessingRuleScope":{"enum":[0,1,2],"type":"integer","format":"int32"},"CluedIn.Core.Rules.Models.RuleUsageEnum":{"enum":[1,2,4,8,16,32,64,128,256],"type":"integer","format":"int32"},"CluedIn.Core.AccessControl.Models.AccessControlPolicyRuleActionModel":{"type":"object","properties":{"name":{"type":"string","nullable":true},"supportsPreview":{"type":"boolean"},"properties":{"type":"array","items":{"$ref":"#/components/schemas/CluedIn.Core.Rules.Models.RuleProperty"},"nullable":true},"type":{"type":"string","nullable":true}},"additionalProperties":false},"CluedIn.Core.Rules.Models.ActionControlKind":{"enum":[0,1,2,3,4,5,6,7,8],"type":"integer","format":"int32"}},"securitySchemes":{"Bearer":{"type":"http","description":"Please enter a valid token","scheme":"Bearer"}}}}