# Electronic signatures (IRPCElectronicSignatures)

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.IRPCElectronicSignatures/

An interface for working with electronic signatures.

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

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

## Overview

Administrative repair operations for electronic signatures that are stored as separate signature
objects. Users sign by running a workflow state transition that requires an electronic
signature; these two methods only add placeholder signatures to an object or detach signatures
from it, for example to fix an object whose signatures are out of step with its workflow.

- [AddEmptyElectronicSignature](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCElectronicSignatures/AddEmptyElectronicSignature/index.md)
  creates unsigned (empty) signature objects for the signatures that the object's workflow
  defines.
- [DisconnectElectronicSignature](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCElectronicSignatures/DisconnectElectronicSignature/index.md)
  removes signatures from the object, optionally marking them invalidated.

Prerequisites shared by both methods:

- The caller needs the vault rights `license_allows_modifications`, `see_all_objects` and
  `edit_and_delete_all_objects` ([VaultAccess](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.VaultAccess/index.md)). Normal users get
  "Access denied.".
- The vault must have the metadata structure for separate signature objects: an object type
  with the alias `M-Files.QMS.Signature.ObjectType` and property definitions such as
  `M-Files.QMS.Signatures` (the object's reference to its signatures),
  `M-Files.QMS.Signature.Identifier`, `M-Files.QMS.Signature.Signer`,
  `M-Files.QMS.Signature.Reason` and `M-Files.QMS.Signature.Meaning`. Without it the calls fail
  with "Not found." naming the missing alias.
- `obj_ver` must name a specific version (`OBJ_VER_VERSION_TYPE_SPECIFIC`); the latest-version
  form fails with "The parameter is incorrect.".
- A signature is identified by the `signature_identifier` of the state transition that requires
  it (`StateTransition.signature_settings.signature_identifier`, see
  [ElectronicSignatureSettings](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ElectronicSignatureSettings/index.md)).

Both methods update the object's signatures property like a property change and return the
object after the change.

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

## Methods

| Method | Summary | Facts |
|---|---|---|
| [AddEmptyElectronicSignature](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCElectronicSignatures/AddEmptyElectronicSignature/index.md) | Adds empty (unsigned) separate signature objects to an object for one signature, or for all signatures that its workflow requires. | `write` `session` `returns metadata structure version` |
| [DisconnectElectronicSignature](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCElectronicSignatures/DisconnectElectronicSignature/index.md) | Removes one signature, or all signatures, from an object's signature references, optionally invalidating the removed signature objects. | `write` `session` `returns metadata structure version` |
