# IRPCObjectOperations.GetMultipleWorkflowStatesAndTransitions

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/GetMultipleWorkflowStatesAndTransitions/

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

Gets the states and transitions of several workflows in one call, in a compressed binary form.

- **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/GetMultipleWorkflowStatesAndTransitions`
- **HTTP (mf-http-grpc):** `POST /grpc/v1/get-multiple-workflow-states-and-transitions`
- **Request:** [`GetMultipleWorkflowStatesAndTransitionsRequest`](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetMultipleWorkflowStatesAndTransitions/index.md#request)
- **Response:** [`GetMultipleWorkflowStatesAndTransitionsResponse`](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetMultipleWorkflowStatesAndTransitions/index.md#response)
- **Book and level:** Vault API, core
- **Kind:** read
- **Session:** Required: a session (mfiles-session-id-bin metadata) or a session assertion (x-mf-session-assertion metadata).
- **Idempotent:** yes
- **Returns metadata structure version:** yes (in the mfiles-metadata-version-bin trailer)
- **Streaming:** none (unary)

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

## Remarks

Used by M-Files clients to fill their caches. The results are serialized and possibly compressed
byte arrays, not protobuf messages; use
[GetWorkflowStatesAndTransitions](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetWorkflowStatesAndTransitions/index.md)
instead.

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

## Request: GetMultipleWorkflowStatesAndTransitionsRequest

> 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 |
|---|---|---|
| `workflow_ids[]` | repeated `int32` | The IDs of the workflows. |
| `current_state` | [`TypedValue`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.TypedValue/index.md) | If the pointer is not unset, it points to a struct that specifies the current state of the object(s). If the pointer is unset, the bSelectable flags of all returned states will be true because transition rights cannot be checked in that case. |
| `current_state.is_null_value` | `bool` | True if the value is empty. `data` is then unset. |
| `current_state.type` | [`Datatype`](https://developer.m-files.com/APIs/gRPC-API/Reference/Enums/MFiles.Datatype/index.md) | The data type of the value. |
| `current_state.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. |
| `current_state.data.text` | `string` (oneof data) | The value of `DATATYPE_TEXT`. |
| `current_state.data.integer` | `int32` (oneof data) | The value of `DATATYPE_INTEGER`. |
| `current_state.data.real_number` | `double` (oneof data) | The value of `DATATYPE_REAL_NUMBER`. |
| `current_state.data.decimal_number` | `string` (oneof data) | Fixed precision number. |
| `current_state.data.date` | [`google.protobuf.Timestamp`](https://protobuf.dev/reference/protobuf/google.protobuf/#timestamp) (oneof data) | The value of `DATATYPE_DATE`: midnight UTC of the date. |
| `current_state.data.time` | [`google.protobuf.Timestamp`](https://protobuf.dev/reference/protobuf/google.protobuf/#timestamp) (oneof data) | Time. |
| `current_state.data.timestamp` | [`google.protobuf.Timestamp`](https://protobuf.dev/reference/protobuf/google.protobuf/#timestamp) (oneof data) | The value of `DATATYPE_TIMESTAMP`, in UTC. |
| `current_state.data.boolean` | `bool` (oneof data) | The value of `DATATYPE_BOOLEAN`. |
| `current_state.data.lookup` | [`Lookup`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.Lookup/index.md) (oneof data) | The value of `DATATYPE_LOOKUP`: one value list item or object. |
| `current_state.data.multi_select_lookup` | [`MultiSelectLookup`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.MultiSelectLookup/index.md) (oneof data) | The value of `DATATYPE_MULTI_SELECT_LOOKUP`: any number of value list items or objects. |
| `current_state.data.integer64` | `int64` (oneof data) | Integer (8 bytes). |
| `current_state.data.filetime` | [`google.protobuf.Timestamp`](https://protobuf.dev/reference/protobuf/google.protobuf/#timestamp) (oneof data) | FILETIME (64-bit integer). |
| `current_state.data.multi_line_text` | `string` (oneof data) | The value of `DATATYPE_MULTI_LINE_TEXT`. |
| `current_state.data.acl` | [`AccessControlList`](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.AccessControlList/index.md) (oneof data) | Access Control List. |

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

## Response: GetMultipleWorkflowStatesAndTransitionsResponse

> 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 |
|---|---|---|
| `states` | `bytes` | States. Compressed, unless pulUncompressedStatesLength is -1. |
| `uncompressed_states_length` | `uint32` | Receives the length of the uncompressed data. Set to -1 if pbytesData is not compressed. |
| `transitions` | `bytes` | Transitions. Compressed, unless pulUncompressedTransitionsLength is -1. |
| `uncompressed_transitions_length` | `uint32` | Receives the length of the uncompressed data. Set to -1 if pbytesData is not compressed. |

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

## Related methods

- [GetWorkflowStatesAndTransitions](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCObjectOperations/GetWorkflowStatesAndTransitions/index.md): Gets the states and transitions of the given workflow.
- [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.
