# IRPCDataExport.GetPropertyValueHistory

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) > [Data export](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCDataExport/index.md)

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

Badges: `Vault API / standard` `read` `session` `idempotent`

Gets how one property of each given object changed over the object's versions.

- **Service:** [Data export](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCDataExport/index.md) `MFiles.IRPCDataExport`
- **gRPC method:** `/MFiles.IRPCDataExport/GetPropertyValueHistory`
- **HTTP (mf-http-grpc):** `POST /grpc/v1/get-property-value-history`
- **Request:** [`GetPropertyValueHistoryRequest`](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCDataExport/GetPropertyValueHistory/index.md#request)
- **Response:** [`GetPropertyValueHistoryResponse`](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCDataExport/GetPropertyValueHistory/index.md#response)
- **Book and level:** Vault API, standard
- **Kind:** read
- **Session:** Required: the session ID from LogIn in the mfiles-session-id-bin metadata.
- **Idempotent:** yes
- **Returns metadata structure version:** no
- **Streaming:** none (unary)

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

## Remarks

- The history of an object is a list of samples, oldest first. A new sample starts only when
  the value changes, so unchanged versions do not repeat it. When the property was removed from
  a version, the sample has an unset value.
- Each sample's `timestamp` is the Last modified (21) value of the version where the value
  appeared.
- With `from` set, older samples are dropped, except the last one at or before `from`, so the
  value in effect at `from` is known. Unset `from` returns the full history.
- The response has one entry per requested object, in request order; objects the user cannot
  see get an empty history. Each object may appear only once ("Already exists." otherwise).

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

## Request: GetPropertyValueHistoryRequest

> 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 |
|---|---|---|
| `property_def` | `int32` | The ID of the property definition whose history is wanted. |
| `obj_ids[]` | repeated [`ObjID`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ObjID/index.md) | The objects. Each object at most once. |
| `obj_ids[].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_ids[].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_ids[].item_id.internal_id` | `int32` | The ID of the object or value list item. |
| `obj_ids[].item_id.external_repository_id` | [`ExternalRepositoryID`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ExternalRepositoryID/index.md) | Used only for objects in external repositories (external connectors). Leave it unset for objects stored in the vault. |
| `from` | [`google.protobuf.Timestamp`](https://protobuf.dev/reference/protobuf/google.protobuf/#timestamp) | The oldest point in time of interest; unset for the full history. |

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

## Response: GetPropertyValueHistoryResponse

> 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 |
|---|---|---|
| `historical_typed_value_arrays[]` | repeated [`HistoricalTypedValueArray`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.HistoricalTypedValueArray/index.md) | One history per requested object, in request order. See [HistoricalTypedValue](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.HistoricalTypedValue/index.md). |
| `historical_typed_value_arrays[].value[]` | repeated [`HistoricalTypedValue`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.HistoricalTypedValue/index.md) | Items. |
| `historical_typed_value_arrays[].value[].timestamp` | [`google.protobuf.Timestamp`](https://protobuf.dev/reference/protobuf/google.protobuf/#timestamp) | Historical value's timestamp. |
| `historical_typed_value_arrays[].value[].version` | `int32` | Object's version from which the value has been originated. |
| `historical_typed_value_arrays[].value[].value` | [`TypedValue`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.TypedValue/index.md) | The historical value. |
