# IRPCObjectOperations.CheckIn

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) > [Objects, versions, properties and files](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/index.md)

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

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

Checks in one object.

- **Service:** [Objects, versions, properties and files](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/index.md) `MFiles.IRPCObjectOperations`
- **gRPC method:** `/MFiles.IRPCObjectOperations/CheckIn`
- **HTTP (mf-http-grpc):** `POST /grpc/v1/check-in`
- **Request:** [`CheckInRequest`](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/CheckIn/index.md#request)
- **Response:** [`CheckInResponse`](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/CheckIn/index.md#response)
- **Book and level:** Vault API, core
- **Kind:** write
- **Session:** Required: a session (mfiles-session-id-bin metadata) or a session assertion (x-mf-session-assertion metadata).
- **Idempotent:** no
- **Returns metadata structure version:** yes (in the mfiles-metadata-version-bin trailer)
- **Streaming:** none (unary)

<a id="remarks"></a>

## Remarks

`obj_ver` must name the checked-out version by number. The `OBJ_VER_VERSION_TYPE_LATEST` marker
fails with "Not found. Invalid object version: -1", and the latest checked-in version fails with
"... the version you are attempting to access is not the current checked-out version."
Get the checked-out version number from the CheckOut response or from
[GetLatestObjectVersion](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetLatestObjectVersion/index.md) with
`allow_checked_out: true`.

If nothing was changed since the check-out, the server undoes the check-out instead of creating a
version: the latest version stays the one before the check-out. Properties sent in
`properties` are set before check-in and count as a change. Set a version comment by sending
Comment (33, multi-line text) in `properties`.

Files added with [AddObjectFile](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/AddObjectFile/index.md) whose content was
never uploaded and committed are dropped at check-in.

Check in from a session of the same user with the same `client_name` as the one that checked
the object out; see [CheckOut](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/CheckOut/index.md).

<a id="request"></a>

## Request: CheckInRequest

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

| Field | Type | Description |
|---|---|---|
| `obj_ver` | [`ObjVer`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjVer/index.md) | The checked-out version, by number. The LATEST marker is not accepted. |
| `obj_ver.obj_id` | [`ObjID`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjID/index.md) | The object. |
| `obj_ver.obj_id.type` | `int32` | The 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_id` | [`ItemID`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ItemID/index.md) | The ID of the object within its type, in `item_id.internal_id`. |
| `obj_ver.version` | [`ObjVerVersion`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjVerVersion/index.md) | The version. Usually `OBJ_VER_VERSION_TYPE_SPECIFIC` with `internal_version`. |
| `obj_ver.version.type` | [`ObjVerVersionType`](https://developer.m-files.com/APIs/gRPC-API/Reference/Enums/MFiles.ObjVerVersionType/index.md) | What `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_version` | `int32` | The 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_version` | `string` | Used only for objects in external repositories. Leave empty. |
| `obj_ver.version.external_repository_sort_key` | `int64` | Used only for objects in external repositories. Leave 0. |
| `properties[]` | repeated [`PropertyValue`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.PropertyValue/index.md) | Property values to add or replace before check-in, for example a version comment in Comment (33). Leave empty to check in as is. |
| `properties[].property_def` | `int32` | The property definition ID, for example 0 for "Name or title" or 100 for "Class". |
| `properties[].value` | [`TypedValue`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.TypedValue/index.md) | The value. Its `type` must match the data type of the property definition. |
| `properties[].value.is_null_value` | `bool` | True if the value is empty. `data` is then unset. |
| `properties[].value.type` | [`Datatype`](https://developer.m-files.com/APIs/gRPC-API/Reference/Enums/MFiles.Datatype/index.md) | The data type of the value. |
| `properties[].value.data` | [`TypedValueUnion`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.TypedValueUnion/index.md) | The value, in the member that matches `type`. Unset for an empty value. |
| `object_flags` | [`OBJECTOPFLAGS`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.OBJECTOPFLAGS/index.md) | Flags that control this operation. |
| `object_flags.all` | `bool` | Specifies all flags set; Including any future flags. |
| `object_flags.require_read_access_after_operation` | `bool` | Requires 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. |
| `object_flags.require_edit_access_after_operation` | `bool` | Requires 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. |
| `object_flags.disallow_name_change` | `bool` | If specified, the operation will fail if it causes a change in the object version's name. |
| `object_flags.require_change_permissions_access_after_operation` | `bool` | Requires 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. |
| `object_flags.require_full_access_after_operation` | `bool` | Requires 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. |
| `object_flags.change_acl_in_all_versions` | `bool` | Changes 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. |
| `object_flags.verify_check_in_wopi_locked_document` | `bool` | Verify the document is locked for WOPI Co-authoring or editing during checkin. |

<a id="response"></a>

## Response: CheckInResponse

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

| Field | Type | Description |
|---|---|---|
| `object_info` | [`ExtObjectInfo`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ExtObjectInfo/index.md) | The object after check-in, with its latest version, properties and ACL. |
| `object_info.is_visible` | `bool` | True if any version of the object is visible to the caller. |
| `object_info.object_info` | [`ObjectLevelInfo`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjectLevelInfo/index.md) | Object-level information, if `is_visible` is true. |
| `object_info.object_info.obj_id` | [`ObjID`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjID/index.md) | The object type and ID of the object. |
| `object_info.object_info.external_id_status` | [`ExtIDStatus`](https://developer.m-files.com/APIs/gRPC-API/Reference/Enums/MFiles.ExtIDStatus/index.md) | The 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). |
| `object_info.object_info.external_id` | `string` | The external ID (display ID) of this object. unset means that the external ID is the same as the internal ID. |
| `object_info.object_info.checked_out_version` | [`ObjVerVersion`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjVerVersion/index.md) | The version that is checked out. Version number 0 if the object is not checked out. |
| `object_info.object_info.checked_out_to_user_id` | `int32` | The ID of the user who has the object checked out. |
| `object_info.object_info.checked_out_to_user_name` | `string` | The user name of the user who has the object checked out. |
| `object_info.object_info.checked_out_to_host_name` | `string` | The host name of the computer to which the object was checked out. |
| `object_info.object_info.checked_out_at_utc` | [`google.protobuf.Timestamp`](https://protobuf.dev/reference/protobuf/google.protobuf/#timestamp) | The timestamp of the moment the object was checked out. |
| `object_info.object_info.checked_in_version` | [`ObjVerVersion`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjVerVersion/index.md) | The latest checked-in version. |
| `object_info.object_info.created_at_utc` | [`google.protobuf.Timestamp`](https://protobuf.dev/reference/protobuf/google.protobuf/#timestamp) | The time when the object was created (same as the PROPERTYDEF_CREATED propertyvalue). |
| `object_info.object_info.accessed_by_me_utc` | [`google.protobuf.Timestamp`](https://protobuf.dev/reference/protobuf/google.protobuf/#timestamp) | Accessed 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. |
| `object_info.object_info.guid` | `string` | The object GUID, in braces. The same value as `GetObjectGUID` returns. |
| `object_info.object_info.options` | [`ITEMFLAGS`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ITEMFLAGS/index.md) | Bit flags that provide additional information on the object (e.g. is the object deleted or a stub). |
| `object_info.object_info.original_vault_guid` | `string` | The GUID of the vault in which the object was originally created. |
| `object_info.object_info.original_vault_obj_id` | [`ObjID`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjID/index.md) | The original objid in the vault in which the object was originally created. |
| `object_info.object_info.associated_view_id` | [`ItemID`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ItemID/index.md) | Identifies the view associated with this object if any. |
| `object_info.object_info.external_repository_icon_id` | `string` | If not null, identifies the icon of the object. Currently applicable only to unmanaged objects. |
| `object_info.object_info.primary_view_id` | [`ItemID`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ItemID/index.md) | If 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. |
| `object_info.object_info.capabilities` | [`OBJECTCAPABILITYFLAGS`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.OBJECTCAPABILITYFLAGS/index.md) | Bit flags that provide information on the object capabilities. |
| `object_info.is_latest_version_visible` | `bool` | True if the latest version of the object is visible to the caller. |
| `object_info.latest_version` | [`ObjectVersionExWP`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjectVersionExWP/index.md) | The 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. |
| `object_info.latest_version.object_version` | [`ObjectVersionEx`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjectVersionEx/index.md) | Object info. |
| `object_info.latest_version.properties[]` | repeated [`PropertyValue`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.PropertyValue/index.md) | Property values, or an empty array. |
| `object_info.latest_version.acl` | [`AccessControlList`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.AccessControlList/index.md) | If set, ACL. |
| `object_info.latest_version.current_user_permissions` | [`ObjectPermissionsForClient`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjectPermissionsForClient/index.md) | If set, permissions of the object version. |
| `object_info.original_obj_ver` | [`ObjVer`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjVer/index.md) | The object version the request named, as sent. The version part may be unset. |
| `object_info.original_obj_ver.obj_id` | [`ObjID`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjID/index.md) | The object. |
| `object_info.original_obj_ver.version` | [`ObjVerVersion`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjVerVersion/index.md) | The version. Usually `OBJ_VER_VERSION_TYPE_SPECIFIC` with `internal_version`. |
| `updated_objects[]` | repeated [`ObjectVersionEx`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjectVersionEx/index.md) | Information about objects that were also updated during the operation. (represented by ObjectVersionEx structs.) |
| `updated_objects[].version_info` | [`ObjectVersion`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjectVersion/index.md) | Object Version information. |
| `updated_objects[].version_info.version` | [`ObjVerVersion`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjVerVersion/index.md) | The version number, as a specific version. |
| `updated_objects[].version_info.display_version` | `string` | The version label to show, if it differs from the version number; empty otherwise. |
| `updated_objects[].version_info.title` | `string` | The title (name) of the object in this version. |
| `updated_objects[].version_info.is_single_file_object` | `bool` | True if the object is a single-file document, which has exactly one file. |
| `updated_objects[].version_info.has_relationships_from_this` | `bool` | Note: this field is deprecated. True if relationships from this object version to one or more documents exist. |
| `updated_objects[].version_info.has_relationships_to_this` | `bool` | Note: this field is deprecated. True if relationships from one or more documents to this object version exist. |
| `updated_objects[].version_info.has_assignments` | `bool` | True if relationships from one or more assignments to this object version exist. |
| `updated_objects[].version_info.last_modified_at_utc` | [`google.protobuf.Timestamp`](https://protobuf.dev/reference/protobuf/google.protobuf/#timestamp) | When the version was last modified, in UTC. |
| `updated_objects[].version_info.files[]` | repeated [`File`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.File/index.md) | The files of this version. Each `file_ver` can be passed to `DownloadFile_Begin`. |
| `updated_objects[].version_info.object_version_flags` | [`OBJVERFLAGS`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.OBJVERFLAGS/index.md) | Bit flags that provide additional information on the object version. |
| `updated_objects[].version_info.class_id` | `int32` | The class ID of the version. |
| `updated_objects[].version_info.version_guid` | `string` | The GUID of this version. |
| `updated_objects[].version_info.base_properties[]` | repeated [`PropertyValue`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.PropertyValue/index.md) | Not filled by the object read methods; read the property values with `GetObjectVersionAndPropertiesOfMultipleObjects` or `GetProperties`. |
| `updated_objects[].version_info.primary_file` | [`FileID`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.FileID/index.md) | File ID of the primary file of a multi-file object, if the object is a multi-file object. |
| `updated_objects[].object_info` | [`ObjectLevelInfo`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjectLevelInfo/index.md) | Object-level information. |
| `updated_objects[].object_info.obj_id` | [`ObjID`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjID/index.md) | The object type and ID of the object. |
| `updated_objects[].object_info.external_id_status` | [`ExtIDStatus`](https://developer.m-files.com/APIs/gRPC-API/Reference/Enums/MFiles.ExtIDStatus/index.md) | The 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_id` | `string` | The 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_version` | [`ObjVerVersion`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjVerVersion/index.md) | The version that is checked out. Version number 0 if the object is not checked out. |
| `updated_objects[].object_info.checked_out_to_user_id` | `int32` | The ID of the user who has the object checked out. |
| `updated_objects[].object_info.checked_out_to_user_name` | `string` | The user name of the user who has the object checked out. |
| `updated_objects[].object_info.checked_out_to_host_name` | `string` | The host name of the computer to which the object was checked out. |
| `updated_objects[].object_info.checked_out_at_utc` | [`google.protobuf.Timestamp`](https://protobuf.dev/reference/protobuf/google.protobuf/#timestamp) | The timestamp of the moment the object was checked out. |
| `updated_objects[].object_info.checked_in_version` | [`ObjVerVersion`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjVerVersion/index.md) | The latest checked-in version. |
| `updated_objects[].object_info.created_at_utc` | [`google.protobuf.Timestamp`](https://protobuf.dev/reference/protobuf/google.protobuf/#timestamp) | The time when the object was created (same as the PROPERTYDEF_CREATED propertyvalue). |
| `updated_objects[].object_info.accessed_by_me_utc` | [`google.protobuf.Timestamp`](https://protobuf.dev/reference/protobuf/google.protobuf/#timestamp) | Accessed 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.guid` | `string` | The object GUID, in braces. The same value as `GetObjectGUID` returns. |
| `updated_objects[].object_info.options` | [`ITEMFLAGS`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ITEMFLAGS/index.md) | Bit flags that provide additional information on the object (e.g. is the object deleted or a stub). |
| `updated_objects[].object_info.original_vault_guid` | `string` | The GUID of the vault in which the object was originally created. |
| `updated_objects[].object_info.original_vault_obj_id` | [`ObjID`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjID/index.md) | The original objid in the vault in which the object was originally created. |
| `updated_objects[].object_info.associated_view_id` | [`ItemID`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ItemID/index.md) | Identifies the view associated with this object if any. |
| `updated_objects[].object_info.external_repository_icon_id` | `string` | If not null, identifies the icon of the object. Currently applicable only to unmanaged objects. |
| `updated_objects[].object_info.primary_view_id` | [`ItemID`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ItemID/index.md) | If 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.capabilities` | [`OBJECTCAPABILITYFLAGS`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.OBJECTCAPABILITYFLAGS/index.md) | Bit flags that provide information on the object capabilities. |

<a id="related"></a>

## Related methods

- [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.
- [AddObjectFile](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/AddObjectFile/index.md): Adds new document file to a document.
- [CheckOut](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/CheckOut/index.md): Checks out one object.
- [CheckInMultiple](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/CheckInMultiple/index.md): Checks in several objects in one call.
- [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.
