# Objects, versions, properties and files (IRPCObjectOperations)

Location: [gRPC API](https://developer.m-files.com/APIs/gRPC-API/index.md) > [Vault API](https://developer.m-files.com/APIs/gRPC-API/vault/index.md)

HTML version: https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/

An interface for handling documents and files

Provides methods for adding, modifying and removing objects.
Includes version control operations as well, such as checkout and check-in.

- **gRPC service:** `MFiles.IRPCObjectOperations`
- **Book and level:** [Vault API](https://developer.m-files.com/APIs/gRPC-API/vault/index.md), core
- **Methods:** 132
- **Proto file:** [`mfiles/IRPCObjectOperations.proto`](https://developer.m-files.com/APIs/gRPC-API/downloads/proto/mfiles/IRPCObjectOperations.proto)

<a id="overview"></a>

## Overview

Everything you do with individual objects: read their versions, properties and files, create
them, change them, and manage their lifecycle. To find objects in the first place, use
[SearchObjects](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCSearch/SearchObjects/index.md).

| Job | Method |
| --- | --- |
| Read the latest version and properties of one or many objects | [GetObjectVersionAndPropertiesOfMultipleObjects](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetObjectVersionAndPropertiesOfMultipleObjects/index.md) |
| Read one object, latest or a specific version | [GetObjectInfoAndProperties](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetObjectInfoAndProperties/index.md) |
| Read selected data (properties, ACL, permissions, relationships, comments) per object | [GetObjectDataOfMultipleObjects](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetObjectDataOfMultipleObjects/index.md) |
| Read the properties of a known, specific version | [GetProperties](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetProperties/index.md) |
| Resolve the latest version number | [GetLatestObjectVersion](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetLatestObjectVersion/index.md) |
| List the versions of an object | [GetObjectHistory](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetObjectHistory/index.md) |
| Download a file | [DownloadFile_Begin](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/DownloadFile_Begin/index.md), [DownloadFile_ReadBlock](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/DownloadFile_ReadBlock/index.md) |
| Get the text of a file (plain text or Markdown) | [GetTextContentForFileWithFormat](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetTextContentForFileWithFormat/index.md) |
| Upload content for a new object | [UploadTempFile](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/UploadTempFile/index.md), [UploadTempFileCommit](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/UploadTempFileCommit/index.md) |
| Create an object, with or without files | [AddObjectWithFiles](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/AddObjectWithFiles/index.md), [AddObject](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/AddObject/index.md) |
| Change properties | [SetProperties](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/SetProperties/index.md), [SetPropertiesMultiple](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/SetPropertiesMultiple/index.md) |
| Check out, check in, undo a check-out | [CheckOut](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/CheckOut/index.md), [CheckIn](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/CheckIn/index.md), [UndoCheckout](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/UndoCheckout/index.md) |
| Add a file to an object | [AddObjectFile](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/AddObjectFile/index.md) |
| Workflow states and transitions | [GetWorkflowStates](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetWorkflowStates/index.md), [GetWorkflowStatesAndTransitions](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetWorkflowStatesAndTransitions/index.md) |
| What the caller may do with an object | [GetEffectivePermissions](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetEffectivePermissions/index.md) |
| Delete, undelete, destroy | [RemoveObject](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/RemoveObject/index.md), [UndeleteObject](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/UndeleteObject/index.md), [DestroyObject](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/DestroyObject/index.md) |

The other methods are batch variants of the ones above (`...Multiple`), history and version
comments, duplicate detection (`Find...Duplicates`), objects from external repositories
(`...External...`, `...Promote...`, `...Unmanaged...`), and helpers for M-Files client features
such as document comparison and external editing.

**Versions.** Most read methods take an [ObjVer](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjVer/index.md) and need a *specific*
version (`OBJ_VER_VERSION_TYPE_SPECIFIC` with `internal_version`). `GetProperties`,
`GetPropertiesOfMultipleObjects`, `GetObjectFiles`, `GetRelationshipsForObject` and
`GetLatestVersionCommentOfMultipleObjects` answer "Not found." to the `OBJ_VER_VERSION_TYPE_LATEST`
marker. To read the latest version, either use a method that has its own "latest" switch
(`GetObjectVersionAndPropertiesOfMultipleObjects`, `GetObjectInfoAndProperties`,
`GetObjectDataOfMultipleObjects`, `GetObjectInfo`), or resolve the number first with
`GetLatestObjectVersion`. The same applies to files: [FileVer](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.FileVer/index.md) must name a
specific file version.

**Checked-out objects.** "Latest" means the latest checked-in version. A version that is
checked out is returned only to the user who has it checked out, and only where the request says
so (`allow_checked_out`, `OBJECT_VERSION_DATA_REQUEST_VERSION_TYPE_LATEST_VERSIONS`), except
`GetObjectInfo`, which always returns it to that user.

**Creating objects: always set `acl`.** `AddObjectWithFiles`, `AddObject` and the other creating
methods store the ACL you send; they do not compute one from the class. An unset `acl` gives the
new object an empty ACL: once it is checked in, only users with the vault-level right to see all
objects can see it, not even its creator. Send a named ACL, for example
`acl { custom_component { has_named_acl: true named_acl_id: -1 } }` ("Full control for all
internal users"); see [AddObjectWithFiles](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/AddObjectWithFiles/index.md).

**Files.** The object's version information ([ObjectVersion](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjectVersion/index.md)
`files`) already lists its files with their `file_ver`, size and MD5 checksum, so after reading
an object you can download its files without calling `GetObjectFiles`. `DownloadFile`,
`DownloadFileWithDownloadID`, `DownloadFileWithDownloadKey`, `GetFileDownloadUrl` and
`GetFileDownloadUrl2` serve the HTTP gateway and answer "Not implemented." over native gRPC.

**Errors.** Errors arrive with gRPC status `UNKNOWN` and the M-Files error message as the status
details. A missing object or version is "Not found." (0x8004000B). An object the caller is not
allowed to read is "Access denied." (0x800407E4) for most methods, but "Not found." for
`GetObjectInfoAndProperties`, and `GetObjectHistory` returns an empty list for it.

Background:
[Objects and versions](https://developer.m-files.com/APIs/gRPC-API/concepts/objects-and-versions/index.md),
[Properties and values](https://developer.m-files.com/APIs/gRPC-API/concepts/properties-and-values/index.md),
[Permissions](https://developer.m-files.com/APIs/gRPC-API/concepts/permissions/index.md),
[Workflows](https://developer.m-files.com/APIs/gRPC-API/concepts/workflows/index.md) and
[Files](https://developer.m-files.com/APIs/gRPC-API/runtime/files/index.md).

<a id="highlighted"></a>

## Highlighted methods

| Method | Summary | Facts |
|---|---|---|
| [GetObjectInfoAndProperties](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetObjectInfoAndProperties/index.md) | Gets the version information and the property values of one object, either its latest version or a specific version. | `write` `session or assertion` `returns metadata structure version` |
| [GetObjectVersionAndPropertiesOfMultipleObjects](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetObjectVersionAndPropertiesOfMultipleObjects/index.md) | Gets the version information and the property values of several objects in one call. The preferred way to read objects. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetObjectDataOfMultipleObjects](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetObjectDataOfMultipleObjects/index.md) | Gets selected data of several objects: version information, properties, ACL, the caller's permissions, relationships, version comments and more, with a result or an error per object. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetProperties](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetProperties/index.md) | Gets the property values of one specific object version. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetObjectFiles](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetObjectFiles/index.md) | Gets the files of a specific object version. | `write` `session or assertion` `returns metadata structure version` |
| [DownloadFile_Begin](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/DownloadFile_Begin/index.md) | Opens a download session for a file version and returns its ID, the content size and, on request, its MD5 checksum. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [DownloadFile_ReadBlock](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/DownloadFile_ReadBlock/index.md) | Reads a block of a file from a download session. | `read` `session or assertion` `idempotent` |
| [DownloadFile_Stop](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/DownloadFile_Stop/index.md) | Closes a download session. | `read` `session or assertion` `idempotent` |
| [UploadTempFile](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/UploadTempFile/index.md) | Uploads a block of a file to a temporary upload session on the server. The upload can then be used as the content of a new object. | `write` `session or assertion` `idempotent` |
| [UploadTempFileCommit](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/UploadTempFileCommit/index.md) | Completes an upload made with UploadTempFile. | `write` `session or assertion` `idempotent` |
| [AddObjectWithFiles](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/AddObjectWithFiles/index.md) | Creates a new object, optionally with its files, and optionally checks it in. | `write` `session or assertion` `returns metadata structure version` |
| [AddObject](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/AddObject/index.md) | Creates a new object without files. | `write` `session or assertion` `returns metadata structure version` |
| [CheckOut](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/CheckOut/index.md) | Checks out one object. | `write` `session or assertion` `returns metadata structure version` |
| [CheckIn](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/CheckIn/index.md) | Checks in one object. | `write` `session or assertion` `returns metadata structure version` |
| [UndoCheckout](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/UndoCheckout/index.md) | Undoes the checkout of one object. | `write` `session or assertion` `returns metadata structure version` |
| [SetProperties](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/SetProperties/index.md) | Adds, replaces or removes property values of an object. | `write` `session or assertion` `returns metadata structure version` |
| [SetPropertiesMultiple](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/SetPropertiesMultiple/index.md) | If the object is currently checked in, a new checked-in version is created. If the object is currently checked out, the changes are applied to the checked-out version. | `write` `session or assertion` `returns metadata structure version` |
| [AddObjectFile](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/AddObjectFile/index.md) | Adds new document file to a document. | `write` `session or assertion` `returns metadata structure version` |
| [GetObjectHistory](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetObjectHistory/index.md) | Lists the existing versions of an object, oldest first. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetWorkflowStates](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetWorkflowStates/index.md) | Gets the states of the given workflow in the appropriate order. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetWorkflowStatesAndTransitions](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetWorkflowStatesAndTransitions/index.md) | Gets the states and transitions of the given workflow. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetEffectivePermissions](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetEffectivePermissions/index.md) | Gets the effective permissions of a document. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [RemoveObject](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/RemoveObject/index.md) | Removes one object i.e. marks it deleted. | `write` `session or assertion` `returns metadata structure version` |
| [UndeleteObject](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/UndeleteObject/index.md) | Undeletes a previously removed object. | `write` `session or assertion` `returns metadata structure version` |
| [DestroyObject](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/DestroyObject/index.md) | Permanently destroys an object, or one version of it. | `write` `session or assertion` `returns metadata structure version` |

<a id="methods"></a>

## Other methods

| Method | Summary | Facts |
|---|---|---|
| [AddObjectWithFilesWithPropertyMetadata](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/AddObjectWithFilesWithPropertyMetadata/index.md) | Creates a new object with files, storing metadata about each property value (who or what set it, why, and with what confidence). | `write` `session or assertion` `returns metadata structure version` |
| [AddOrUpdateExternalObject](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/AddOrUpdateExternalObject/index.md) | Creates, updates or deletes the object that mirrors an item of an external system, identified by its external ID. | `write` `session or assertion` |
| [AddSingleFileDocument_SingleStep](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/AddSingleFileDocument_SingleStep/index.md) | Creates a single-file document from inline file content and checks it in. Older form; prefer AddObjectWithFiles with an inline file source. | `write` `session or assertion` `returns metadata structure version` |
| [AddSingleFileDocument_SingleStep2](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/AddSingleFileDocument_SingleStep2/index.md) | Creates a single-file document from inline file content. Older form; prefer AddObjectWithFiles with an inline file source. | `write` `session or assertion` `returns metadata structure version` |
| [AddSingleFileDocument_SingleStep3](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/AddSingleFileDocument_SingleStep3/index.md) | Creates a single-file document from inline file content and returns its file version. Older form; prefer AddObjectWithFiles with an inline file source. | `write` `session or assertion` `returns metadata structure version` |
| [AddStubObject](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/AddStubObject/index.md) | Creates a stub object that stands for an object in another vault. Used by replication and cross-vault relationships; not for applications. | `write` `session or assertion` `returns metadata structure version` |
| [AddVersionTag](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/AddVersionTag/index.md) | Adds the specified tag to the document version. If the tag already exists in the specified target version, this method does nothing. Other tags are not affected. | `write` `session or assertion` `idempotent` `returns metadata structure version` |
| [ChangeSecurity](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/ChangeSecurity/index.md) | Changes the security settings of an object. | `write` `session or assertion` `returns metadata structure version` |
| [CheckAccess](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/CheckAccess/index.md) | Checks user's access to an object based on an ACL. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [CheckInExternalChanges](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/CheckInExternalChanges/index.md) | Creates new versions of objects whose files were changed in an external editing system (SharePoint Embedded co-authoring). No version is created for an object without changes. | `write` `session or assertion` `returns metadata structure version` |
| [CheckInMultiple](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/CheckInMultiple/index.md) | Checks in several objects in one call. | `write` `session or assertion` `returns metadata structure version` |
| [CheckOutMultiple](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/CheckOutMultiple/index.md) | Checks out several objects in one call. | `write` `session or assertion` `returns metadata structure version` |
| [ConvertToPDF](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/ConvertToPDF/index.md) | Converts the specified object file to PDF format. | `write` `session or assertion` `returns metadata structure version` |
| [CopyConflictObjectAsNewVersionToBaseObject](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/CopyConflictObjectAsNewVersionToBaseObject/index.md) | Resolves a replication conflict by adding the conflict object's content as a new version of the base object. Used by M-Files clients; not for applications. | `write` `session or assertion` `returns metadata structure version` |
| [CountObjectVersionsMatchingConditions](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/CountObjectVersionsMatchingConditions/index.md) | Counts the versions of an object that DestroyObjectVersionsByConditions would destroy with the same inputs, without destroying anything. | `write` `session or assertion` `returns metadata structure version` |
| [CreateNewObjectWithPropertyMetadata](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/CreateNewObjectWithPropertyMetadata/index.md) | Creates a new object without files, storing metadata about each property value. | `write` `session or assertion` `returns metadata structure version` |
| [DemoteObjects](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/DemoteObjects/index.md) | Removes the M-Files metadata from promoted objects, turning them back into unmanaged objects of their external repository. | `write` `session or assertion` `returns metadata structure version` |
| [DestroyObjects](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/DestroyObjects/index.md) | Permanently destroys several objects with all their versions. Requires the vault-level right to destroy objects. | `write` `session or assertion` `returns metadata structure version` |
| [DestroyObjectVersions](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/DestroyObjectVersions/index.md) | Permanently destroys specific object versions. | `write` `session or assertion` `returns metadata structure version` |
| [DestroyObjectVersionsByConditions](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/DestroyObjectVersionsByConditions/index.md) | Destroys the old versions of an object that match search conditions, and returns how many were destroyed. | `write` `session or assertion` `returns metadata structure version` |
| [DetectTextLanguage](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/DetectTextLanguage/index.md) | Detects the language of a plain text. | `write` `session or assertion` `returns metadata structure version` |
| [DownloadFile](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/DownloadFile/index.md) | Not available over native gRPC: the server answers "Not implemented.". Used by the M-Files HTTP gateway. | `write` `session or assertion` |
| [DownloadFileWithDownloadID](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/DownloadFileWithDownloadID/index.md) | Not available over native gRPC: the server answers "Not implemented.". Used by the M-Files HTTP gateway. | `write` `session or assertion` |
| [DownloadFileWithDownloadKey](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/DownloadFileWithDownloadKey/index.md) | Not available over native gRPC: the server answers "Not implemented.". Used by the M-Files HTTP gateway. | `write` `session or assertion` |
| [DownloadTempFileFromUpload_Begin](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/DownloadTempFileFromUpload_Begin/index.md) | Opens a download session for a committed upload, to read it back or as a PDF, without creating an object. | `read` `session or assertion` `idempotent` |
| [FindEmailDuplicates](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/FindEmailDuplicates/index.md) | Finds duplicate email objects in the vault. | `write` `session or assertion` `returns metadata structure version` |
| [FindFileDuplicates](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/FindFileDuplicates/index.md) | Finds files in the vault with the same content as the given file version. | `write` `session or assertion` `returns metadata structure version` |
| [FindFileDuplicatesOfObjVer](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/FindFileDuplicatesOfObjVer/index.md) | Finds files in the vault with the same content as the files of the given object version. | `write` `session or assertion` `returns metadata structure version` |
| [FindFilesByChecksum](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/FindFilesByChecksum/index.md) | Finds file versions in the vault by MD5 checksum. | `write` `session or assertion` `returns metadata structure version` |
| [FindVaultDuplicates](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/FindVaultDuplicates/index.md) | Finds all groups of duplicate files in the vault. | `write` `session or assertion` `returns metadata structure version` |
| [FollowObject](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/FollowObject/index.md) | Starts or stops following the specified object. While the object is being followed, the current user will be notified if the object changes. | `write` `session or assertion` `returns metadata structure version` |
| [GetAutomaticMetadata](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetAutomaticMetadata/index.md) | Gets automatic metadata from the vault's metadata providers, for an object about to be created (from its uploaded files) or for an existing object version. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetComparisonUrlOfUploadedFile](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetComparisonUrlOfUploadedFile/index.md) | Gets a URL of a page that shows the differences between a document file in the vault and a stateless upload identified by its `file_ref`. | `write` `session or assertion` |
| [GetDocEventSubscriptions](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetDocEventSubscriptions/index.md) | Gets the caller's event subscriptions for an object. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetDocumentComparisonEnabled](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetDocumentComparisonEnabled/index.md) | Tells whether document comparison is available in the vault. | `write` `session or assertion` |
| [GetDocumentComparisonUrl](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetDocumentComparisonUrl/index.md) | Gets a URL of a page that shows the differences between two document files in the vault. | `write` `session or assertion` |
| [GetDocumentComparisonWithTempFileUrl](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetDocumentComparisonWithTempFileUrl/index.md) | Gets a URL of a page that shows the differences between a document file in the vault and an uploaded temporary file. | `write` `session or assertion` |
| [GetExternalEditingDetails](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetExternalEditingDetails/index.md) | Gets the information a client needs to open a file in an external editing system (SharePoint Embedded). | `read` `session or assertion` `idempotent` |
| [GetFileDownloadUrl](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetFileDownloadUrl/index.md) | Not available over native gRPC: the server answers "Not implemented.". Used by the M-Files HTTP gateway. | `write` `session or assertion` |
| [GetFileDownloadUrl2](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetFileDownloadUrl2/index.md) | Not available over native gRPC: the server answers "Not implemented.". Used by the M-Files HTTP gateway. | `write` `session or assertion` |
| [GetFileMalwareInfo](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetFileMalwareInfo/index.md) | Gets the malware scanning verdict of a file, as an advisory hint for a user interface. | `read` `session or assertion` `idempotent` |
| [GetFileSize](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetFileSize/index.md) | Gets the size of a specific file version in bytes. | `write` `session or assertion` `returns metadata structure version` |
| [GetIdentitiesAndViewsOfMultipleUnmanagedReducedItems](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetIdentitiesAndViewsOfMultipleUnmanagedReducedItems/index.md) | Gets the identities and view IDs of unmanaged items of an external repository. Used by M-Files clients; not for applications. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetLatestFileVersion](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetLatestFileVersion/index.md) | Gets the latest version of a file and the object version it belongs to. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetLatestObjectVersion](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetLatestObjectVersion/index.md) | Gets the number and GUID of the latest version of an object. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetLatestVersionCommentOfMultipleObjects](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetLatestVersionCommentOfMultipleObjects/index.md) | Gets the latest version comment of several objects. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetMultipleWorkflowStatesAndTransitions](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetMultipleWorkflowStatesAndTransitions/index.md) | Gets the states and transitions of several workflows in one call, in a compressed binary form. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetMultipleWorkflowStatesAndTransitionsWithRightsCheck](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetMultipleWorkflowStatesAndTransitionsWithRightsCheck/index.md) | Gets the states and transitions of several workflows in one call, in a compressed binary form, with the user's rights checked. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetObjectFilesForModificationInEventHandler](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetObjectFilesForModificationInEventHandler/index.md) | Gets the files of a checked-out object version for modification by an event handler. Used by server-side vault applications; requires the vault-level right to edit and delete all objects. | `write` `session or assertion` `returns metadata structure version` |
| [GetObjectGUID](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetObjectGUID/index.md) | Gets the GUID of an object. | `write` `session or assertion` `returns metadata structure version` |
| [GetObjectHistory2](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetObjectHistory2/index.md) | Lists the existing versions of an object with their version information, oldest first. | `write` `session or assertion` `returns metadata structure version` |
| [GetObjectInfo](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetObjectInfo/index.md) | Gets the version information of one object without its property values. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetObjectInfoAndPropertiesWithMetadata](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetObjectInfoAndPropertiesWithMetadata/index.md) | Like GetObjectInfoAndProperties, but each property value also carries its value metadata. | `write` `session or assertion` `returns metadata structure version` |
| [GetObjectsByExternalIds](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetObjectsByExternalIds/index.md) | Finds objects of one object type by their external IDs. | `read` `session or assertion` `idempotent` |
| [GetObjIDByGUID](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetObjIDByGUID/index.md) | Gets the object ID of the object that has the given object GUID. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetPromotedObjects](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetPromotedObjects/index.md) | Lists promoted objects of an external repository. Requires full control of the vault; the maximum result count must be 1 to 1000. | `write` `session or assertion` `returns metadata structure version` |
| [GetPropertiesOfMultipleObjects](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetPropertiesOfMultipleObjects/index.md) | Gets the property values of several specific object versions. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetPropertyValueWithMetadata](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetPropertyValueWithMetadata/index.md) | Gets a property value and its metadata. | `read` `session or assertion` `idempotent` |
| [GetRelationshipsForObject](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetRelationshipsForObject/index.md) | Gets the objects that a specific object version refers to, or that refer to it. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetRemoteRelationshipSourceInfo](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetRemoteRelationshipSourceInfo/index.md) | Gets what another vault needs to create a stub of this object, or to find a matching object. Used by replication and cross-vault relationships; not for applications. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetRemoteRelationshipTargetInfo](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetRemoteRelationshipTargetInfo/index.md) | Finds the local object that matches an object of another vault, or the information for creating a stub of it. Used by replication and cross-vault relationships; not for applications. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetSecurity](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetSecurity/index.md) | Gets the permissions (ACL) of an object version. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetSecurityOfMultipleObjects](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetSecurityOfMultipleObjects/index.md) | Gets the permissions (ACL) of several object versions, in the order of `obj_vers`. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetStateTransitionSignatureSettings](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetStateTransitionSignatureSettings/index.md) | Gets the signature settings for a state transition. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetTemplateObjectsForObjectType](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetTemplateObjectsForObjectType/index.md) | Gets the template objects of an object type, with the Additional classes value of each. | `write` `session or assertion` `returns metadata structure version` |
| [GetTemplates](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetTemplates/index.md) | Gets the templates of an object type, optionally only those of one class or matching keywords. | `write` `session or assertion` `returns metadata structure version` |
| [GetTextContentForFile](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetTextContentForFile/index.md) | Gets the plain text content of a file version. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetTextContentForFileWithFormat](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetTextContentForFileWithFormat/index.md) | Gets the text content of a file version as plain text or Markdown, and reports which format was produced. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetTextContentForTemporaryFile](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetTextContentForTemporaryFile/index.md) | Gets the plain text content of a file uploaded with UploadTempFile. | `write` `session or assertion` |
| [GetVersionCommentHistory](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetVersionCommentHistory/index.md) | Gets the version comments of an object up to a given version, oldest first. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetWorkflowsForClient](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetWorkflowsForClient/index.md) | Gets all the workflows in a format suitable for client. | `read` `session or assertion` `idempotent` `returns metadata structure version` |
| [GetWorkflowStateHistory](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetWorkflowStateHistory/index.md) | Gets the workflow state history of an object. | `read` `session or assertion` `idempotent` |
| [HasFileDuplicates](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/HasFileDuplicates/index.md) | Tells whether a file with the given content (checksum) already exists in the vault. | `write` `session or assertion` `returns metadata structure version` |
| [KeepUploadSessionAlive](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/KeepUploadSessionAlive/index.md) | Keeps an upload from being removed for inactivity. | `write` `session or assertion` `idempotent` |
| [MigrateObject](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/MigrateObject/index.md) | Migrates a promoted object. Requires full control of the vault; used by migration tools. | `write` `session or assertion` `returns metadata structure version` |
| [MigrateObjects](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/MigrateObjects/index.md) | Migrates and promotes objects. Requires full control of the vault; used by migration tools. | `write` `session or assertion` `returns metadata structure version` |
| [ModifyVersionTags](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/ModifyVersionTags/index.md) | Replaces the version tags of an object version with the given set; an empty `tags` clears them. | `write` `session or assertion` `idempotent` `returns metadata structure version` |
| [PrepareFile](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/PrepareFile/index.md) | Prepares a PDF rendition of a file version and reports its size, extension and timestamp. | `write` `session or assertion` `idempotent` `returns metadata structure version` |
| [PromoteUnmanagedObject](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/PromoteUnmanagedObject/index.md) | Promotes objects of an external repository (unmanaged objects) to managed M-Files objects by giving them metadata. | `write` `session or assertion` `returns metadata structure version` |
| [RelayMasterStorageOperations](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/RelayMasterStorageOperations/index.md) | Relays file or object operations to Master Storage. Internal to M-Files; not for applications. | `write` `session or assertion` `idempotent` |
| [RemoveFromRecentlyAccessed](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/RemoveFromRecentlyAccessed/index.md) | Removes the specified objects from being shown in 'Recently Accessed by Me'. | `write` `session or assertion` `returns metadata structure version` |
| [RemoveObjectFile](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/RemoveObjectFile/index.md) | Removes a file from a document. | `write` `session or assertion` `returns metadata structure version` |
| [RemoveObjects](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/RemoveObjects/index.md) | Marks several objects deleted in one transaction. | `write` `session or assertion` `returns metadata structure version` |
| [RemoveProperty](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/RemoveProperty/index.md) | Removes one property value from an object version. | `write` `session or assertion` `returns metadata structure version` |
| [RemoveUploadSession](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/RemoveUploadSession/index.md) | Removes an upload and its temporary file. | `write` `session or assertion` `idempotent` |
| [RenameObjectFile](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/RenameObjectFile/index.md) | Renames a document file. | `write` `session or assertion` `returns metadata structure version` |
| [ResolveConflict](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/ResolveConflict/index.md) | Resolves a replication conflict between an object and its conflict object. Used by replication tools and M-Files clients; not for applications. | `write` `session or assertion` `returns metadata structure version` |
| [ResolveManagedIDOfPromotedObject](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/ResolveManagedIDOfPromotedObject/index.md) | Gets the managed object ID of an object that had the given unmanaged ID before it was promoted. | `read` `session or assertion` `idempotent` |
| [Rollback](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/Rollback/index.md) | Rolls back to an older version. Creates a new version that is a copy of the specified old version. | `write` `session or assertion` `returns metadata structure version` |
| [SetDocEventSubscriptions](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/SetDocEventSubscriptions/index.md) | Replaces the caller's event subscriptions for an object. | `write` `session or assertion` `idempotent` `returns metadata structure version` |
| [SetExternalObjectID](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/SetExternalObjectID/index.md) | Sets the external ID of an object. | `write` `session or assertion` `returns metadata structure version` |
| [SetFavoritesMultiple](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/SetFavoritesMultiple/index.md) | Adds and removes objects from the favorites collection of the user. | `write` `session or assertion` `idempotent` `returns metadata structure version` |
| [SetObjectActive](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/SetObjectActive/index.md) | Clears the draft (pending-upload) flag on an object, leaving it checked out. | `write` `session or assertion` |
| [SetObjectGUID](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/SetObjectGUID/index.md) | Sets the Object GUID of the specified object. NOTE: In general, the identity of an object should remain unchanged. Use this method in special circumstances only. | `write` `session or assertion` `returns metadata structure version` |
| [SetObjectLevelProperty](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/SetObjectLevelProperty/index.md) | Sets a property that belongs to the object as a whole rather than to one version. | `write` `session or assertion` `idempotent` `returns metadata structure version` |
| [SetPropertiesWithMetadata](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/SetPropertiesWithMetadata/index.md) | Adds, replaces or removes property values of an object, also storing metadata about each value. | `write` `session or assertion` `returns metadata structure version` |
| [SetPropertiesWithMetadataAttributedTo](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/SetPropertiesWithMetadataAttributedTo/index.md) | Sets property values with metadata and records the change as made by a built-in agent user. | `write` `session or assertion` `returns metadata structure version` |
| [SetPropertyValueMetadata](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/SetPropertyValueMetadata/index.md) | Changes the metadata of property values without changing the values. | `write` `session or assertion` |
| [SetTier](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/SetTier/index.md) | Moves objects between storage tiers. | `write` `session or assertion` |
| [UndeleteObjects](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/UndeleteObjects/index.md) | Restores several deleted objects. Requires the vault-level right to undelete objects. | `write` `session or assertion` `returns metadata structure version` |
| [UndoCheckoutMultiple](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/UndoCheckoutMultiple/index.md) | Undoes the check-out of several objects in one call. | `write` `session or assertion` `returns metadata structure version` |
| [UpdateMetadataInFile](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/UpdateMetadataInFile/index.md) | Writes the object's metadata into the properties embedded in its files (for formats that support it). | `write` `session or assertion` `returns metadata structure version` |
| [UpdateObjectModificationInfo](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/UpdateObjectModificationInfo/index.md) | Overwrites the creation and last modification information (who and when) of a checked-out object. | `write` `session or assertion` `returns metadata structure version` |
| [UpdateProperty](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/UpdateProperty/index.md) | Sets one property value of an object version. | `write` `session or assertion` `returns metadata structure version` |
| [UploadExistingFiles](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/UploadExistingFiles/index.md) | Copies existing file versions into new uploads, for example to create a new object with a copy of a file. | `write` `session or assertion` |
| [UploadFile](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/UploadFile/index.md) | Uploads a block of new content for an existing file of an object that is checked out to the caller. | `write` `session or assertion` `idempotent` |
| [UploadFileCommit](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/UploadFileCommit/index.md) | Completes an upload made with UploadFile and stores it as the new content of the file. | `write` `session or assertion` `returns metadata structure version` |
