# Concepts

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

HTML version: https://developer.m-files.com/APIs/gRPC-API/concepts/

The M-Files model behind the API: vaults and their metadata structure, objects and versions, properties, search, permissions and workflows.

- [Vault and metadata structure](https://developer.m-files.com/APIs/gRPC-API/concepts/vault-and-metadata-structure/index.md): How an M-Files vault is organized (object types, value lists, classes, property definitions, workflows) and the separate ID spaces that identify them.
- [Objects and versions](https://developer.m-files.com/APIs/gRPC-API/concepts/objects-and-versions/index.md): Object and version identity (ObjID, ObjVer), latest versus specific versions, check-out and check-in, files, deleted versus destroyed objects, GUIDs and external IDs.
- [Properties and values](https://developer.m-files.com/APIs/gRPC-API/concepts/properties-and-values/index.md): How property values are represented (PropertyValue, TypedValue), how to set each data type including lookups and empty values, and the rules the server enforces.
- [Search](https://developer.m-files.com/APIs/gRPC-API/concepts/search/index.md): The search condition model (expression, condition type, value), the conditions you need most with their exact message shapes, and how results, limits, sorting and paging behave.
- [Workflows](https://developer.m-files.com/APIs/gRPC-API/concepts/workflows/index.md): Workflows, states and state transitions as metadata; how to read the allowed transitions, change an object's state, and what electronic signatures add.
- [Permissions](https://developer.m-files.com/APIs/gRPC-API/concepts/permissions/index.md): Vault-level rights, object ACLs and named ACLs, effective permissions, setting the ACL of a new object, and what "access denied" looks like to a gRPC caller.
- [Metadata structure version and caching](https://developer.m-files.com/APIs/gRPC-API/concepts/metadata-structure-version-and-caching/index.md): The vault's metadata structure version (mfiles-metadata-version-bin trailer, GetMetadataStructureVersion), the per-list version numbers, and how to cache the metadata structure safely.
