IRPCObjectOperations.ChangeSecurity

View as Markdown

Vault API / core write session or assertion returns metadata structure version

Changes the security settings of an object.

ServiceObjects, versions, properties and files MFiles.IRPCObjectOperations
gRPC method/MFiles.IRPCObjectOperations/ChangeSecurity
HTTP (mf-http-grpc)POST /grpc/v1/change-security
RequestChangeSecurityRequest
ResponseChangeSecurityResponse
Book and levelVault API, core
Kindwrite
SessionRequired: a session (mfiles-session-id-bin metadata) or a session assertion (x-mf-session-assertion metadata).
Idempotentno
Returns metadata structure versionyes (in the mfiles-metadata-version-bin trailer)
Streamingnone (unary)

Remarks

Replaces the ACL of the object version in place: no check-out is needed and no new version is created. obj_ver must name a version by number; the LATEST marker fails with "Not found." Set options.change_acl_in_all_versions to change every version.

To give the object a named ACL, send that named ACL's acl_for_objects from GetNamedACLs, as for AddObjectWithFiles.

The caller can remove their own access: the call succeeds and is_specified_version_still_visible is false. Set options.require_read_access_after_operation to prevent that: the call then fails with "The user is about to lose the requested read access."

Request: ChangeSecurityRequest

Nested message fields are expanded to depth 3; follow a type link for deeper levels and for the type's own page. Fields marked (recursive) refer to a type already on their path.

FieldTypeDescription
obj_verObjVerThe object version, by number.
obj_ver.obj_idObjIDThe object.
obj_ver.obj_id.typeint32The object type ID, for example 0 for documents. In a lookup value, the value list ID (for a lookup to objects, the object type ID).
obj_ver.obj_id.item_idItemIDThe ID of the object within its type, in item_id.internal_id.
obj_ver.versionObjVerVersionThe version. Usually OBJ_VER_VERSION_TYPE_SPECIFIC with internal_version.
obj_ver.version.typeObjVerVersionTypeWhat internal_version means. OBJ_VER_VERSION_TYPE_SPECIFIC for a version number.Values: OBJ_VER_VERSION_TYPE_UNINITIALIZED (0), OBJ_VER_VERSION_TYPE_LATEST (1), OBJ_VER_VERSION_TYPE_ANY (2), OBJ_VER_VERSION_TYPE_ALL (3), OBJ_VER_VERSION_TYPE_SPECIFIC (4), OBJ_VER_VERSION_TYPE_VALUE_LIST_ITEM (6), OBJ_VER_VERSION_TYPE_OBJECT_LEVEL_REFERENCE (7).
obj_ver.version.internal_versionint32The version number, starting from 1, when type is OBJ_VER_VERSION_TYPE_SPECIFIC. The server returns -1 with OBJ_VER_VERSION_TYPE_LATEST.
obj_ver.version.external_repository_versionstringUsed only for objects in external repositories. Leave empty.
obj_ver.version.external_repository_sort_keyint64Used only for objects in external repositories. Leave 0.
aclAccessControlListThe new ACL.
acl.checked_out_to_userint32Specifies the ID of the user who has extended rights because of the checkout operation performed by her. 0 if such user does not exist.
acl.is_fully_authoritativeboolSpecifies whether this access control list is set to ignore the secondary permissions that come from the latest checked in version.
acl.custom_componentAccessControlListComponentAccesses the custom component of this ACL.
acl.custom_component.named_acl_idint32Specifies the named ACL link of this component.
acl.custom_component.has_named_aclboolTrue if the component links to a named ACL (named_acl_id).
acl.custom_component.current_user_idint32Specifies the current user binding of this component.
acl.custom_component.has_current_userboolTrue if the component has an access control entry for the current user.
acl.custom_component.permissions[]repeated AccessControlEntryThe access control entry datas. The data belongs to the key in the corresponding index.
acl.custom_component.overridability_permissions[]repeated AccessControlEntryOverridability permission data of this ACL component.
acl.custom_component.statusACCESSCONTROLLISTCOMPONENTSTATUSFLAGSModification status of this component.
acl.restrictive_components[]repeated AccessControlListComponentMapEntryAccesses the restrictive automatic components of this ACL.
acl.restrictive_components[].keyAccessControlListComponentKeyAccess control list component.
acl.restrictive_components[].componentAccessControlListComponentAccess control list component.
acl.secondary_access_control_listAccessControlList (recursive)Secondary ACL used for latest version ACL. Not used for access check if null.
acl.additive_components[]repeated AccessControlListComponentMapEntryAccesses the additive automatic components of this ACL.
acl.additive_components[].keyAccessControlListComponentKeyAccess control list component.
acl.additive_components[].componentAccessControlListComponentAccess control list component.
optionsOBJECTOPFLAGSchange_acl_in_all_versions applies the ACL to every version; require_read_access_after_operation and the other require_... flags make the call fail if the caller would lose that access.
options.allboolSpecifies all flags set; Including any future flags.
options.require_read_access_after_operationboolRequires read access to the object after the object operation. If available, the operation fails if the user does not have read access to the object after the operation.
options.require_edit_access_after_operationboolRequires edit access to the object after the object operation. If available, the operation fails if the user does not have edit access to the object after the operation.
options.disallow_name_changeboolIf specified, the operation will fail if it causes a change in the object version's name.
options.require_change_permissions_access_after_operationboolRequires security change access to the object after the object operation. If available, the operation fails if the user does not have security change access to the object after the operation.
options.require_full_access_after_operationboolRequires full access to the object after the object operation. If available, the operation fails if the user does not have full access to the object after the operation.
options.change_acl_in_all_versionsboolChanges the ACL of all versions of the object. This is currently used to request setting the ACL of all versions of an object, not just a specific version, when calling ChangeSecurity.
options.verify_check_in_wopi_locked_documentboolVerify the document is locked for WOPI Co-authoring or editing during checkin.

Response: ChangeSecurityResponse

Nested message fields are expanded to depth 3; follow a type link for deeper levels and for the type's own page.

FieldTypeDescription
is_specified_version_still_visibleboolFalse if the caller can no longer see the version.
specified_versionObjectVersionExDocument info after this operation.
specified_version.version_infoObjectVersionObject Version information.
specified_version.version_info.versionObjVerVersionThe version number, as a specific version.
specified_version.version_info.display_versionstringThe version label to show, if it differs from the version number; empty otherwise.
specified_version.version_info.titlestringThe title (name) of the object in this version.
specified_version.version_info.is_single_file_objectboolTrue if the object is a single-file document, which has exactly one file.
specified_version.version_info.has_relationships_from_thisboolNote: this field is deprecated. True if relationships from this object version to one or more documents exist.
specified_version.version_info.has_relationships_to_thisboolNote: this field is deprecated. True if relationships from one or more documents to this object version exist.
specified_version.version_info.has_assignmentsboolTrue if relationships from one or more assignments to this object version exist.
specified_version.version_info.last_modified_at_utcgoogle.protobuf.TimestampWhen the version was last modified, in UTC.
specified_version.version_info.files[]repeated FileThe files of this version. Each file_ver can be passed to DownloadFile_Begin.
specified_version.version_info.object_version_flagsOBJVERFLAGSBit flags that provide additional information on the object version.
specified_version.version_info.class_idint32The class ID of the version.
specified_version.version_info.version_guidstringThe GUID of this version.
specified_version.version_info.base_properties[]repeated PropertyValueNot filled by the object read methods; read the property values with GetObjectVersionAndPropertiesOfMultipleObjects or GetProperties.
specified_version.version_info.primary_fileFileIDFile ID of the primary file of a multi-file object, if the object is a multi-file object.
specified_version.object_infoObjectLevelInfoObject-level information.
specified_version.object_info.obj_idObjIDThe object type and ID of the object.
specified_version.object_info.external_id_statusExtIDStatusThe status of this object's external ID.Values: EXT_IDSTATUS_UNKNOWN (0), EXT_IDSTATUS_EXTERNAL (1), EXT_IDSTATUS_INTERNAL (2), EXT_IDSTATUS_DISCARDED (3), EXT_IDSTATUS_NOT_AVAILABLE (4), EXT_IDSTATUS_EXTERNAL_REDUCED (5).
specified_version.object_info.external_idstringThe external ID (display ID) of this object. unset means that the external ID is the same as the internal ID.
specified_version.object_info.checked_out_versionObjVerVersionThe version that is checked out. Version number 0 if the object is not checked out.
specified_version.object_info.checked_out_to_user_idint32The ID of the user who has the object checked out.
specified_version.object_info.checked_out_to_user_namestringThe user name of the user who has the object checked out.
specified_version.object_info.checked_out_to_host_namestringThe host name of the computer to which the object was checked out.
specified_version.object_info.checked_out_at_utcgoogle.protobuf.TimestampThe timestamp of the moment the object was checked out.
specified_version.object_info.checked_in_versionObjVerVersionThe latest checked-in version.
specified_version.object_info.created_at_utcgoogle.protobuf.TimestampThe time when the object was created (same as the PROPERTYDEF_CREATED propertyvalue).
specified_version.object_info.accessed_by_me_utcgoogle.protobuf.TimestampAccessed by me timestamp. Parallel operations may cause slight inconsistencies in the returned timestamp in rare cases and the precise value shouldn't be relied upon. The observed timestamp may even roll back.
specified_version.object_info.guidstringThe object GUID, in braces. The same value as GetObjectGUID returns.
specified_version.object_info.optionsITEMFLAGSBit flags that provide additional information on the object (e.g. is the object deleted or a stub).
specified_version.object_info.original_vault_guidstringThe GUID of the vault in which the object was originally created.
specified_version.object_info.original_vault_obj_idObjIDThe original objid in the vault in which the object was originally created.
specified_version.object_info.associated_view_idItemIDIdentifies the view associated with this object if any.
specified_version.object_info.external_repository_icon_idstringIf not null, identifies the icon of the object. Currently applicable only to unmanaged objects.
specified_version.object_info.primary_view_idItemIDIf not null, identifies the primary view of the object that is also the default opening location of the object. Currently applicable only to unmanaged objects.
specified_version.object_info.capabilitiesOBJECTCAPABILITYFLAGSBit flags that provide information on the object capabilities.
resultExtObjectInfoInformation about the object after the operation.
result.is_visibleboolTrue if any version of the object is visible to the caller.
result.object_infoObjectLevelInfoObject-level information, if is_visible is true.
result.object_info.obj_idObjIDThe object type and ID of the object.
result.object_info.external_id_statusExtIDStatusThe status of this object's external ID.Values: EXT_IDSTATUS_UNKNOWN (0), EXT_IDSTATUS_EXTERNAL (1), EXT_IDSTATUS_INTERNAL (2), EXT_IDSTATUS_DISCARDED (3), EXT_IDSTATUS_NOT_AVAILABLE (4), EXT_IDSTATUS_EXTERNAL_REDUCED (5).
result.object_info.external_idstringThe external ID (display ID) of this object. unset means that the external ID is the same as the internal ID.
result.object_info.checked_out_versionObjVerVersionThe version that is checked out. Version number 0 if the object is not checked out.
result.object_info.checked_out_to_user_idint32The ID of the user who has the object checked out.
result.object_info.checked_out_to_user_namestringThe user name of the user who has the object checked out.
result.object_info.checked_out_to_host_namestringThe host name of the computer to which the object was checked out.
result.object_info.checked_out_at_utcgoogle.protobuf.TimestampThe timestamp of the moment the object was checked out.
result.object_info.checked_in_versionObjVerVersionThe latest checked-in version.
result.object_info.created_at_utcgoogle.protobuf.TimestampThe time when the object was created (same as the PROPERTYDEF_CREATED propertyvalue).
result.object_info.accessed_by_me_utcgoogle.protobuf.TimestampAccessed by me timestamp. Parallel operations may cause slight inconsistencies in the returned timestamp in rare cases and the precise value shouldn't be relied upon. The observed timestamp may even roll back.
result.object_info.guidstringThe object GUID, in braces. The same value as GetObjectGUID returns.
result.object_info.optionsITEMFLAGSBit flags that provide additional information on the object (e.g. is the object deleted or a stub).
result.object_info.original_vault_guidstringThe GUID of the vault in which the object was originally created.
result.object_info.original_vault_obj_idObjIDThe original objid in the vault in which the object was originally created.
result.object_info.associated_view_idItemIDIdentifies the view associated with this object if any.
result.object_info.external_repository_icon_idstringIf not null, identifies the icon of the object. Currently applicable only to unmanaged objects.
result.object_info.primary_view_idItemIDIf not null, identifies the primary view of the object that is also the default opening location of the object. Currently applicable only to unmanaged objects.
result.object_info.capabilitiesOBJECTCAPABILITYFLAGSBit flags that provide information on the object capabilities.
result.is_latest_version_visibleboolTrue if the latest version of the object is visible to the caller.
result.latest_versionObjectVersionExWPThe latest version of the object with its properties and ACL, if is_latest_version_visible is true. Some methods (for example UndoCheckout) return it without property values.
result.latest_version.object_versionObjectVersionExObject info.
result.latest_version.properties[]repeated PropertyValueProperty values, or an empty array.
result.latest_version.aclAccessControlListIf set, ACL.
result.latest_version.current_user_permissionsObjectPermissionsForClientIf set, permissions of the object version.
result.original_obj_verObjVerThe object version the request named, as sent. The version part may be unset.
result.original_obj_ver.obj_idObjIDThe object.
result.original_obj_ver.versionObjVerVersionThe version. Usually OBJ_VER_VERSION_TYPE_SPECIFIC with internal_version.
updated_objects[]repeated ObjectVersionExInformation about objects that were also updated during the operation. (represented by ObjectVersionEx structs.)
updated_objects[].version_infoObjectVersionObject Version information.
updated_objects[].version_info.versionObjVerVersionThe version number, as a specific version.
updated_objects[].version_info.display_versionstringThe version label to show, if it differs from the version number; empty otherwise.
updated_objects[].version_info.titlestringThe title (name) of the object in this version.
updated_objects[].version_info.is_single_file_objectboolTrue if the object is a single-file document, which has exactly one file.
updated_objects[].version_info.has_relationships_from_thisboolNote: this field is deprecated. True if relationships from this object version to one or more documents exist.
updated_objects[].version_info.has_relationships_to_thisboolNote: this field is deprecated. True if relationships from one or more documents to this object version exist.
updated_objects[].version_info.has_assignmentsboolTrue if relationships from one or more assignments to this object version exist.
updated_objects[].version_info.last_modified_at_utcgoogle.protobuf.TimestampWhen the version was last modified, in UTC.
updated_objects[].version_info.files[]repeated FileThe files of this version. Each file_ver can be passed to DownloadFile_Begin.
updated_objects[].version_info.object_version_flagsOBJVERFLAGSBit flags that provide additional information on the object version.
updated_objects[].version_info.class_idint32The class ID of the version.
updated_objects[].version_info.version_guidstringThe GUID of this version.
updated_objects[].version_info.base_properties[]repeated PropertyValueNot filled by the object read methods; read the property values with GetObjectVersionAndPropertiesOfMultipleObjects or GetProperties.
updated_objects[].version_info.primary_fileFileIDFile ID of the primary file of a multi-file object, if the object is a multi-file object.
updated_objects[].object_infoObjectLevelInfoObject-level information.
updated_objects[].object_info.obj_idObjIDThe object type and ID of the object.
updated_objects[].object_info.external_id_statusExtIDStatusThe status of this object's external ID.Values: EXT_IDSTATUS_UNKNOWN (0), EXT_IDSTATUS_EXTERNAL (1), EXT_IDSTATUS_INTERNAL (2), EXT_IDSTATUS_DISCARDED (3), EXT_IDSTATUS_NOT_AVAILABLE (4), EXT_IDSTATUS_EXTERNAL_REDUCED (5).
updated_objects[].object_info.external_idstringThe external ID (display ID) of this object. unset means that the external ID is the same as the internal ID.
updated_objects[].object_info.checked_out_versionObjVerVersionThe version that is checked out. Version number 0 if the object is not checked out.
updated_objects[].object_info.checked_out_to_user_idint32The ID of the user who has the object checked out.
updated_objects[].object_info.checked_out_to_user_namestringThe user name of the user who has the object checked out.
updated_objects[].object_info.checked_out_to_host_namestringThe host name of the computer to which the object was checked out.
updated_objects[].object_info.checked_out_at_utcgoogle.protobuf.TimestampThe timestamp of the moment the object was checked out.
updated_objects[].object_info.checked_in_versionObjVerVersionThe latest checked-in version.
updated_objects[].object_info.created_at_utcgoogle.protobuf.TimestampThe time when the object was created (same as the PROPERTYDEF_CREATED propertyvalue).
updated_objects[].object_info.accessed_by_me_utcgoogle.protobuf.TimestampAccessed by me timestamp. Parallel operations may cause slight inconsistencies in the returned timestamp in rare cases and the precise value shouldn't be relied upon. The observed timestamp may even roll back.
updated_objects[].object_info.guidstringThe object GUID, in braces. The same value as GetObjectGUID returns.
updated_objects[].object_info.optionsITEMFLAGSBit flags that provide additional information on the object (e.g. is the object deleted or a stub).
updated_objects[].object_info.original_vault_guidstringThe GUID of the vault in which the object was originally created.
updated_objects[].object_info.original_vault_obj_idObjIDThe original objid in the vault in which the object was originally created.
updated_objects[].object_info.associated_view_idItemIDIdentifies the view associated with this object if any.
updated_objects[].object_info.external_repository_icon_idstringIf not null, identifies the icon of the object. Currently applicable only to unmanaged objects.
updated_objects[].object_info.primary_view_idItemIDIf not null, identifies the primary view of the object that is also the default opening location of the object. Currently applicable only to unmanaged objects.
updated_objects[].object_info.capabilitiesOBJECTCAPABILITYFLAGSBit flags that provide information on the object capabilities.