// M-Files Server gRPC API 26.11. Generated from the M-Files Server IDL; do not edit.
// Documentation: https://developer.m-files.com/APIs/gRPC-API/
syntax = "proto3";

package MFiles;

option csharp_namespace = "MFiles.Grpc";
option go_package = "github.com/M-Files/mfiles-grpc-api/go/mfiles;mfiles";
option java_multiple_files = true;
option java_package = "com.mfiles.grpc";
option objc_class_prefix = "MF_";

// ACL component status flags.
message ACCESSCONTROLLISTCOMPONENTSTATUSFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Component is deleted.
	bool deleted = 2;

	// The source of the component (= object/item) is linked via pseudo users (each pseudo-user contains an additional element in the beginning of its pseudo-user elements that maintains this linkage). This is the case with source items that use their own permissions as their automatic permissions.
	bool source_item_linked_via_pseudo_users = 3;
}

// Action flags (bitfields).
message ACTIONFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Change permissions.
	bool change_permissions = 2;

	// Delete.
	bool delete_object = 3;

	// Mark for archiving.
	bool mark_for_archiving = 4;

	// Assign to user.
	bool assign_to_user = 5;

	// Send notification.
	bool send_notification = 6;

	// Set properties.
	bool set_properties = 7;

	// Run VBScript.
	bool run_script = 8;

	// Create separate assignment.
	bool create_separate_assignment = 9;

	// Conver to PDF.
	bool convert_to_pdf = 10;
}

// Client setting flags.
message CLIENTSETTINGFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Theme flag
	bool theme = 2;

	// Client session timeout.
	bool session_timeout = 3;

	// Default Web Client.
	bool default_web_client = 4;

	// Addin Settings.
	bool add_in_settings = 5;

	// Default Web Client for IIS.
	bool default_web_client_iis = 6;

	// CORS settings of Classic web access.
	bool web_access_cors = 7;

	// Redirect classic web urls.
	bool migrate_classic_web_url = 8;

	// Migrate web links to online web app (Account layer).
	bool migrate_web_link_to_online_web = 9;

	// Custom banner flag
	bool custom_banner = 10;

	// Idle session timeout.
	bool idle_session_timeout = 11;
}

message COPYFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Copy all data. All other flags are ignored.
	bool all_data = 2;

	// Copy value list definitions.
	bool value_lists = 3;

	// Copy property definitions.
	bool property_definitions = 4;

	// Copy classes and class groups.
	bool object_classes = 5;

	// Copy users and user groups.
	bool user_accounts = 6;

	// Copy views.
	bool views = 7;

	// Copy documents and other objects (metadata).
	bool objects = 8;

	// Copy value list contents.
	bool value_list_items = 9;

	// Copy workflows.
	bool workflows = 10;

	// Copy connections to external locations.
	bool external_locations = 11;

	// Copy event log.
	bool event_log = 12;

	// Copy internal event handlers.
	bool event_handlers = 13;

	// Copy languages and translations.
	bool translations = 14;

	// Copy exported data sets.
	bool exported_data_sets = 15;

	// Copy scheduled export and import jobs.
	bool scheduled_export_import_jobs = 16;

	// Copy applications.
	bool applications = 17;

	// Copy files.
	bool files = 18;

	// Use the provided target vault GUID.
	bool use_provided_vault_guid = 33;
}

message EXPORTEDDATASETFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Present if the data set is disabled. If not present, the data set is enabled.
	bool disabled = 2;

	// Present if the data set execution is scheduled.
	bool scheduled = 3;

	// Exported data set flags.
	bool incremental = 4;
}

// Extended expression flags.
message EXPRESSIONEXFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Ignores object ACLs for subfolders listing.
	bool allow_empty_folders_for_missing_object_permissions = 2;

	// The search condition based on this expression is not compatible with full-text search.
	bool incompatible_with_full_text_search = 3;
}

message ExternalConnectionOptions {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Connections to external objects and value list items (connections to external databases and plug-in based sources such as web services).
	bool external_object_types = 2;

	// Connections to external sources (file/e-mail).
	bool external_sources = 3;

	// Data sets for reporting and metadata export.
	bool exported_data_sets = 4;

	// Scheduled export and import jobs (content replication, archiving/restoring).
	bool scheduled_export_import_jobs = 5;

	// Importing external users and groups e.g. from Active Directory.
	bool external_user_groups = 6;

	// Event handlers. A event handler might be a connection point to external data but not necessarily.
	bool event_handlers = 7;

	// Vault applications. This includes connections to external repositories.
	bool vault_applications = 8;

	// Remote indexes. IDOL or Smart Search search engines are usually located in different servers.
	bool remote_indexes = 9;

	// Enabling anonymous login.
	bool anonymous_login = 10;
}

message EXTLOCFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Present if the external location is disabled. If not present, the external location is enabled.
	bool disabled = 2;

	// Present if the server should keep monitoring the external location.
	bool monitor = 3;
}

// Facet search flags.
message FACETSEARCHFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Facet search is enabled.
	bool enabled = 2;

	// No ACL check on facet search.
	bool ignore_search_permissions = 3;

	// No ACL check on facet groups.
	bool ignore_group_permissions = 4;

	// No ACL check on individual facet values.
	bool ignore_value_permissions = 5;

	// Sort facet values in descending occurrence order within each facet group.
	bool sort_facets = 6;

	// If SortFacetValues is present, sort facet values in ascending occurrence order within each facet group.
	bool ascending_order = 7;
}

// Folder capability flags.
message FOLDERCAPABILITYFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	bool can_search_within_this_folder = 2;
}

// Folder data request flags.
message FOLDERDATAREQUESTFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Folder information is requested, e.g. View or ExternalView.
	bool folder_info = 2;

	// The exact location of the folder is requested, e.g. ViewLocation or FolderArray.
	bool location = 3;

	// The acl of the folder is requested.
	bool acl = 4;
}

// FolderListingItemGroupingMode flags.
message FOLDERLISTINGITEMGROUPINGMODEFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Group the listing objects by object type.
	bool objects_by_type = 2;

	// Group the view and folder items by their types.
	bool folders_by_type = 3;
}

// Combination of full-text search flag bitfields.
//
// How the text of a full-text (any-field) condition is matched. Set at least one of
// `search_metadata` and `search_filedata`. With neither `search_all_words` nor `search_any_words`,
// the text is a Boolean query such as `sales AND invoice`.
message FTSFLAGS {

	// All flags set, including any future flags. Not useful in searches.
	bool all = 1;

	// Also match other forms of the search words.
	bool use_stemming = 2;

	// Match objects that contain all of the search words.
	bool search_all_words = 3;

	// Match objects that contain any of the search words.
	bool search_any_words = 4;

	// Search the property values of objects.
	bool search_metadata = 5;

	// Search the contents of the files of objects.
	bool search_filedata = 6;

	// Run a semantic search against the vault's Aino index instead of a keyword search. Fails if the vault has no enabled Aino index. See [SearchObjects](mfiles:MFiles.IRPCSearch.SearchObjects) for what Aino results contain.
	bool search_aino = 7;
}

// Indexing request flags.
message INDEXINGREQUESTFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// The indexer accepts new and modified objects in the request.
	bool accept_modifications = 2;

	// The indexer accepts destructions of objects in the request.
	bool accept_destructions = 3;

	// The indexer accepts ACL modifications of objects in the request.
	bool accept_acl_modifications = 4;
}

message INDEXNOTIFICATIONFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Re-indexing is required, because of changes in property definitions.
	bool reindex_required_propertydef_changed = 2;

	// Re-indexing is required, because new language package has been installed.
	bool reindex_required_language_changed = 3;

	// Re-indexing is required.
	bool reindex_required_generic = 4;

	// Indexing is in progress.
	bool indexing_in_progress = 5;

	// Rebuild is in progress.
	bool rebuild_in_progress = 6;

	// Active filedata index is required.
	bool dtsearch_active_filedata_index_required = 7;

	// Active metadata index is required.
	bool dtsearch_active_metadata_index_required = 8;
}

// Item (value list item or object) flags.
message ITEMFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Is the item a stub (refers to a full object in another vault). This could be link object or symbolic link.
	bool is_shortcut = 2;

	// Is the item deleted. The flag is not persistent in the database.
	bool is_deleted = 3;

	// Is the Recently Accessed By field valid (field can be valid and zero if user hasn't accessed the object). The flag is not persistent in the database.
	bool is_accessed_by_valid = 4;

	// Does the item have shared files. The flag is not persistent in the database.
	bool has_shared_files = 5;

	// Is the item a conflict object.
	bool is_conflict_object = 6;

	// Is a normal object i.e. no flags. This has the same meaning as ITEMFLAG_NONE (or actually no flags of ITEMFLAGS_BITMASK_SPECIALFLAGS). This flag allows us to combine all flags by using bitwise OR without losing information. The flag is not persistent in the database.
	bool is_normal = 8;

	// Is a view object? View objects are objects which represents view folders but can have metadata associated with. They act as shortucts to the actual views when found e.g. through quick search.
	bool is_view = 9;

	// The object has external data associated with it, for example a promoted object. Not set for objects that are only linked with an external file source.
	bool has_external_data = 10;

	// Is an unmanaged reduced object type item.
	bool is_referred_external_object = 11;

	// Is object type item from an external origin. The flag is not persistent in the database.
	bool is_external_origin = 12;

	// Is object omitted from database. For example, a basic tier object.
	bool is_omitted_from_database = 13;

	// Is the object a pending-upload draft (created checked out; file content not yet committed). Persisted.
	bool is_draft = 14;
}

// We specify these values as bitfields because multiple values are combined (bitwise ORed) when
// requesting and returning available licensed features. For example, see the DoesLicenseHaveFeature
// RPC method for more details.
message LICENSEDPRODUCTFEATURES {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// OCR.
	bool ocr = 2;

	// 21 CFR Part 11.
	bool electronic_signatures = 3;

	// Data export and Reporting.
	bool reporting = 4;

	// OCR hyper-compression.
	bool ocr_hyper_compression = 5;

	// Intelligent Metadata Layer.
	bool intelligent_metadata_layer = 6;

	// Web User Interface.
	bool web_user_interface = 7;

	// Google g suite.
	bool embedded_google_gsuite = 8;

	// SharePoint Online.
	bool embedded_share_point = 9;

	// Salesforce Online.
	bool embedded_salesforce = 10;

	// Esri ArcGIS.
	bool embedded_arc_gis = 11;

	// Outlook Add-in.
	bool outlook_addin = 12;

	// Aino Usage: Semantic Index.
	bool aino_insights = 13;

	// AI Search.
	bool ai_search = 14;
}

// Metadata selector flags.
message METADATASTRUCTURESELECTORFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Select new items (items that do not exist in the target vault).
	bool select_new = 2;

	// Select existing items (items that exist in the target vault).
	bool select_existing = 3;

	// Selects the new dependencies of selected item (i.e. they do not exist in the target vault).
	bool include_new_dependencies = 4;

	// Selects the existing dependencies of selected item (i.e. they exist in the target vault).
	bool include_existing_depenencies = 5;
}

// Notification data request flags.
message NOTIFICATIONDATAREQUESTFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// To get number of checked out objects from current user and current computer.
	bool checked_out_to_me_on_this_computer = 2;

	// To get number of checked out objects by current user.
	bool checked_out_to_me = 3;

	// To get number of assigned objects to current user.
	bool assigned_to_me = 4;
}

// Notification flags (bitfields).
message NOTIFICATIONFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Notifications enabled.
	bool is_enabled = 2;

	// Combine the day's notifications into a single message.
	bool send_digest = 3;

	// Exclude notifications of events caused by me.
	bool exclude_self_triggered = 4;

	// Notifications are recurring (not only appear once per a matching object).
	bool recurring = 5;
}

// Object archiving flags.
message OBJARCHIVINGFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// If present, existing target files are overwritten. If not present, job fails if a target file already exists.
	bool overwrite_existing_files = 2;

	// If present, only the latest version is archived.
	bool archive_latest_version_only = 3;

	// If present and archiving full objects, the archived objects are destroyed.
	bool destroy_archived_objects = 4;

	// If present, the 'Marked for archiving' property is reset upon archiving.
	bool reset_marked_for_archiving = 5;

	// If present, data files are archived instead of document files.
	bool archive_data_files = 6;

	// If present, files are also saved as PDF/A.
	bool create_archive_pdfs = 7;

	// If present, destroyed objects are archived.
	bool archive_destroyed_objects = 8;

	// If present, archive location represents a directory.
	bool target_path_is_directory = 9;

	// If present, delta timestamp is not applied (even if provided as non-FILETIME_ZERO).
	bool ignore_last_run_timestamp = 10;

	// If present, search filter is not applied (even if provided).
	bool ignore_search_conditions = 11;

	// If present, dropout information is exported if a previously exported object is not anymore part of the export set.
	bool export_drop_out_information = 12;

	// If present, vault content will be exported.
	bool export_content = 13;

	// If present, vault metadata structure will be exported.
	bool export_structure = 14;

	// If present, values of the selected values lists will be exported.
	bool export_value_list_values = 15;

	// If present, private settings of the selected views will be exported.
	bool export_private_view_settings = 16;

	// If present, migrated objects will be exported as internal objects without <externalrepository> element.
	bool export_migrated_as_internal = 17;

	// If present, workspace tabs will be exported.
	bool export_workspace_tabs = 18;
}

// Object access rights.
message ObjectAccess {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Read.
	bool read = 2;

	// Edit.
	bool edit = 3;

	// Change security settings.
	bool change_permissions = 4;

	// Delete.
	bool delete_object = 5;

	// Attach objects.
	bool attach_objects = 6;
}

// Object capability flags.
message OBJECTCAPABILITYFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	bool can_have_history = 2;

	bool can_have_relationships = 3;

	bool can_edit_old_versions = 4;

	bool can_delete = 5;

	bool can_destroy = 6;

	bool can_undelete = 7;

	bool can_rename = 8;

	bool can_edit_metadata = 9;

	bool can_edit_assignments = 10;

	bool can_edit_workflows = 11;

	bool can_edit_files = 12;

	bool can_edit_version_comments = 13;

	bool can_convert_single_multi_file = 14;

	bool can_add_and_remove_files = 15;

	bool can_change_file_type = 16;

	bool can_change_permissions = 17;
}

// Object change flags (bitfields).
message OBJECTCHANGES {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// The metadata of the object was changed.
	bool metadata = 2;

	// The content of one or more files of the object was changed. Also includes a file deletion because the overall file content is modified by this change.
	bool file_content = 3;

	// The ACL of the object was changed.
	bool acl = 4;

	// The special method of adding a version tag with removing it from the other versions of the object.
	// const OBJECTCHANGES OBJECTCHANGE_WORKFLOW_STATE = 1 << 4;  //!< The workflow state of the object was changed.
	bool version_tag_migration = 5;
}

// Object data request flags.
message OBJECTDATAREQUESTFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Object information is requested, e.g. ObjectVersionEx.
	bool object_version = 2;

	// Property values are requested, e.g. PropertyValueArray.
	bool properties = 3;

	// Access control list is requested, e.g. ACL.
	bool acl = 4;

	// Object permissions for client is requested, e.g. ObjectPermissionsForClient.
	bool current_user_permissions = 5;

	// Display properties are requested, e.g. PropertyValueArray.
	bool properties_for_display = 6;

	// Related objects are requested, e.g. RelationshipGroup.
	bool relationships = 7;

	// Collection member objects are requested, e.g. RelationshipGroup.
	bool collection_member_relationships = 8;

	// Comment history is requested, e.g. ObjVerProperties.
	bool comments = 9;

	// Event subscription is requested, e.g. EventSubscription.
	bool user_event_subscriptions = 10;

	// ObjectActivities is requested, e.g. ObjectActivitiesResponse.
	bool object_activities = 11;

	// Latest version comment is requested, e.g. LatestVersionComment.
	bool latest_version_comment = 12;
}

// Object file flags.
message OBJECTFILEFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Next available value.
	bool can_be_edited_externally = 2;
}

// Object operation flags.
message OBJECTOPFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// 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.
	bool require_read_access_after_operation = 2;

	// 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.
	bool require_edit_access_after_operation = 3;

	// If specified, the operation will fail if it causes a change in the object version's name.
	bool disallow_name_change = 4;

	// 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.
	bool require_change_permissions_access_after_operation = 5;

	// 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.
	bool require_full_access_after_operation = 6;

	// 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.
	bool change_acl_in_all_versions = 7;

	// Verify the document is locked for WOPI Co-authoring or editing during checkin.
	bool verify_check_in_wopi_locked_document = 8;
}

// Object type access rights.
message ObjectTypeAccess {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// See name.
	bool see_name = 2;

	// Full control (combination of all individual access rights).
	bool add_new_items = 3;
}

// Category flags (bitfields).
message OBJECTVERSIONACTIVITYCATEGORYFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Metadata.
	bool metadata = 2;

	// FileContent.
	bool file_content = 3;

	// Comments.
	bool comments = 4;
}

// Object version file activity action type flags.
message OBJECTVERSIONFILEACTIVITYFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// If present, indicates that the file is added.
	bool added = 2;

	// If present, indicates that the file is removed.
	bool removed = 3;

	// If present, indicates that the file is renamed.
	bool renamed = 4;

	// If present, indicates that the file content is changed.
	bool content_changed = 5;

	// If present, indicates that the file has not changed.
	bool retained = 6;
}

// Object version property activity action type flags.
message OBJECTVERSIONPROPERTYACTIVITYFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// If present, indicates that the property is added.
	bool added = 2;

	// If present, indicates that the property is removed.
	bool removed = 3;

	// If present, indicates that the property is changed.
	bool changed = 4;

	// If present, indicates that the property hasn't changed.
	bool retained = 5;
}

// Object archiving flags.
message OBJRESTORINGFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// If present, archive location represents a directory.
	bool target_path_is_directory = 2;

	// If present, replace existing data with the incoming data.
	bool overwrite_existing_versions = 3;

	// If present, delete the archive once restored.
	bool delete_restored_archive = 4;

	// If present, use the overriding permissions.
	bool override_permissions = 5;

	// DEPRECATED, DO NOT REUSE THE VALUE: const OBJRESTORINGFLAG OBJRESTORINGFLAG_RESETDELTATIMESTAMPS	= ( 1 << 5 );	//!< If present, delta timestamps are reset on export jobs.
	bool restore_check_out_state = 6;

	// If present, object destructions are not restored.
	bool do_not_destroy_objects = 7;

	// If present, incoming names can be used as aliases.
	bool use_names_as_alises = 8;

	// If present, all external connections of imported object types are disabled.
	bool disable_external_object_types = 9;

	// If present, all external connections of imported user groups are disabled.
	bool disable_external_user_groups = 10;

	// If present, all imported event handlers are deactivated.
	bool disable_event_handlers = 11;

	// If present, use the default permissions from object types.
	bool use_object_type_default_permissions = 12;

	// If present, new or changed definitions of automatic permissions are activated on objects.
	bool activate_automatic_permissions = 13;

	// If present, ignore the definitions of automatic permissions from the imported objects.
	bool ignore_automatic_permissions = 14;

	// Forces the target vault to keep existing structure item guids.
	bool do_not_update_structure_item_ids = 15;

	// Prevents the 'done' file output.
	bool omit_done_file = 16;

	// If present, all custom code in imported property definitions is deactivated.
	bool disable_code_in_property_definitions = 17;

	// If present, all custom code in imported workflows is deactivated.
	bool disable_code_in_workflows = 18;

	// If present, unchanged or signed custom code is always allowed in import.
	bool allow_signed_code = 19;

	// If present, the views with an older last modified date and time are imported.
	bool import_older_views = 20;
}

// Object type flags (bitfields).
message OBJTYPEFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Can objects have files?
	bool can_have_files = 2;

	// True if new items (value lists) or new objects (object types) can be added. The caller also needs `ValueList.object_type_permissions.can_user_add_new_items`.
	bool can_add_items = 3;

	// True if the list is marked external. Built-in lists such as Users (6), Workflows (7) and User groups (16) also have this flag.
	bool is_external = 4;

	// Show the creation command for this type in the task pane?
	bool show_new_object_command_in_task_pane = 5;

	// Is external connection currently disabled?
	bool is_external_connection_disabled = 6;

	// Can the contents of value list or object type be translated?
	bool is_translatable = 7;

	// True if the object type has its own storage of property values for searches.
	bool is_separate_property_storage = 8;

	// Is using this object type as a grouping level in views disallowed?
	bool disallow_as_grouping_level = 9;

	// Is basic tier object type?
	bool basic = 10;
}

// Object version flags.
message OBJVERFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Completed by either approving or rejecting the assignment (e.g., indicates an assignment that has been marked complete).
	bool is_assignment_completed = 2;

	// HasRelatedObjects (i.e. indicates if the object has relations to/from other objects).
	bool has_related_objects = 3;

	// Completed by rejecting the assignment.
	bool is_assignment_rejected = 4;

	// HasFileDuplicates (i.e. indicates if the object has file duplicates).
	bool has_file_duplicates = 5;
}

// Optimize vault flags.
message OPTIMIZEVAULTFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Thorough or quick optimization? In quick mode, only the indexes of the metadata database are refreshed. Thorough optimization performs a garbage-collection in the database and rebuilds indexes. The quick mode optimization is an online activity whereas the thorough mode optimization takes the vault offline.
	bool is_thorough = 2;

	// Directs the optimization job to destroy garbage-collected data files that stand for destroyed objects.
	bool garbage_collect_files = 3;
}

// Property definition access rights.
message PropertyDefAccess {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// See.
	bool see = 2;

	// Full control (combination of all individual access rights).
	bool edit_values = 3;
}

// Property definition flags (bitfields).
message PROPERTYDEFFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Are objects searchable by this property?
	bool can_use_in_search = 2;

	// Are history versions of objects searchable by this property?
	bool can_use_in_history_search = 3;

	// Should only the values matching the property filter be shown on the metadata card?
	bool show_only_filtered_values = 4;
}

// Search flags.
//
// Leave unset for the usual search: the latest version of each object, all object types in one
// relevance-ranked result list.
message SearchFlags {

	// All flags set, including any future flags. Do not use in searches.
	bool all = 1;

	// Also match older versions; each object is returned once. Cannot be combined with `sorting`, and `GetObjectCountInSearch` rejects it.
	bool look_in_all_versions = 2;

	// Return the latest visible version for each matching document.
	bool return_latest_visible_version = 3;

	// Search each object type separately and merge the results. The `limit` then applies to each object type, and `pages_with_more_results` lists the object types whose results were cut.
	bool separately_search_in_each_object_type = 4;

	// If a search with an external ID condition on an external object type finds nothing, refresh the object type from its external database and search again.
	bool allow_quick_refresh_for_external_object_types = 5;

	// Do not rank the results by relevance.
	bool disable_relevancy_ranking = 6;

	// Allows only specified object types to be searched separately.
	bool separately_search_specific_object_types = 7;

	// Extends the search to include unmanaged objects.
	bool include_unmanaged_objects = 8;

	// Ensures that up to the specified maximum number of results are returned from each repository.
	bool individual_limit_for_each_external_repository = 9;
}

// Search status flags.
message SEARCHSTATUSFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Multi-phase OT search is needed.
	bool multiphase_object_type_search_needed = 2;

	// Wildcard expansion limit has been exceeded (but some results has been returned anyway).
	bool wildcard_expansion_limit_exceeded = 3;

	// Data returned by search may be out of date.
	bool may_contain_stale_data = 4;

	// Requested sorting is not supported and result set was established using the default sorting (relevance).
	bool resorted_to_default_sort = 5;

	// Requested sorting is not supported and result set was established using the default sorting (relevance) because there are too many matching results for sorting.
	bool resorted_to_default_sort_too_many_results = 6;

	// Data returned by search was sorted by the engine (Global Sorting).
	bool sorted_by_engine = 7;
}

// Server access rights (bitfields).
message ServerAccess {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Create, modify and remove logins and their roles.
	bool manage_logins = 2;

	// Back up all vaults.
	bool backup_vaults = 3;

	// Back up the master database.
	bool backup_master_database = 4;

	// Restore vault from backup.
	bool restore_vault = 5;

	// Create, modify and remove vaults.
	bool manage_vaults = 6;

	// Shut down the server.
	bool shutdown = 7;

	// Log in to any vault, even if no user account in the target vault.
	bool log_in_to_any_vault = 8;

	// Perform any operation in any vault (after logging in to the vault).
	bool full_control_of_vaults = 9;

	// Restore master database from backup.
	bool restore_master_database = 10;

	// Manage scheduled jobs.
	bool manage_jobs = 11;

	// Edit M-Files Web Access settings.
	bool edit_web_access_settings = 12;

	// Set or get license codes and serial numbers.
	bool manage_licenses = 13;

	// Set or get the values in PROPERTIES table.
	bool edit_server_properties = 14;

	// Run arbitrary code (e.g. VBScript) on the server.
	bool run_code = 15;

	// Send customized e-mail notifications for any recipient.
	// RESERVED FOR CLOUD INFRA: const SERVERACCESS SERVERACCESS_ACT_AS_SERVER = 1 << 15;  //!< Perform operations only allowed to the M-Files Server itself. Users should never have this access.
	bool send_server_messages = 16;
}

// Sort flags.
message SortFlags {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Allows resorting to default sorting if the specified sorting is not supported. If this flag is not present, an unsupported sort request causes an error.
	bool allow_resorting_to_default_sort = 2;
}

// Sort rule flags.
message SortRuleFlags {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Ascending or descending? The default is ascending. If this flag is present, the order is descending.
	bool sort_descending = 2;
}

// Search results count flags.
message SRCOUNTFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// If available, the reported result count is an exact measure.
	bool exact_measure = 2;

	// If available, the reported result count is not an exact measure but it indicates that an exact count is more than the reported count.
	bool more_than = 3;

	// If available, the reported result count is based on the added items only.
	bool multi_phase_initial = 4;

	// If available, the reported result count is to be associated with a group without actual results.
	bool multi_phase_count_only = 5;

	// If available, the reported result count supports multi-phase search, and it is to be associated with the initial result count rather than the total count.
	bool multi_phase = 6;

	// Identifies a search results count.
	bool additional_items = 7;
}

// Search results page request flags.
message SRPREQUESTFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// If available, the page request is for an unseen page.
	bool unseen_page = 2;

	// If available, the original conditions are ignored. This can be used when including ObjIDs. Do not use with SRPREQUEST_UNSEENPAGE.
	bool ignore_original_conditions = 3;

	// If available, the page request is for an already seen page.
	bool seen_page = 4;

	// If available, the page request is initial and for an unseen page. Do not use with SRPREQUEST_SEENPAGE.
	bool initial_page = 5;
}

// Server roles (bitfields).
message SRVROLES {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// System administrator (can perform any operation on the server).
	// [ name( "vaultCreator" ) ] const SRVROLES SRVROLE_VAULT_CREATOR		= ( 1 << 1 );  //!< Can create, modify and delete vaults. Can also restore vaults.
	// [ name( "backupOperator" ) ] const SRVROLES SRVROLE_BACKUP_OPERATOR		= ( 1 << 2 );  //!< Can back up vaults.
	bool system_administrator = 2;

	// Can log in. A login that does not have this role is disabled and cannot log in even if the login has the sysadmin role.
	bool can_log_in = 5;

	// This special role indicates that the M-Files login does not yet have a valid password. MFAdmin uses this flag to force the user to define the password.
	bool invalid_password = 6;
}

// State condition flags (bitfields).
message STATECONDFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Manual criteria.
	bool search_conditions = 2;

	// VBScript code.
	bool code = 3;
}

// State flags (bitfields).
message STATEFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Technical state.
	bool technical_state = 2;
}

// Get text content option flags (bitfields).
message TEXTCONTENTEXTRACTIONFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Unpack container files.
	bool unpackcontainers = 2;

	// Use plain text cache. This makes other options, such as UNPACKCONTAINERS and max. content size ineffective. The operation returns the text content in same way it is returned for e.g. search indexing.
	bool useplaintextcache = 3;
}

// Vault access rights (bitfields).
message VaultAccess {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Create a new document.
	bool create_objects = 2;

	// See all documents (including deleted ones).
	bool see_all_objects = 3;

	// Undelete documents.
	bool undelete_objects = 4;

	// Destroy documents.
	bool destroy_objects = 5;

	// Force undo check-out.
	bool force_undo_checkout = 6;

	// Change documents' security settings.
	bool change_object_permissions = 7;

	// Change meta data structure.
	bool change_metadata_structure = 8;

	// Manage user accounts.
	bool manage_users = 9;

	// Add/remove the full control role.
	// OBSOLETE: const VAULTACCESS VAULTACCESS_MANAGE_OWN_VIEWS = ( 1 << 9 );  //!< Add/remove user-specific views.
	bool change_full_control_role = 10;

	// Verify and/or fix vault.
	bool verify_vault = 11;

	// Modify all documents (excluding changing security settings).
	// OBSOLETE: const VAULTACCESS VAULTACCESS_MARK_FOR_ARCHIVING = ( 1 << 12 );  //!< Mark documents for archiving or clear archive markers.
	bool edit_and_delete_all_objects = 12;

	// Archive documents or old versions of documents.
	bool archive = 13;

	// Restore contents from an archive.
	// OBSOLETE: const VAULTACCESS VAULTACCESS_SEE_VALUELISTS_CONTENTS = ( 1 << 15 );  //!< See the contents of value lists.
	bool restore_from_archive = 14;

	// Manage (e.g. add, modify, remove) value list items from client side.
	bool manage_value_list_items_from_client = 15;

	// Add/modify/remove external locations.
	bool manage_external_locations = 16;

	// The license of the user allows modifications.
	bool license_allows_modifications = 17;

	// Enable or disable event logging, delete a range of events, and get all events of the vault.
	bool manage_events = 18;

	// Can create, modify and delete traditional folders.
	// OBSOLETE: const VAULTACCESS VAULTACCESS_DEFINE_TEMPLATES = ( 1 << 21 );  //!< Can define templates.
	bool manage_traditional_folders = 19;

	// Can change the state of an object regardless of the state's ACL.
	bool change_object_states = 20;

	// Can modify all assignment information.
	bool change_assignments = 21;

	// Can create, modify and delete common views.
	bool manage_common_views = 22;

	// Can manage common display (UI) settings.
	// OBSOLETE: const VAULTACCESS VAULTACCESS_SEE_USERS_AND_GROUPS = ( 1 << 26 );  //!< Can see the contents (names) of the Users and User Groups lists.
	bool manage_common_uisettings = 23;

	// Can create, modify and delete common notification rules.
	bool manage_common_notification_rules = 24;

	// Sees deleted objects. However, seeing a deleted object requires the user to have read access to the object or the vault-level SeeAllDocs access right.
	bool see_deleted_objects = 25;

	// Can materialize views.
	bool materialize_views = 26;

	// Can create, modify and delete workflows.
	bool manage_workflows = 27;

	// Read meta data structure.
	bool read_all_metadata_structure = 28;

	// Can create and modify private views.
	bool manage_private_views = 29;

	// Can create and modify private notification rules.
	bool manage_private_notification_rules = 30;

	// Can run signed code.
	bool run_signed_code = 31;

	// Can manage scheduled jobs.
	bool manage_scheduled_jobs = 32;

	// Can trigger data export jobs.
	bool trigger_data_export = 33;

	// Can generate event logs.
	bool generate_event_logs = 34;
}

// Vault roles (bitfields).
message VAULTROLES {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Can perform any activity in the vault.
	bool full_control = 2;

	// Can log in to the vault.
	bool can_log_in = 3;

	// Can create new documents.
	bool can_create_objects = 4;

	// Sees all documents in listings, regardless of security settings and deletion state.
	bool can_see_all_objects = 5;

	// Can undelete previously deleted documents.
	bool can_undelete_objects = 6;

	// Has permission to permanently destroy documents.
	bool can_destroy_objects = 7;

	// Has permission to undo a check-out performed by another user.
	bool can_force_undo_checkout = 8;

	// Can change the security settings of all documents and modify all documents.
	bool can_change_all_object_permissions = 9;

	// Can modify the meta data structure of the vault (propertydefs, profiles, value lists etc.).
	bool can_change_metadata_structure = 10;

	// Can create, edit and delete user accounts. Cannot add or remove the Vault Manager role.
	bool can_manage_users = 11;

	// An internal user of the vault. This role separates internal enad external users in the vault.
	bool is_internal_user = 12;

	// Can create, modify and delete traditional folders.
	// OBSOLETE: const VAULTROLES VAULTROLE_DEFINE_TEMPLATES = 1 << 12;  //!< Can define templates.
	bool can_manage_traditional_folders = 13;

	// Can create, modify and delete common views.
	bool can_manage_common_views = 14;

	// Can create, modify and delete workflows. Modifying event handlers within the workflow still requires SERVERACCESS_RUN_CODE.
	bool can_manage_workflows = 15;

	// Cannot create or modify private views.
	bool cannot_manage_private_views = 16;

	// Anonymous role.
	bool anonymous = 17;

	// Can run code on the server hosting this vault. Not included in VAULTROLE_FULL_CONTROL, and cannot be ordinarily granted by it.
	bool run_code_on_server = 18;
}

// View flags.
message VIEWFLAGS {

	// Specifies all flags set; Including any future flags.
	bool all = 1;

	// Materialized/indexed view.
	bool indexed = 2;

	// The search conditions of the view definition (excluding the grouping levels) are not compatible with full-text search.
	bool incompatible_with_full_text_search = 3;

	// Sorting search results is disabled.
	bool sort_across_all_pages_disabled = 5;
}

// Indirect property ID level type enumeration.
enum AccessControlSubjectType {

	// The subject type is unknown.
	ACCESS_CONTROL_SUBJECT_TYPE_UNKNOWN = 0;

	// The subject is a specific user.
	ACCESS_CONTROL_SUBJECT_TYPE_USER = 1;

	// The subject is a user group.
	ACCESS_CONTROL_SUBJECT_TYPE_USER_GROUP = 2;

	// The subject is a pseudo user.
	ACCESS_CONTROL_SUBJECT_TYPE_PSEUDO_USER = 3;
}

// Account type enumeration.
enum AccountType {

	// Uninitialized.
	ACCOUNT_TYPE_UNINITIALIZED = 0;

	// M-Files authentication.
	ACCOUNT_TYPE_MFILES = 1;

	// Windows authentication.
	ACCOUNT_TYPE_WINDOWS = 2;
}

// ACL enforcing modes.
enum ACLEnforcingMode {

	// Use the ACL previously stored for the object as a provided ACL (the previous ACL is typically the consolidated ACL (as if it was generated by the UI)).
	ACLENFORCING_MODE_USE_PREVIOUS = 0;

	// Use the caller-provided ACL.
	ACLENFORCING_MODE_USE_PROVIDED = 1;

	// Use the ACL calculated from the properties as a provided ACL.
	ACLENFORCING_MODE_RESET_TO_DEFAULT = 2;

	// Do not touch the object ACL.
	ACLENFORCING_MODE_DISALLOW_CHANGES = 3;
}

// ACL mode enumeration.
enum ACLMode {

	// Simple mode (always the case in versions before 8.0).
	ACLMODE_SIMPLE = 0;

	// Automatic permissions with automatic components.
	ACLMODE_COMPONENT_BASED = 1;
}

// Enumeration for different conditions to status information.
enum ApplicationLicenseStatus {

	// Status unknown, check the description.
	APPLICATION_LICENSE_STATUS_UNKNOWN = 0;

	// No license is needed or used.
	APPLICATION_LICENSE_STATUS_NOT_NEEDED = 1;

	// No license is installed.
	APPLICATION_LICENSE_STATUS_NOT_INSTALLED = 2;

	// Installed but status unknown.
	APPLICATION_LICENSE_STATUS_INSTALLED = 3;

	// License is valid.
	APPLICATION_LICENSE_STATUS_VALID = 4;

	// Invalid license with condition or validity error.
	APPLICATION_LICENSE_STATUS_INVALID = 5;

	// License with format/authenticity error.
	APPLICATION_LICENSE_STATUS_FORMAT_ERROR = 6;

	// Trial license.
	APPLICATION_LICENSE_STATUS_TRIAL = 7;

	// Running in grace period, immediate renew suggested.
	APPLICATION_LICENSE_STATUS_GRACE_PERIOD = 8;
}

// Application task queue processing behavior enumeration. Defines the logic how tasks get consumed from the queue.
enum ApplicationTaskQueueProcessingBehavior {

	// Tasks get processed in the same order they were added to the queue.
	APPLICATION_TASK_QUEUE_PROCESSING_BEHAVIOR_SEQUENTIAL = 0;

	// Tasks may be processed concurrently without any particular order.
	APPLICATION_TASK_QUEUE_PROCESSING_BEHAVIOR_CONCURRENT = 1;
}

// The states the application task can be in.
enum ApplicationTaskState {

	// Task is waiting for processing in queue.
	APPLICATION_TASK_STATE_WAITING = 0;

	// Task is being processed at the moment.
	APPLICATION_TASK_STATE_IN_PROGRESS = 1;

	// Task processing has completed.
	APPLICATION_TASK_STATE_COMPLETED = 2;

	// Task has failed.
	APPLICATION_TASK_STATE_FAILED = 3;

	// Task was canceled.
	APPLICATION_TASK_STATE_CANCELED = 4;

	// State is not relevant for the task.
	APPLICATION_TASK_STATE_NONE = 5;
}

// Assignment class type.
enum AssignmentClassType {

	// The assignment refers a task that can be completed.
	ASSIGNMENT_CLASS_TYPE_TASK_ASSIGNMENT = 0;

	// The assignment refers to a approval job, that can be either approved or rejected.
	ASSIGNMENT_CLASS_TYPE_APPROVAL_ASSIGNMENT = 1;
}

// Authentication methods for [LogIn](mfiles:MFiles.IRPCLogin.LogIn).
enum AuthDataType {

	// Not a valid choice; `LogIn` fails with `E_INVALIDARG`.
	AUTH_DATA_TYPE_UNDEFINED = 0;

	// First step of the M-Files challenge login, used by M-Files clients. Applications use `AUTH_DATA_TYPE_CREDENTIALS` instead.
	AUTH_DATA_TYPE_MFILES_LEG1 = 1;

	// Second step of the M-Files challenge login.
	AUTH_DATA_TYPE_MFILES_LEG2 = 2;

	// Windows authentication (SSPI tokens), possibly over several calls.
	AUTH_DATA_TYPE_WINDOWS = 3;

	// An authentication plug-in, such as single sign-on through an identity provider. See [GetAuthenticationConfiguration](mfiles:MFiles.IRPCLogin.GetAuthenticationConfiguration).
	AUTH_DATA_TYPE_PLUGIN = 4;

	// User name and password in one call. The simplest method for applications; use it over TLS.
	AUTH_DATA_TYPE_CREDENTIALS = 5;

	// Anonymous access, only to vaults configured to allow it.
	AUTH_DATA_TYPE_ANONYMOUS = 6;
}

// How to authenticate, as reported by
// [GetAuthenticationConfiguration](mfiles:MFiles.IRPCLogin.GetAuthenticationConfiguration).
enum AuthMethod {

	// No plug-in configuration applies; use user name and password or Windows authentication.
	AUTH_METHOD_UNSPECIFIED = 0;

	// Log in with `AUTH_DATA_TYPE_PLUGIN` using one of the returned `plugin_infos`.
	AUTH_METHOD_PLUGIN = 3;
}

// Types of automatic values.
enum AutomaticValueType {

	// Not an automatic value.
	AUTOMATIC_VALUE_TYPE_NONE = 0;

	// A string with propertydef placeholders, similar to notification templates.
	AUTOMATIC_VALUE_TYPE_CALCULATE_WITH_TEMPLATE = 1;

	// VBScript code that calculates the property.
	AUTOMATIC_VALUE_TYPE_CALCULATED_WITH_CODE = 2;

	// Simple automatic numbering: last used value and increment. Calculated once.
	AUTOMATIC_VALUE_TYPE_FIXED_VALUE_WITH_INCREMENT = 3;

	// VBScript code that produces the automatic number. Calculated once.
	AUTOMATIC_VALUE_TYPE_FIXED_VALUE_WITH_CODE = 4;
}

// AutoStateTransitionMode enumeration.
enum AutoStateTransitionMode {

	// No automatic state transition.
	AUTO_STATE_TRANSITION_MODE_NONE = 0;

	// After the specified time period.
	// eastmAssignmentCompleteOne = 2,  //!< After at least one user has marked the assignment complete.
	// eastmAssignmentCompleteAll = 3,  //!< After all users have marked the assignment complete.
	AUTO_STATE_TRANSITION_MODE_RELATIVE_TIME = 1;

	// Criteria fulfilled.
	AUTO_STATE_TRANSITION_MODE_CRITERIA_FULFILLED = 4;

	// Allowed by VBScript.
	AUTO_STATE_TRANSITION_MODE_SCRIPT_FULFILLED = 5;

	// After the all assignments has been marked complete.
	AUTO_STATE_TRANSITION_MODE_ASSIGNMENT_COMPLETE = 6;

	// After the any assignment has been marked rejected.
	AUTO_STATE_TRANSITION_MODE_ASSIGNMENT_REJECTED = 7;
}

// Background operation types.
enum BackgroundOperationType {

	// Unknown.
	BACKGROUND_OPERATION_TYPE_UNKNOWN = 0;

	// Index meta data.
	BACKGROUND_OPERATION_TYPE_INDEX_METADATA = 1;

	// Refresh an external object type.
	BACKGROUND_OPERATION_TYPE_REFRESH_EXTERNAL_OBJECT_TYPE = 2;

	// Refresh an external location.
	BACKGROUND_OPERATION_TYPE_REFRESH_EXTERNAL_LOCATION = 3;

	// Perform an OCR task.
	BACKGROUND_OPERATION_TYPE_PERFORM_OCR_TASK = 4;

	// Run performance measurements.
	BACKGROUND_OPERATION_TYPE_RUN_PERFORMANCE_MEASUREMENTS = 5;

	// Clean up ACL dependency sets.
	BACKGROUND_OPERATION_TYPE_CLEAN_UP_ACL_DEPENDENCY_SETS = 6;
}

// Backup type enumeration.
enum BackupType {

	// Full backup.
	BACKUP_TYPE_FULL = 0;

	// Differential backup (changes since the last full backup).
	BACKUP_TYPE_DIFFERENTIAL = 1;
}

// Enumeration for different broadcast requests.
enum BroadcastRequestType {

	// Broadcast request to restart the vault.
	BROADCAST_REQUEST_TYPE_RESTART_VAULT = 0;
}

// Used by MFServer to distinguish between incoming calls of different
// importance levels. For example, less important calls may be rejected
// if the server is busy.
enum CallImportance {

	// Call importance not set. Usually defaults to CALL_IMPORTANCE_NORMAL.
	CALL_IMPORTANCE_DEFAULT = 0;

	// Normal call. Calls of this type are never rejected. Multiple concurrent calls are served by concurrent threads in MFServer. Most calls should specify this importance level.
	CALL_IMPORTANCE_NORMAL = 1;

	// A less important call, e.g. cache prefilling. This type of calls can be rejected by the server if it is currently too busy (e.g. servicing too many other calls). If MFServer rejects a call, E_MFILES_CALL_REJECTED is returned.
	CALL_IMPORTANCE_CAN_BE_REJECTED = 2;
}

// Cancellation reason enumerations.
enum CancellationReason {

	// None.
	CANCELLATION_REASON_NONE = 0;

	// Auto-cancel.
	CANCELLATION_REASON_AUTO_CANCEL = 1;

	// Cancelled by an administrator, progress kept.
	CANCELLATION_REASON_MANUAL_CANCEL = 2;

	// Interrupted by an orderly service stop or vault offline.
	CANCELLATION_REASON_SHUTDOWN = 3;

	// The run failed with an error.
	CANCELLATION_REASON_HARD_ERROR = 4;

	// A run started and has not been closed (abandoned if no run is active).
	CANCELLATION_REASON_RUN_IN_PROGRESS = 5;

	// An administrator discarded the progress.
	CANCELLATION_REASON_PROGRESS_DISCARDED = 6;
}

// ChangeAction enumeration.
enum ChangeAction {

	// Unknown type (not initialized to any type).
	CHANGE_ACTION_UNINITIALIZED = 0;

	// Keep the old value.
	CHANGE_ACTION_KEEP = 1;

	// Replace the old value with a new one.
	CHANGE_ACTION_CHANGE = 2;

	// Remove the old value.
	CHANGE_ACTION_REMOVE = 3;
}

// Client type enumeration.
enum ClientType {

	// Unidentified or unknown client.
	CLIENT_TYPE_UNIDENTIFIED = 0;

	// Windows/PC desktop client.
	CLIENT_TYPE_WINDOWS_DESKTOP = 1;

	// Generic M-Files API client that is using the Windows desktop client.
	CLIENT_TYPE_WINDOWS_DESKTOP_API = 2;

	// Generic M-Files API client connected to server interface.
	CLIENT_TYPE_SERVER_API = 3;

	// Web Access client.
	CLIENT_TYPE_WEB = 4;

	// Android client.
	CLIENT_TYPE_MOBILE_ANDROID = 5;

	// IOS client.
	CLIENT_TYPE_MOBILE_IOS = 6;

	// vNext client in desktop environment.
	CLIENT_TYPE_VNEXT_DESKTOP = 7;

	// vNext client in mobile environment.
	CLIENT_TYPE_VNEXT_MOBILE = 8;

	// vNext client in web browser environment.
	CLIENT_TYPE_VNEXT_WEB = 9;

	// The M-Files web client hosted in another application, such as Microsoft 365.
	CLIENT_TYPE_VNEXT_HOSTED = 10;

	// vNext Client in SharePoint Addin.
	CLIENT_TYPE_VNEXT_SHARE_POINT_ADDIN = 12;

	// vNext Client in Salesforce Addin.
	CLIENT_TYPE_VNEXT_SALESFORCE_ADDIN = 13;

	// vNext Client in MSTeams Addin.
	CLIENT_TYPE_VNEXT_MSTEAMS_ADDIN = 14;

	// vNext Client in ArcGIS Addin.
	CLIENT_TYPE_VNEXT_ARCGIS_ADDIN = 15;

	// Internal processes.
	CLIENT_TYPE_INTERNAL_PROCESS_EX = 16;

	// Outlook Addin client.
	CLIENT_TYPE_OUTLOOK_ADDIN = 17;

	// React Native mobile client on Android.
	CLIENT_TYPE_REACT_NATIVE_ANDROID = 18;

	// React Native mobile client on iOS.
	CLIENT_TYPE_REACT_NATIVE_IOS = 19;
}

// Condition types enumeration.
//
// Which operators work depends on the expression and the value type. For example, the any-field
// expression (full-text search) supports only `CONDITION_TYPE_CONTAINS`. An unsupported
// combination fails with "Invalid search condition."
enum ConditionType {

	// Uninitialized.
	CONDITION_TYPE_UNINITIALIZED = 0;

	// Must be equal to the value. With a multi-select lookup value, matches if the object has any of the listed items. With a value whose `is_null_value` is true, matches objects whose property is empty.
	CONDITION_TYPE_EQUAL = 1;

	// Must be not equal to.
	CONDITION_TYPE_NOT_EQUAL = 2;

	// Must be greater than (>).
	CONDITION_TYPE_GREATER_THAN = 3;

	// Must be less than (<).
	CONDITION_TYPE_LESS_THAN = 4;

	// Must be greater than or equal to (>=).
	CONDITION_TYPE_GREATER_THAN_OR_EQUAL = 5;

	// Must be less than or equal to (<=).
	CONDITION_TYPE_LESS_THAN_OR_EQUAL = 6;

	// Contains the given text (similar to LIKE '%xyz%'). The operator of a full-text (any-field) condition.
	CONDITION_TYPE_CONTAINS = 7;

	// Does not contain the given text string (similar to NOT LIKE '%xyz%').
	CONDITION_TYPE_DOES_NOT_CONTAIN = 8;

	// Starts with the given text string (similar to LIKE 'xyz%').
	CONDITION_TYPE_STARTS_WITH = 9;

	// Does not start with the given text string (similar to NOT LIKE 'xyz%').
	CONDITION_TYPE_DOES_NOT_START_WITH = 10;

	// Matches the given DOS-style wildcard pattern (such as '*.txt').
	CONDITION_TYPE_MATCHES_WILDCARD_PATTERN = 11;

	// Does not match the given DOS-style wildcard pattern (such as '*.txt').
	CONDITION_TYPE_DOES_NOT_MATCH_WILDCARD_PATTERN = 12;

	// Is missing. Rejected for property value conditions; to find an empty property, use `CONDITION_TYPE_EQUAL` with an unset value.
	CONDITION_TYPE_IS_MISSING = 13;

	// Is not missing?
	CONDITION_TYPE_IS_NOT_MISSING = 14;

	// Starts with the given text string at a word boundary (similar to LIKE 'xyz%', but evaluated at each word beginning).
	CONDITION_TYPE_STARTS_WITH_AT_WORD_BOUNDARY = 15;

	// Contains any of the bits of the given number. Treats its operands as a vector of bits rather than a single number.
	CONDITION_TYPE_CONTAINS_ANY_BITWISE = 16;

	// Does not contain any of the bits of the given number. Treats its operands as a vector of bits rather than a single number.
	CONDITION_TYPE_DOES_NOT_CONTAIN_ANY_BITWISE = 17;

	// Full-text search matching all search terms. Not for the any-field condition, which rejects it: use `CONDITION_TYPE_CONTAINS` with `FTSFLAGS.search_all_words` instead.
	CONDITION_TYPE_MATCHES_ALL = 18;

	// Full-text search matching any search term. Not for the any-field condition, which rejects it: use `CONDITION_TYPE_CONTAINS` with `FTSFLAGS.search_any_words` instead.
	CONDITION_TYPE_MATCHES_ANY = 19;

	// Full-text search matching a Boolean statement.
	CONDITION_TYPE_MATCHES_BOOLEAN = 20;
}

// Connection security modes.
enum ConnectionSecurityMode {

	CONNECTION_SECURITY_MODE_UNSPECIFIED = 0;

	CONNECTION_SECURITY_MODE_NONE = 1;

	CONNECTION_SECURITY_MODE_ENCRYPTED = 2;

	CONNECTION_SECURITY_MODE_ENCRYPTED_IF_BUILTIN_KEY_AVAILABLE = 3;
}

// Content types (sub-datatypes).
enum ContentType {

	// Generic content (no specific subtype).
	CONTENT_TYPE_GENERIC = 0;

	// E-mail address.
	CONTENT_TYPE_EMAIL_ADDRESS = 1;

	// URL.
	CONTENT_TYPE_URL = 2;

	// Rich Text Format. // Note : Not used.
	CONTENT_TYPE_RTF = 3;

	// HTML. // Note : Not used.
	CONTENT_TYPE_HTML = 4;
}

// Object file source type enumeration.
enum ConversationType {

	// Undefined conversation type.
	CONVERSATION_TYPE_UNDEFINED = 0;

	// Conversation with Aino.
	CONVERSATION_TYPE_AINO = 1;
}

// The kind of account in `Credentials`.
enum CredentialsType {

	// Treated like `CREDENTIALS_TYPE_AUTOMATIC`.
	CREDENTIALS_TYPE_UNINITIALIZED = 0;

	// An M-Files account (password stored by M-Files).
	CREDENTIALS_TYPE_MFILES = 1;

	// A Windows or domain account, verified by Windows on the server.
	CREDENTIALS_TYPE_WINDOWS = 2;

	// Try an M-Files account first; if that fails, a Windows account.
	CREDENTIALS_TYPE_AUTOMATIC = 3;
}

enum CredentialType {

	// Human user.
	CREDENTIAL_TYPE_USER = 0;

	// Application.
	CREDENTIAL_TYPE_TECHNICAL = 1;
}

// Functions that operate on a property value, for example.
enum DataFunction {

	// Returns the data without modifying it.
	DATA_FUNCTION_NO_OP = 0;

	// Gets the year of a date or timestamp value (e.g. 2004).
	DATA_FUNCTION_YEAR = 1;

	// Gets the month of a date or timestamp value (e.g. "02").
	DATA_FUNCTION_MONTH = 2;

	// Gets the year and month of a date or timestamp value (e.g. "2004-02").
	DATA_FUNCTION_YEAR_AND_MONTH = 3;

	// Gets the date part of a date or timestamp value (e.g. 2004-02-15).
	DATA_FUNCTION_DATE = 4;

	// Gets the difference of the current timestamp and a specified date or timestamp value as the number of days (e.g. 8 or -10).
	DATA_FUNCTION_DAYS_FROM = 5;

	// Gets the difference of a specified date or timestamp value and the current timestamp as the number of days (e.g. 10 or -8).
	DATA_FUNCTION_DAYS_TO = 6;

	// Gets the integer segment of a value (an integer number or a real number) based on a defined segment size.
	DATA_FUNCTION_INTEGER_SEGMENT = 7;

	// Gets a defined amount of left characters from a text or typed value.
	DATA_FUNCTION_LEFT_CHARACTERS = 8;

	// Gets an initial character group from a text or typed value.
	DATA_FUNCTION_INITIAL_CHARACTER_GROUP = 9;
}

// Datatype enumeration.
enum Datatype {

	// Unknown type (not initialized to any type).
	DATATYPE_UNINITIALIZED = 0;

	// Text.
	DATATYPE_TEXT = 1;

	// 32-bit integer
	DATATYPE_INTEGER = 2;

	// Double-precision floating point.
	DATATYPE_REAL_NUMBER = 3;

	// Fixed-precision number.
	DATATYPE_DECIMAL_NUMBER = 4;

	// Date.
	DATATYPE_DATE = 5;

	// Time.
	DATATYPE_TIME = 6;

	// Timestamp.
	DATATYPE_TIMESTAMP = 7;

	// Boolean.
	DATATYPE_BOOLEAN = 8;

	// Lookup (from a value list).
	DATATYPE_LOOKUP = 9;

	// Multiple selection from a value list.
	DATATYPE_MULTI_SELECT_LOOKUP = 10;

	// 64-bit integer. Not used in document properties.
	DATATYPE_INTEGER64 = 11;

	// A Windows FILETIME (64-bit integer). Not used in object properties.
	DATATYPE_FILETIME = 12;

	// Multi-line text.
	DATATYPE_MULTI_LINE_TEXT = 13;

	// Access Control List.
	DATATYPE_ACL = 14;

	// Byte array.
	DATATYPE_BINARY = 15;
}

// Database engine enumeration.
enum DBEngine {

	// None.
	DBENGINE_NONE = 0;

	// Firebird.
	DBENGINE_FIREBIRD = 1;

	// Microsoft SQL Server (MS SQL Server).
	DBENGINE_MS_SQL_SERVER = 2;
}

// Default property type enumeration.
enum DefaultPropertyType {

	// Unknown type (not initialized to any type).
	DEFAULT_PROPERTY_TYPE_UNDEFINED = 0;

	// Fixed value.
	DEFAULT_PROPERTY_TYPE_FIXED_VALUE = 1;

	// A value read from an XML file produced by HP Digital Sending Software (DSS).
	DEFAULT_PROPERTY_TYPE_FROM_HP_DSS_XML = 2;

	// A value read from a generic XML file.
	DEFAULT_PROPERTY_TYPE_FROM_XML = 3;

	// A field from an e-mail message.
	DEFAULT_PROPERTY_TYPE_FROM_EMAIL = 4;

	// A custom header field from an e-mail message.
	DEFAULT_PROPERTY_TYPE_FROM_EMAIL_HEADER = 5;

	// A value recognized by OCR.
	DEFAULT_PROPERTY_TYPE_FROM_OCR = 6;

	// A value from a Windows file property.
	DEFAULT_PROPERTY_TYPE_FROM_FILE_PROPERTY = 7;

	// State transition time.
	DEFAULT_PROPERTY_TYPE_STATE_TRANSITION_TIME = 8;
}

// Dependency relation enumeration.
enum DependencyRelation {

	// No dependency relation.
	DEPENDENCY_RELATION_NOTHING = 0;

	// A dependent field (property) is filled automatically based on the value of an owner field (property).
	DEPENDENCY_RELATION_FILL = 1;

	// The possible property values of a dependent field (property) is determined based on the value shown in an owner field (property).
	DEPENDENCY_RELATION_FILTER = 2;
}

// Signature reason/meaning prompt mode enumeration.
enum ElectronicSignatureContext {

	// The electronic signature is associated with a state transition. The electronic signature context id identifies the state transition.
	ELECTRONIC_SIGNATURE_CONTEXT_STATE_TRANSITION = 0;

	// The electronic signature is associated with a assignment class. It is prompted when an assignment is marked as complete.
	ELECTRONIC_SIGNATURE_CONTEXT_ASSIGNMENT_COMPLETION = 1;

	// The electronic signature is associated with a assignment class. It is prompted when an assignment is approved.
	ELECTRONIC_SIGNATURE_CONTEXT_ASSIGNMENT_APPROVAL = 2;

	// The electronic signature is associated with a assignment class. It is prompted when an assignment is rejected.
	ELECTRONIC_SIGNATURE_CONTEXT_ASSIGNMENT_REJECTION = 3;
}

// Signature reason/meaning prompt mode enumeration.
enum ElectronicSignaturePromptMode {

	// Single, fixed reason/meaning.
	ELECTRONIC_SIGNATURE_PROMPT_MODE_FIXED = 0;

	// List of predefined user-selectable reason/meaning pairs.
	ELECTRONIC_SIGNATURE_PROMPT_MODE_SELECTABLE = 1;
}

// E-mail field enumeration.
enum EmailField {

	// Unknown field (not initialized to any type).
	EMAIL_FIELD_UNDEFINED = 0;

	// Sender.
	EMAIL_FIELD_FROM = 1;

	// Recipient.
	EMAIL_FIELD_TO = 2;

	// Cc.
	EMAIL_FIELD_CC = 3;

	// Message subject.
	EMAIL_FIELD_SUBJECT = 4;

	// Message body.
	EMAIL_FIELD_BODY = 5;

	// Message timestamp.
	EMAIL_FIELD_DATE = 6;

	// Importance.
	EMAIL_FIELD_IMPORTANCE = 7;

	// Sensitivity.
	EMAIL_FIELD_SENSITIVITY = 8;
}

// ExtID status enumeration.
enum EventCategory {

	// Undefined event category.
	EVENT_CATEGORY_UNDEFINED = 0;

	// The event concerns a document file access.
	EVENT_CATEGORY_FILE_ACCESS = 1;

	// The event concerns a document change operation.
	EVENT_CATEGORY_OBJECT_CHANGE = 2;

	// The event concerns a creation of a new document.
	EVENT_CATEGORY_NEW_OBJECT = 3;

	// The event concerns a document operation.
	EVENT_CATEGORY_OBJECT_OPERATION = 4;

	// The event concerns a system operation.
	EVENT_CATEGORY_SYSTEM = 5;

	// The event concerns a request.
	EVENT_CATEGORY_REQUEST = 6;

	// The event concerns a metadata structure change.
	EVENT_CATEGORY_METADATA_STRUCTURE_CHANGE = 7;

	// The event concerns a public link.
	EVENT_CATEGORY_PUBLIC_LINK = 8;

	// The event concerns a custom event.
	EVENT_CATEGORY_CUSTOM_EVENT = 9;
}

// Event type enumeration.
enum EventType {

	// Undefined event.
	EVENT_TYPE_UNDEFINED = 0;

	// Document file accessed.
	EVENT_TYPE_FILE_ACCESSED = 1;

	// Document changed.
	EVENT_TYPE_OBJECT_CHANGED = 2;

	// New document created.
	EVENT_TYPE_OBJECT_CREATED = 3;

	// An object was rolled back to an earlier version.
	EVENT_TYPE_ROLLED_BACK = 4;

	// Check out.
	EVENT_TYPE_CHECKED_OUT = 5;

	// Check in.
	EVENT_TYPE_CHECKED_IN = 6;

	// Undo check out.
	EVENT_TYPE_CHECKOUT_UNDONE = 7;

	// Document deleted.
	EVENT_TYPE_OBJECT_DELETED = 8;

	// Document version destroyd.
	EVENT_TYPE_OBJECT_VERSION_DESTROYED = 9;

	// Document destroyed.
	EVENT_TYPE_OBJECT_DESTROYED = 10;

	// Log in.
	EVENT_TYPE_LOGGED_IN = 11;

	// Log out.
	EVENT_TYPE_LOGGED_OUT = 12;

	// Backup started.
	EVENT_TYPE_BACKUP_STARTED = 13;

	// Backup completed.
	EVENT_TYPE_BACKUP_COMPLETED = 14;

	// Check in request.
	EVENT_TYPE_CHECK_IN_REQUESTED = 15;

	// Assign request.
	EVENT_TYPE_ASSIGNED = 16;

	// Free request.
	EVENT_TYPE_FREE_REQUEST = 17;

	// Assigned to a new user.
	EVENT_TYPE_ASSIGNED_TO = 18;

	// Completed by a new user.
	EVENT_TYPE_COMPLETED_BY = 19;

	// Moved into a new state.
	EVENT_TYPE_STATE_CHANGED = 20;

	// An object matches a notification filter.
	EVENT_TYPE_OBJECT_NOTIFICATION = 21;

	// Object undeleted.
	EVENT_TYPE_OBJECT_UNDELETED = 22;

	// User account added.
	EVENT_TYPE_USER_ADDED = 23;

	// User account changed.
	EVENT_TYPE_USER_CHANGED = 24;

	// User account deleted.
	EVENT_TYPE_USER_DELETED = 25;

	// User group added.
	EVENT_TYPE_USER_GROUP_ADDED = 26;

	// User group changed.
	EVENT_TYPE_USER_GROUP_CHANGED = 27;

	// User group deleted.
	EVENT_TYPE_USER_GROUP_DELETED = 28;

	// Property definition deleted.
	EVENT_TYPE_PROPERTY_DEFINITION_DELETED_DEPRECATED = 29;

	// Event log (i.e. audit trail) exported.
	EVENT_TYPE_EVENT_LOG_EXPORTED = 30;

	// Event log (i.e. audit trail) cleared.
	EVENT_TYPE_EVENT_LOG_CLEARED = 31;

	// Restore from backup completed.
	EVENT_TYPE_VAULT_RESTORED = 32;

	// Vault created.
	EVENT_TYPE_VAULT_CREATED = 33;

	// Workflow state transition electronic signature settings added.
	EVENT_TYPE_STATE_TRANSITION_SIGNATURE_SETTINGS_ADDED = 34;

	// Workflow state transition electronic signature settings changed.
	EVENT_TYPE_STATE_TRANSITION_SIGNATURE_SETTINGS_CHANGED = 35;

	// Workflow state transition electronic signature settings deleted.
	EVENT_TYPE_STATE_TRANSITION_SIGNATURE_SETTINGS_REMOVED = 36;

	// Vault variable changed.
	EVENT_TYPE_VAULT_VARIABLE_CHANGED = 37;

	// Vault created as a copy of another vault.
	EVENT_TYPE_VAULT_COPIED = 38;

	// License prevents the 21 CFR Part 11 compliance of the vault.
	EVENT_TYPE_LICENSE_PREVENTED_ADVANCED_EVENT_LOG = 39;

	// Property definition created.
	EVENT_TYPE_PROPERTY_DEFINITION_CREATED = 40;

	// Property definition changed.
	EVENT_TYPE_PROPERTY_DEFINITION_CHANGED = 41;

	// Property definition deleted. This will be used instead of eEventTypePropertyDefDeleted.
	EVENT_TYPE_PROPERTY_DEFINITION_DELETED = 42;

	// Value list created.
	EVENT_TYPE_VALUE_LIST_CREATED = 43;

	// Value list changed.
	EVENT_TYPE_VALUE_LIST_CHANGED = 44;

	// Value list deleted.
	EVENT_TYPE_VALUE_LIST_DELETED = 45;

	// Value list item created.
	EVENT_TYPE_VALUE_LIST_ITEM_CREATED = 46;

	// Value list item changed.
	EVENT_TYPE_VALUE_LIST_ITEM_CHANGED = 47;

	// Value list item deleted.
	EVENT_TYPE_VALUE_LIST_ITEM_DELETED = 48;

	// Value list item undeleted.
	EVENT_TYPE_VALUE_LIST_ITEM_UNDELETED = 49;

	// Object type created.
	EVENT_TYPE_OBJECT_TYPE_CREATED = 50;

	// Object type changed.
	EVENT_TYPE_OBJECT_TYPE_CHANGED = 51;

	// Object type deleted.
	EVENT_TYPE_OBJECT_TYPE_DELETED = 52;

	// Common View created.
	EVENT_TYPE_COMMON_VIEW_CREATED = 53;

	// Common View changed.
	EVENT_TYPE_COMMON_VIEW_CHANGED = 54;

	// Common View deleted.
	EVENT_TYPE_COMMON_VIEW_DELETED = 55;

	// Content package exported.
	EVENT_TYPE_CONTENT_PACKAGE_EXPORTED = 56;

	// Content package import started.
	EVENT_TYPE_CONTENT_PACKAGE_IMPORT_STARTED = 57;

	// Content package import completed.
	EVENT_TYPE_CONTENT_PACKAGE_IMPORT_COMPLETED = 58;

	// Workflow created.
	EVENT_TYPE_WORKFLOW_CREATED = 59;

	// Workflow changed.
	EVENT_TYPE_WORKFLOW_CHANGED = 60;

	// Workflow deleted.
	EVENT_TYPE_WORKFLOW_DELETED = 61;

	// State created.
	EVENT_TYPE_WORKFLOW_STATE_CREATED = 62;

	// State changed.
	EVENT_TYPE_WORKFLOW_STATE_CHANGED = 63;

	// State deleted.
	EVENT_TYPE_WORKFLOW_STATE_DELETED = 64;

	// Class created.
	EVENT_TYPE_OBJECT_CLASS_CREATED = 65;

	// Class changed.
	EVENT_TYPE_OBJECT_CLASS_CHANGED = 66;

	// Class deleted.
	EVENT_TYPE_OBJECT_CLASS_DELETED = 67;

	// Event handler created.
	EVENT_TYPE_EVENT_HANDLER_CREATED = 68;

	// Event handler changed.
	EVENT_TYPE_EVENT_HANDLER_CHANGED = 69;

	// Event handler deleted.
	EVENT_TYPE_EVENT_HANDLER_DELETED = 70;

	// Named ACL created.
	EVENT_TYPE_NAMED_ACL_CREATED = 71;

	// Named ACL changed.
	EVENT_TYPE_NAMED_ACL_CHANGED = 72;

	// Named ACL deleted.
	EVENT_TYPE_NAMED_ACL_DELETED = 73;

	// Event handler index changed.
	EVENT_TYPE_EVENT_HANDLER_EXECUTION_ORDER_CHANGED = 74;

	// Application installed.
	EVENT_TYPE_APPLICATION_INSTALLED = 75;

	// Application uninstalled.
	EVENT_TYPE_APPLICATION_UNINSTALLED = 76;

	// Approved by a new user.
	EVENT_TYPE_ASSIGNMENT_APPROVED_BY = 77;

	// Rejected by a new user.
	EVENT_TYPE_ASSIGNMENT_REJECTED_BY = 78;

	// State transition created.
	EVENT_TYPE_STATE_TRANSITION_CREATED = 79;

	// State transition changed.
	EVENT_TYPE_STATE_TRANSITION_CHANGED = 80;

	// State transition deleted.
	EVENT_TYPE_STATE_TRANSITION_DELETED = 81;

	// Public link created.
	EVENT_TYPE_PUBLIC_LINK_CREATED = 82;

	// Public link file downloaded.
	EVENT_TYPE_PUBLIC_LINK_FILE_DOWNLOADED = 83;

	// Public link deleted.
	EVENT_TYPE_PUBLIC_LINK_DELETED = 84;

	// Public link accessed.
	EVENT_TYPE_PUBLIC_LINK_ACCESSED = 85;

	// Public link file viewed.
	EVENT_TYPE_PUBLIC_LINK_FILE_VIEWED = 86;

	// Application license changed.
	EVENT_TYPE_APPLICATION_LICENSE_CHANGED = 87;

	// Custom event.
	EVENT_TYPE_CUSTOM_EVENT = 88;

	// Vault settings changed.
	EVENT_TYPE_VAULT_SETTINGS_CHANGED = 89;

	// Application enabled.
	EVENT_TYPE_APPLICATION_ENABLED = 90;

	// Application disabled.
	EVENT_TYPE_APPLICATION_DISABLED = 91;

	// Conflict resolved.
	EVENT_TYPE_CONFLICT_RESOLVED_IN_FAVOR_OF_INCOMING_CHANGES = 92;

	// User group member added.
	EVENT_TYPE_USER_GROUP_MEMBER_ADDED = 93;

	// User group member removed.
	EVENT_TYPE_USER_GROUP_MEMBER_REMOVED = 94;

	// Conflicting changes discarded.
	EVENT_TYPE_CONFLICT_RESOLVED_IN_FAVOR_OF_LOCAL_CHANGES = 95;

	// Restored a conflict object as a new version of the base object.
	EVENT_TYPE_DISCARDED_CONFLICT_CHANGES_RESTORED_AS_NEW_VERSION = 96;

	// Comment added to document and it contains reference to user
	EVENT_TYPE_USER_MENTIONED_IN_COMMENT = 97;

	// Login account added.
	EVENT_TYPE_VAULT_LOGIN_ACCOUNT_ADDED = 98;

	// Login account changed.
	EVENT_TYPE_VAULT_LOGIN_ACCOUNT_CHANGED = 99;

	// Login account deleted.
	EVENT_TYPE_VAULT_LOGIN_ACCOUNT_DELETED = 100;

	// Multiple user groups deleted.
	EVENT_TYPE_MULTIPLE_USER_GROUPS_DELETED = 101;

	// Application upgraded.
	EVENT_TYPE_APPLICATION_UPGRADED = 102;

	// Object tier set.
	EVENT_TYPE_TIER_SET = 103;

	// External link access type changed.
	EVENT_TYPE_EXTERNAL_LINK_ACCESS_TYPE_CHANGED = 104;

	// External link expiration updated for "Anyone with the link" share.
	EVENT_TYPE_EXTERNAL_LINK_ANYONE_WITH_LINK_EXPIRATION_UPDATED = 105;

	// External link visitors added.
	EVENT_TYPE_EXTERNAL_LINK_VISITORS_ADDED = 106;

	// External link visitors removed.
	EVENT_TYPE_EXTERNAL_LINK_VISITORS_REMOVED = 107;

	// External link expiration updated for a visitor.
	EVENT_TYPE_EXTERNAL_LINK_VISITOR_EXPIRATION_UPDATED = 108;

	// External link accessed by a visitor.
	EVENT_TYPE_EXTERNAL_LINK_ACCESSED_BY_VISITOR = 109;

	// External link "Manage visitors" dialog viewed.
	EVENT_TYPE_EXTERNAL_LINK_MANAGE_VISITORS_VIEWED = 110;

	// External link visitors viewed (recipient list fetched on the server).
	EVENT_TYPE_EXTERNAL_LINK_VISITORS_VIEWED = 111;
}

// Enumeration of history timeline sampling intervals.
enum ExportedDataHistoryInterval {

	// The period is one day.
	EXPORTED_DATA_HISTORY_INTERVAL_DAY = 0;

	// The period is one week.
	EXPORTED_DATA_HISTORY_INTERVAL_WEEK = 1;

	// The period is one month.
	EXPORTED_DATA_HISTORY_INTERVAL_MONTH = 2;

	// The period is one year.
	EXPORTED_DATA_HISTORY_INTERVAL_YEAR = 3;
}

// Enumeration of history start date modes for exported data nodes.
enum ExportedDataHistoryStartDateMode {

	// History begins at object creation.
	EXPORTED_DATA_HISTORY_START_DATE_MODE_FULL_HISTORY = 0;

	// Start date is calculated; x days/weeks/months/years before end date.
	EXPORTED_DATA_HISTORY_START_DATE_MODE_FIXED_PERIOD = 1;

	// The start date is a exact date.
	EXPORTED_DATA_HISTORY_START_DATE_MODE_STARTING_FROM = 2;
}

// Enumeration of exported data set schemas.
enum ExportedDataSetDBSchema {

	// Database schema for generic DB structure.
	EXPORTED_DATA_SET_DBSCHEMA_GENERIC = 0;
}

// Expression types.
enum ExpressionType {

	// Uninitialized.
	EXPRESSION_TYPE_UNINITIALIZED = 0;

	// Property value.
	EXPRESSION_TYPE_PROPERTY_VALUE = 1;

	// Document ID segment.
	EXPRESSION_TYPE_ID_SEGMENT = 2;

	// Status value such as Document ID or CheckedOutToUser.
	EXPRESSION_TYPE_STATUS_VALUE = 3;

	// File value such as File Size.
	EXPRESSION_TYPE_FILE_VALUE = 4;

	// Value of specific data type. Lookup-typed values also specify the value list.
	EXPRESSION_TYPE_TYPED_VALUE = 5;

	// Value of any field (any property, file name etc.).
	EXPRESSION_TYPE_ANY_FIELD = 6;

	// Permissions (ACL).
	EXPRESSION_TYPE_PERMISSIONS = 7;
}

// ScriptAppEngine enumeration.
enum ExtAppEngine {

	// Unknown.
	EXT_APP_ENGINE_UNKNOWN = 0;

	// The Shell UI engine.
	EXT_APP_ENGINE_SHELL_UI = 1;

	// The Vault UI engine.
	EXT_APP_ENGINE_VAULT_UI = 2;

	// The Vault Core engine.
	EXT_APP_ENGINE_VAULT_CORE = 3;
}

// Extension Application platform (needs to be bitwise-combined).
enum ExtApplicationPlatform {

	// None.
	EXT_APPLICATION_PLATFORM_NONE = 0;

	// M-Files Desktop.
	EXT_APPLICATION_PLATFORM_DESKTOP = 1;

	// M-Files Web.
	EXT_APPLICATION_PLATFORM_WEB = 2;

	// M-Files Sharepoint Addon.
	EXT_APPLICATION_PLATFORM_SHARE_POINT_ADD_ON = 4;

	// M-Files vNext.
	EXT_APPLICATION_PLATFORM_VNEXT = 8;

	// M-Files Widget platform.
	EXT_APPLICATION_PLATFORM_MWIDGET = 16;

	// M-Files Admin.
	EXT_APPLICATION_PLATFORM_ADMIN = 32;
}

// Extension Application type.
enum ExtApplicationType {

	// None.
	EXT_APPLICATION_TYPE_UNSPECIFIED = 0;

	// Client application.
	EXT_APPLICATION_TYPE_CLIENT = 1;

	// Server (vault) application.
	EXT_APPLICATION_TYPE_SERVER = 2;
}

// External database refresh type enumeration.
enum ExtDBRefreshType {

	// No need to refresh data from external database.
	EXT_DBREFRESH_TYPE_NONE = 0;

	// Quick refresh from external database requested.
	EXT_DBREFRESH_TYPE_QUICK = 1;

	// Full refresh from external database requested.
	EXT_DBREFRESH_TYPE_FULL = 2;
}

// Extension authentication special user type enumeration.
enum ExtensionAuthenticationSpecialUserType {

	// No special type.
	EXTENSION_AUTHENTICATION_SPECIAL_USER_TYPE_NORMAL = 0;

	// Common.
	EXTENSION_AUTHENTICATION_SPECIAL_USER_TYPE_COMMON = 1;

	// Background user.
	EXTENSION_AUTHENTICATION_SPECIAL_USER_TYPE_BACKGROUND = 2;

	// User for retrieving the permissions in case regular external repository users do not have the permissions to do so.
	EXTENSION_AUTHENTICATION_SPECIAL_USER_TYPE_PERMISSIONS = 3;
}

// External group import mode enumeration.
enum ExternalGroupImportMode {

	// Undefined for internal groups.
	EXTERNAL_GROUP_IMPORT_MODE_UNDEFINED = 0;

	// Only direct users of the group are included
	EXTERNAL_GROUP_IMPORT_MODE_DIRECT_USERS = 1;

	// Users of the group and its sub groups are included
	EXTERNAL_GROUP_IMPORT_MODE_DIRECT_AND_NESTED_USERS = 2;
}

// External Shared Link Access Type enumeration.
enum ExternalSharedLinkAccessType {

	// Uninitialized.
	EXTERNAL_SHARED_LINK_ACCESS_TYPE_UNINITIALIZED = 0;

	// User can download the document when this is specified.
	EXTERNAL_SHARED_LINK_ACCESS_TYPE_DOWNLOAD = 1;

	// User can preview the document when this is specified.
	EXTERNAL_SHARED_LINK_ACCESS_TYPE_PREVIEW = 2;

	// User can edit the document when this is specified.
	EXTERNAL_SHARED_LINK_ACCESS_TYPE_EDIT = 3;
}

// ExtID status enumeration.
enum ExtIDStatus {

	// Unknown.
	EXT_IDSTATUS_UNKNOWN = 0;

	// A real external ID that was received from an external database.
	EXT_IDSTATUS_EXTERNAL = 1;

	// No real ExtID yet. The item has been created in M-Files and does not yet know its identification in an external database (or there is no external database).
	EXT_IDSTATUS_INTERNAL = 2;

	// A corresponding item in the external database was not found and this item was discarded without receiving a real ExtID.
	EXT_IDSTATUS_DISCARDED = 3;

	// The external object has no external ID yet. The server returns this value for display and indexing only; it is never stored.
	EXT_IDSTATUS_NOT_AVAILABLE = 4;

	// A real ExtID is set but the item itself is in the reduced state. This value is used when importing missing items for which the content package provides an ExtID. External object refresh can promote these values to full external objects.
	EXT_IDSTATUS_EXTERNAL_REDUCED = 5;
}

// ExtLoc type enumeration.
enum ExtLocType {

	// Undefined.
	EXT_LOC_TYPE_NONE = 0;

	// File source.
	EXT_LOC_TYPE_FILE_SOURCE = 1;

	// Mail source.
	EXT_LOC_TYPE_MAIL_SOURCE = 2;
}

// File data storage enumeration.
enum FileDataStorage {

	// Default. Means that the file data storage is automatically selected based on the database engine.
	FILE_DATA_STORAGE_DEFAULT = 0;

	// On-disk storage i.e. the file data is stored on a local or remote disk.
	FILE_DATA_STORAGE_DISK = 1;

	// Database storage i.e. the file data is stored in a database.
	FILE_DATA_STORAGE_DATABASE = 2;

	// External storage identified by a connection string, e.g., a Windows Azure's BLOB Storage.
	FILE_DATA_STORAGE_EXTERNAL = 3;

	// External storage with Master Storage API.
	FILE_DATA_STORAGE_MASTER = 4;
}

// File formats.
enum FileFormat {

	// Native file format.
	FILE_FORMAT_NATIVE = 0;

	// PDF.
	FILE_FORMAT_PDF = 1;

	// PDF for display only (printing, copying, etc. disabled).
	FILE_FORMAT_DISPLAY_ONLY_PDF = 2;

	// Plain text (e.g., for full-text indexing or text analytics purposes).
	FILE_FORMAT_PLAIN_TEXT = 3;

	// Markdown (structured text, e.g., for AI/agent consumption).
	FILE_FORMAT_MARKDOWN = 4;
}

// The kind of a file reference: a specific file or a marker for all or any files.
enum FileIDType {

	// The file id has not been initialized.
	FILE_IDTYPE_UNINITIALIZED = 0;

	// File id represents all files of the object.
	FILE_IDTYPE_ALL = 1;

	// File id represents any file of the object.
	FILE_IDTYPE_ANY = 2;

	// File id represents a specific file.
	FILE_IDTYPE_SPECIFIC = 3;
}

// File property enumeration.
enum FileProperty {

	// Unknown property (not initialized to any type).
	FILE_PROPERTY_UNDEFINED = 0;

	// File name.
	FILE_PROPERTY_NAME = 1;

	// File extension.
	FILE_PROPERTY_EXTENSION = 2;

	// Directory name.
	FILE_PROPERTY_DIRECTORY = 3;

	// Created at time.
	FILE_PROPERTY_CREATED_AT = 4;

	// Last modified time.
	FILE_PROPERTY_LAST_MODIFIED_AT = 5;

	// Last accessed time.
	FILE_PROPERTY_LAST_ACCESSED_AT = 6;

	// File size in bytes.
	FILE_PROPERTY_SIZE = 7;

	// Is read-only.
	FILE_PROPERTY_IS_READ_ONLY = 8;

	// Is hidden.
	FILE_PROPERTY_IS_HIDDEN = 9;

	// Is archive.
	FILE_PROPERTY_IS_ARCHIVE = 10;

	// Owner.
	FILE_PROPERTY_OWNER = 11;

	// Computer.
	FILE_PROPERTY_COMPUTER = 12;
}

// Enumeration for specifying the file size precision settings.
enum FileSizePrecision {

	// The file size is exact.
	FILE_SIZE_PRECISION_EXACT = 0;

	// The file size is estimate.
	FILE_SIZE_PRECISION_ESTIMATE = 1;

	// The file size is not known.
	FILE_SIZE_PRECISION_UNKNOWN = 2;
}

// Enumeration for different conditions regarding file information.
enum FileValueType {

	// Does the document contain one or more files.
	FILE_VALUE_TYPE_HAS_FILES = 0;

	// File name (title + extension), can include DOS wildcards (such as *.txt).
	FILE_VALUE_TYPE_FILE_NAME = 1;

	// File size in bytes.
	FILE_VALUE_TYPE_FILE_SIZE = 2;

	// File ID.
	FILE_VALUE_TYPE_FILE_ID = 3;

	// The creation time of the file.
	FILE_VALUE_TYPE_CREATION_TIME = 4;

	// The change time of the file.
	FILE_VALUE_TYPE_CHANGE_TIME = 5;

	// Is the file is linked to an external location (Yes/No).
	FILE_VALUE_TYPE_LINKED_TO_EXTERNAL_LOCATION = 6;

	// The ID of the external location to which the file is linked. unset if not linked.
	FILE_VALUE_TYPE_LINKED_EXTERNAL_LOCATION_ID = 7;

	// Does the document have one or more duplicates.
	FILE_VALUE_TYPE_HAS_DUPLICATES = 8;
}

// The kind of a file version reference: a specific version or a marker.
enum FileVerType {

	// The file version has not been initialized.
	FILE_VER_TYPE_UNINITIALIZED = 0;

	// File version represents the latest version.
	FILE_VER_TYPE_LATEST = 1;

	// File version represents any version.
	FILE_VER_TYPE_ANY = 2;

	// File version specifies an exact file version.
	FILE_VER_TYPE_SPECIFIC = 3;
}

// Folder listing algorithm. Used to optimize property folder listings on intermediate view levels.
enum FolderListingAlgorithm {

	// None i.e. no manual determination, use the program's own heuristics. If this is used, a folder listing algorithm is determined automatically.
	FOLDER_LISTING_ALGORITHM_NONE = 0;

	// Tests each value (folder) separately but uses a single SQL query.
	FOLDER_LISTING_ALGORITHM_TEST_EACH_VALUE_WITH_SINGLE_QUERY = 1;

	// Gets matching values (folders) based on their distinct use in the objects.
	FOLDER_LISTING_ALGORITHM_GET_VALUES_BY_DISTINCT_USE = 2;

	// Tests each value (folder) separately, uses a separate SQL query for each folder to be tested.
	FOLDER_LISTING_ALGORITHM_TEST_EACH_VALUE_WITH_SEPARATE_QUERIES = 3;
}

// FolderListingViewMode enumeration.
enum FolderListingViewMode {

	// Uninitialized view mode.
	FOLDER_LISTING_VIEW_MODE_UNINITIALIZED = 0;

	// Listing in icon mode.
	FOLDER_LISTING_VIEW_MODE_ICON = 1;

	// Listing in small icon mode.
	FOLDER_LISTING_VIEW_MODE_SMALL_ICON = 2;

	// Listing in list mode.
	FOLDER_LISTING_VIEW_MODE_LIST = 3;

	// Listing in details mode.
	FOLDER_LISTING_VIEW_MODE_DETAILS = 4;

	// Listing in thumbnail mode.
	FOLDER_LISTING_VIEW_MODE_THUMBNAIL = 5;

	// Listing in tile mode.
	FOLDER_LISTING_VIEW_MODE_TILE = 6;

	// Listing in thumbstrip mode.
	FOLDER_LISTING_VIEW_MODE_THUMBSTRIP = 7;

	// Listing in content mode.
	FOLDER_LISTING_VIEW_MODE_CONTENT = 8;
}

// Where a folder tree is attached.
enum FolderTreeAnchorType {

	// Not specified. Rejected.
	FOLDER_TREE_ANCHOR_TYPE_UNSPECIFIED = 0;

	// The top level of the Traditional Folders.
	FOLDER_TREE_ANCHOR_TYPE_TRADITIONAL_ROOT = 1;

	// An existing Traditional Folder.
	FOLDER_TREE_ANCHOR_TYPE_FOLDER = 2;

	// The top level of a Workspace view location.
	FOLDER_TREE_ANCHOR_TYPE_VIEW_LOCATION = 3;
}

// Folder type enumeration.
enum FolderType {

	// Unknown.
	FOLDER_TYPE_UNKNOWN = 0;

	// Any folder.
	FOLDER_TYPE_ANY_FOLDER = 1;

	// View folder.
	FOLDER_TYPE_VIEW_FOLDER = 2;

	// Property (virtual) folder.
	FOLDER_TYPE_PROPERTY_FOLDER = 3;

	// Traditional folder.
	FOLDER_TYPE_TRADITIONAL_FOLDER = 4;

	// Search folder (extended view folder).
	FOLDER_TYPE_SEARCH_FOLDER = 5;

	// External view folder.
	FOLDER_TYPE_EXTERNAL_VIEW_FOLDER = 6;
}

// Formatting types.
enum FormattingType {

	// No formatting.
	FORMATTING_TYPE_NONE = 0;
}

// AuthType enumeration.
enum IconFormat {

	// .ico format, multi-size.
	ICON_FORMAT_ICO = 0;

	ICON_FORMAT_PNG = 1;
}

// Impersonation type.
enum ImpersonationType {

	// Local System account.
	IMPERSONATION_TYPE_SYSTEM_ACCOUNT = 0;

	// Specific Windows account.
	IMPERSONATION_TYPE_LOCAL_WINDOWS_ACCOUNT = 1;

	// Specific account for an external facility or service such as a database server.
	IMPERSONATION_TYPE_EXTERNAL_ACCOUNT = 2;
}

// Index configuration type enumeration. Defines the type of an index configuration.
enum IndexConfigurationType {

	// Unknown.
	INDEX_CONFIGURATION_TYPE_UNKNOWN = 0;

	// Legacy (non-shared) index configuration. Vault and external repositories have separate index configurations.
	INDEX_CONFIGURATION_TYPE_LEGACY = 1;

	// Shared index configuration. External repositories don't have separate index configurations. The same index configuration is used between vault and external repositories.
	INDEX_CONFIGURATION_TYPE_SHARED = 2;

	// Any. Not a real index configuration type but it helps requesting transition to shared index configurations.
	INDEX_CONFIGURATION_TYPE_ANY = 3;
}

// AuthType enumeration.
enum IndexedDataType {

	// The data we want to index has not been specified.
	INDEXED_DATA_TYPE_UNSPECIFIED = 0;

	// The indexer will index only the metadata of the specified vault.
	INDEXED_DATA_TYPE_METADATA = 1;

	// The indexer will index only the file data of the specified vault.
	INDEXED_DATA_TYPE_FILE_DATA = 2;

	// The indexer will index both the metadata and file data of the specified vault.
	INDEXED_DATA_TYPE_COMBINED = 3;
}

// Indexer data availability modes.
enum IndexerDataAvailability {

	// Unknown data availability.
	INDEXER_DATA_AVAILABILITY_UNKNOWN = 0;

	// Data normally available.
	INDEXER_DATA_AVAILABILITY_AVAILABLE = 1;

	// Data not available because all currently available data was already received.
	INDEXER_DATA_AVAILABILITY_EXHAUSTED = 2;

	// Data not available because of e.g. shutdown.
	INDEXER_DATA_AVAILABILITY_ABORTED = 3;
}

// Indexer location enumeration. Server should use location as hint when determining how data is given for indexing.
enum IndexerLocation {

	// Uninitialized.
	INDEXER_LOCATION_UNINITIALIZED = 0;

	// Indexer is internal legacy MFIndexer.
	INDEXER_LOCATION_LEGACY = 1;

	// Indexer is located outside M-Files Server computer.
	INDEXER_LOCATION_EXTERNAL = 2;
}

// Indexer partitioning modes.
enum IndexerPartitioningMode {

	// Simple partitioning mode based on modulo.
	INDEXER_PARTITIONING_MODE_MODULO = 0;
}

// IndexingMode enumeration.
enum IndexingMode {

	// Unknown.
	INDEXING_MODE_UNKNOWN = 0;

	// Idle.
	INDEXING_MODE_IDLE = 1;

	// Normal.
	INDEXING_MODE_NORMAL = 2;

	// Destructions.
	INDEXING_MODE_DESTRUCTIONS = 3;

	// Rebuild (normal).
	INDEXING_MODE_REBUILD_NORMAL = 4;

	// Rebuild (destructions).
	INDEXING_MODE_REBUILD_DESTRUCTIONS = 5;

	// Relevance scores update.
	INDEXING_MODE_RELEVANCE = 6;

	// ACL-only update.
	INDEXING_MODE_ACL = 7;
}

// Index management operations.
enum IndexManagementOperation {

	// Unknown operation.
	INDEX_MANAGEMENT_OPERATION_UNKNOWN = 0;

	// Rebuild index.
	INDEX_MANAGEMENT_OPERATION_REBUILD = 1;

	// Perform re-index operation.
	INDEX_MANAGEMENT_OPERATION_REINDEX = 2;

	// Activate index.
	INDEX_MANAGEMENT_OPERATION_ACTIVATE = 3;

	// Enable index for indexing.
	INDEX_MANAGEMENT_OPERATION_ENABLE = 4;

	// Disable index.
	INDEX_MANAGEMENT_OPERATION_DISABLE = 5;

	// Delete index.
	INDEX_MANAGEMENT_OPERATION_DELETE = 6;
}

// Indirect property ID level type enumeration.
enum IndirectPropertyIDLevelType {

	// Property def.
	INDIRECT_PROPERTY_IDLEVEL_TYPE_PROPERTY_DEF = 0;

	// Object type.
	INDIRECT_PROPERTY_IDLEVEL_TYPE_OBJECT_TYPE = 1;

	// State changer.
	INDIRECT_PROPERTY_IDLEVEL_TYPE_WORKFLOW_STATE = 2;
}

// Event type enumeration.
enum InternalEventType {

	// Undefined internal event.
	INTERNAL_EVENT_TYPE_UNDEFINED = 0;

	// An event triggered before setting properties for a document.
	INTERNAL_EVENT_TYPE_BEFORE_SET_PROPERTIES = 1;

	// An event triggered after setting properties for a document.
	INTERNAL_EVENT_TYPE_AFTER_SET_PROPERTIES = 2;

	// An event triggered after creating a new object.
	INTERNAL_EVENT_TYPE_AFTER_CREATE_NEW_OBJECT_FINALIZE = 3;

	// An event triggered before check-in when changes have been made to the object version.
	INTERNAL_EVENT_TYPE_BEFORE_CHECK_IN_CHANGES = 4;

	// An event triggered after check-in when changes have been made to the object version.
	INTERNAL_EVENT_TYPE_AFTER_CHECK_IN_CHANGES = 5;

	// An event triggered before checkout.
	INTERNAL_EVENT_TYPE_BEFORE_CHECK_OUT = 6;

	// An event triggered after checkout.
	INTERNAL_EVENT_TYPE_AFTER_CHECK_OUT = 7;

	// An event triggered before changes to the latest version of the object are cancelled.
	INTERNAL_EVENT_TYPE_BEFORE_CANCEL_CHECKOUT = 8;

	// An event triggered after changes to the latest version of the object are cancelled.
	INTERNAL_EVENT_TYPE_AFTER_CANCEL_CHECKOUT = 9;

	// An event triggered before deleting an object.
	INTERNAL_EVENT_TYPE_BEFORE_DELETE_OBJECT = 10;

	// An event triggered after deleting an object.
	INTERNAL_EVENT_TYPE_AFTER_DELETE_OBJECT = 11;

	// An event triggered before destroying an object.
	INTERNAL_EVENT_TYPE_BEFORE_DESTROY_OBJECT = 12;

	// An event triggered after destroying an object.
	INTERNAL_EVENT_TYPE_AFTER_DESTROY_OBJECT = 13;

	// An event triggered before setting permissions for an object.
	INTERNAL_EVENT_TYPE_BEFORE_SET_OBJECT_PERMISSIONS = 14;

	// An event triggered after setting permissions for an object.
	INTERNAL_EVENT_TYPE_AFTER_SET_OBJECT_PERMISSIONS = 15;

	// An event triggered before starting file upload.
	INTERNAL_EVENT_TYPE_BEFORE_FILE_UPLOAD = 16;

	// An event triggered after file upload has finished.
	INTERNAL_EVENT_TYPE_AFTER_FILE_UPLOAD = 17;

	// An event triggered before starting file download.
	INTERNAL_EVENT_TYPE_BEFORE_FILE_DOWNLOAD = 18;

	// An event triggered after file download has finished.
	INTERNAL_EVENT_TYPE_AFTER_FILE_DOWNLOAD = 19;

	// An event triggered before creating new value list item.
	INTERNAL_EVENT_TYPE_BEFORE_CREATE_NEW_VALUE_LIST_ITEM = 20;

	// An event triggered after creating new value list item.
	INTERNAL_EVENT_TYPE_AFTER_CREATE_NEW_VALUE_LIST_ITEM = 21;

	// An event triggered before a user logs in to a vault.
	INTERNAL_EVENT_TYPE_BEFORE_LOGIN_TO_VAULT = 22;

	// An event triggered after user has logged in to a vault.
	INTERNAL_EVENT_TYPE_AFTER_LOGIN_TO_VAULT = 23;

	// An event triggered just prior a users logs off.
	INTERNAL_EVENT_TYPE_BEFORE_LOGOUT_FROM_VAULT = 24;

	// An event triggered after user has logged off.
	INTERNAL_EVENT_TYPE_AFTER_LOGOUT_FROM_VAULT = 25;

	// An event triggered before running a scheduled job.
	INTERNAL_EVENT_TYPE_BEFORE_RUN_SCHEDULED_JOB = 26;

	// An event triggered after running a scheduled job.
	INTERNAL_EVENT_TYPE_AFTER_RUN_SCHEDULED_JOB = 27;

	// An event triggered before a new object is checked in.
	INTERNAL_EVENT_TYPE_BEFORE_CREATE_NEW_OBJET_FINALIZE = 28;

	// An event triggered before an object that has never been checked-in is destroyed.
	INTERNAL_EVENT_TYPE_BEFORE_CANCEL_CREATE_OBJECT = 29;

	// An event triggered after an object that has never been checked-in is destroyed.
	INTERNAL_EVENT_TYPE_AFTER_CANCEL_CREATE_OBJECT = 30;

	// An event triggered before destroying an object version.
	INTERNAL_EVENT_TYPE_BEFORE_DESTROY_OBJECT_VERSION = 31;

	// An event triggered after destroying an object version.
	INTERNAL_EVENT_TYPE_AFTER_DESTROY_OBJECT_VERSION = 32;

	// An event triggered after check-in has been performed upon restoring a new object during archiving.
	INTERNAL_EVENT_TYPE_AFTER_REPLICATION_CREATE_OBJECT_FINALIZE = 33;

	// eInternalEventReplication_BeforeCreateNewObjectFinalize = 35,  //!< An event triggered before check-in has been performed upon restoring a new object during archiving.
	// eInternalEventReplication_BeforeCheckInChanges = 34,  //!< An event triggered before check-in has been performed upon restoring object versions to an existing object during archiving.
	INTERNAL_EVENT_TYPE_AFTER_REPLICATION_CHECK_IN_CHANGES = 34;

	// An event triggered explicitly by client (so called vault extension method).
	INTERNAL_EVENT_TYPE_VAULT_EXTENSION_METHOD = 35;

	// An event triggered before a login account is created in the server.
	INTERNAL_EVENT_TYPE_BEFORE_CREATE_LOGIN_ACCOUNT = 36;

	// An event triggered after a login account is created in the server.
	INTERNAL_EVENT_TYPE_AFTER_CREATE_LOGIN_ACCOUNT = 37;

	// An event triggered before a login account is modified in the server.
	INTERNAL_EVENT_TYPE_BEFORE_MODIFY_LOGIN_ACCOUNT = 38;

	// An event triggered after a login account is modified in the server.
	INTERNAL_EVENT_TYPE_AFTER_MODIFY_LOGIN_ACCOUNT = 39;

	// An event triggered before a login account is removed from the server.
	INTERNAL_EVENT_TYPE_BEFORE_REMOVE_LOGIN_ACCOUNT = 40;

	// An event triggered after a login account is removed from the server.
	INTERNAL_EVENT_TYPE_AFTER_REMOVE_LOGIN_ACCOUNT = 41;

	// An event triggered before a user account is created in the vault.
	INTERNAL_EVENT_TYPE_BEFORE_CREATE_USER_ACCOUNT = 42;

	// An event triggered after a user account is created in the vault.
	INTERNAL_EVENT_TYPE_AFTER_CREATE_USER_ACCOUNT = 43;

	// An event triggered before a user account is modified in the vault.
	INTERNAL_EVENT_TYPE_BEFORE_MODIFY_USER_ACCOUNT = 44;

	// An event triggered after a user account is modified in the vault.
	INTERNAL_EVENT_TYPE_AFTER_MODIFY_USER_ACCOUNT = 45;

	// An event triggered before a user account is removed from the vault.
	INTERNAL_EVENT_TYPE_BEFORE_REMOVE_USER_ACCOUNT = 46;

	// An event triggered after a user account is removed from the vault.
	INTERNAL_EVENT_TYPE_AFTER_REMOVE_USER_ACCOUNT = 47;

	// An event triggered before a user group is created in the vault.
	INTERNAL_EVENT_TYPE_BEFORE_CREATE_USER_GROUP = 48;

	// An event triggered after a user group is created in the vault.
	INTERNAL_EVENT_TYPE_AFTER_CREATE_USER_GROUP = 49;

	// An event triggered before a user group is modified in the vault.
	INTERNAL_EVENT_TYPE_BEFORE_MODIFY_USER_GROUP = 50;

	// An event triggered after a user group is modified in the vault.
	INTERNAL_EVENT_TYPE_AFTER_MODIFY_USER_GROUP = 51;

	// An event triggered before a user group is removed from the vault.
	INTERNAL_EVENT_TYPE_BEFORE_REMOVE_USER_GROUP = 52;

	// An event triggered after a user group is removed from the vault.
	INTERNAL_EVENT_TYPE_AFTER_REMOVE_USER_GROUP = 53;

	// An event triggered after the vault has changed to online state.
	INTERNAL_EVENT_TYPE_AFTER_BRING_ONLINE = 54;

	// An event triggered before the vault has changed to offline state.
	INTERNAL_EVENT_TYPE_BEFORE_TAKE_OFFLINE = 55;

	// An event triggered after the object has been completely checked in.
	INTERNAL_EVENT_TYPE_AFTER_CHECK_IN_CHANGES_FINALIZE = 56;

	// An event triggered after a new transaction or nested pseudo-transaction is started.
	INTERNAL_EVENT_TYPE_AFTER_BEGIN_TRANSACTION = 57;

	// An event triggered before a transaction or nested pseudo-transaction is committed.
	INTERNAL_EVENT_TYPE_BEFORE_COMMIT_TRANSACTION = 58;

	// An event triggered before a transaction or nested pseudo-transaction is rolled back.
	INTERNAL_EVENT_TYPE_BEFORE_ROLLBACK_TRANSACTION = 59;

	// An event triggered after the undo checkout is complete and we can work on top of the previous version.
	INTERNAL_EVENT_TYPE_AFTER_CANCEL_CHECKOUT_FINALIZE = 60;

	// An event triggered before the object is undeleted.
	INTERNAL_EVENT_TYPE_BEFORE_UNDELETE_OBJECT = 61;

	// An event triggered after the object is undeleted.
	INTERNAL_EVENT_TYPE_AFTER_UNDELETE_OBJECT = 62;

	// An event triggered after the object undelete is complete and we can work with the undeleted object.
	INTERNAL_EVENT_TYPE_AFTER_UNDELETE_OBJECT_FINALIZE = 63;

	// An event triggered before the password of the M-Files login account is changed.
	INTERNAL_EVENT_TYPE_BEFORE_MODIFY_MFILES_CREDENTIALS = 64;

	// An event triggered after the password of the M-Files login account is changed.
	INTERNAL_EVENT_TYPE_AFTER_MODIFY_MFILES_CREDENTIALS = 65;

	// An event triggered after before returning a view to client.
	INTERNAL_EVENT_TYPE_BEFORE_RETURN_VIEW = 66;

	// An event triggered just before check-in after the workflow transitions, and signatures are finalized.
	INTERNAL_EVENT_TYPE_BEFORE_CHECK_IN_CHANGES_FINALIZE = 67;

	// An event triggered just before a view is created.
	INTERNAL_EVENT_TYPE_BEFORE_CREATE_VIEW = 68;

	// An event triggered just after a view is created.
	INTERNAL_EVENT_TYPE_AFTER_CREATE_VIEW = 69;

	// An event triggered just before a view is modified.
	INTERNAL_EVENT_TYPE_BEFORE_MODIFY_VIEW = 70;

	// An event triggered just after a view is modified.
	INTERNAL_EVENT_TYPE_AFTER_MODIFY_VIEW = 71;

	// An event triggered just before a view is deleted.
	INTERNAL_EVENT_TYPE_BEFORE_DELETE_VIEW = 72;

	// An event triggered just after a view is deleted.
	INTERNAL_EVENT_TYPE_AFTER_DELETE_VIEW = 73;

	// An event triggered just before a member is added to user group.
	INTERNAL_EVENT_TYPE_BEFORE_ADD_USER_GROUP_MEMBER = 74;

	// An event triggered just after a member is added to user group.
	INTERNAL_EVENT_TYPE_AFTER_ADD_USER_GROUP_MEMBER = 75;

	// An event triggered just before a member is removed from user group.
	INTERNAL_EVENT_TYPE_BEFORE_REMOVE_USER_GROUP_MEMBER = 76;

	// An event triggered just after a member is removed from user group.
	INTERNAL_EVENT_TYPE_AFTER_REMOVE_USER_GROUP_MEMBER = 77;

	// An event triggered explicitly by client (so called vault extension method).
	INTERNAL_EVENT_TYPE_VAULT_ANONYMOUS_EXTENSION_METHOD = 78;
}

// Job type enumeration.
enum JobType {

	// Unknown type (not initialized to any type).
	JOB_TYPE_UNINITIALIZED = 0;

	// Backup job.
	JOB_TYPE_BACKUP = 1;

	// Restore job.
	JOB_TYPE_RESTORE = 2;

	// Vault copying job.
	JOB_TYPE_COPY_VAULT = 3;

	// Vault verifying job.
	JOB_TYPE_VERIFY_VAULT = 4;

	// Archiving documents job.
	JOB_TYPE_ARCHIVE_OBJECTS = 5;

	// Archiving old document versions job.
	JOB_TYPE_ARCHIVE_OLD_VERSIONS = 6;

	// Restoring documents from archive job.
	JOB_TYPE_RESTORE_FROM_ARCHIVE = 7;

	// Optimize the vault.
	JOB_TYPE_OPTIMIZE_VAULT = 8;

	// Recalculate a property.
	JOB_TYPE_RECALCULATE_PROPERTY = 9;

	// Vault migration job.
	JOB_TYPE_MIGRATE_VAULT = 10;

	// Encrypt vault file data job.
	JOB_TYPE_ENCRYPT_FILE_DATA = 11;
}

// Licensed product feature.
enum LicensedProductFeature {

	// None.
	LICENSED_PRODUCT_FEATURE_NONE = 0;

	// OCR.
	LICENSED_PRODUCT_FEATURE_OCR = 1;

	// 21 CFR Part 11.
	LICENSED_PRODUCT_FEATURE_ELECTRONIC_SIGNATURES = 2;

	// Data export and Reporting.
	LICENSED_PRODUCT_FEATURE_REPORTING = 4;

	// OCR hyper-compression.
	LICENSED_PRODUCT_FEATURE_OCR_HYPER_COMPRESSION = 8;

	// Intelligent Metadata Layer.
	LICENSED_PRODUCT_FEATURE_INTELLIGENT_METADATA_LAYER = 16;

	// Web User Interface.
	LICENSED_PRODUCT_FEATURE_WEB_USER_INTERFACE = 32;

	// Google g suite.
	LICENSED_PRODUCT_FEATURE_EMBEDDED_GOOGLE_GSUITE = 64;

	// SharePoint Online.
	LICENSED_PRODUCT_FEATURE_EMBEDDED_SHARE_POINT = 128;

	// Salesforce Online.
	LICENSED_PRODUCT_FEATURE_EMBEDDED_SALESFORCE = 256;

	// Esri ArcGIS.
	LICENSED_PRODUCT_FEATURE_EMBEDDED_ARC_GIS = 512;

	// Outlook Add-in.
	LICENSED_PRODUCT_FEATURE_OUTLOOK_ADDIN = 1024;

	// Aino Usage: Semantic Index.
	LICENSED_PRODUCT_FEATURE_AINO_INSIGHTS = 2048;

	// AI Search.
	LICENSED_PRODUCT_FEATURE_AI_SEARCH = 4096;
}

// License type enumeration.
enum LicenseType {

	// No license.
	LICENSE_TYPE_NONE = 0;

	// Named user license.
	LICENSE_TYPE_NAMED_USER_LICENSE = 1;

	// Concurrent user license.
	LICENSE_TYPE_CONCURRENT_USER_LICENSE = 2;

	// Read-only license.
	LICENSE_TYPE_READ_ONLY_LICENSE = 3;

	// Visitor license.
	LICENSE_TYPE_VISITOR_LICENSE = 4;
}

// LogicalTimestampIntegerPrioritySeparationMode enumeration.
enum LogicalTimestampIntegerPrioritySeparationMode {

	// Timestamp is collectively relevant for all changes regardless of the initiator.
	LOGICAL_TIMESTAMP_INTEGER_PRIORITY_SEPARATION_MODE_ALL = 0;

	// Timestamp is relevant for user-initiated changes only.
	LOGICAL_TIMESTAMP_INTEGER_PRIORITY_SEPARATION_MODE_USER = 1;

	// Timestamp is relevant for system-initiated changes only.
	LOGICAL_TIMESTAMP_INTEGER_PRIORITY_SEPARATION_MODE_SYSTEM = 2;

	// Timestamp is separately relevant for both user-initiated and system-initiated changes.
	LOGICAL_TIMESTAMP_INTEGER_PRIORITY_SEPARATION_MODE_USER_AND_SYSTEM = 3;
}

// LogicalTimestampType enumeration.
enum LogicalTimestampType {

	// Uninitialized.
	LOGICAL_TIMESTAMP_TYPE_UNINITIALIZED = 0;

	// The logical timestmap should be ignored.
	LOGICAL_TIMESTAMP_TYPE_IGNORED = 1;

	// The logical timestamp is represented by a 64-bit integer.
	LOGICAL_TIMESTAMP_TYPE_INTEGER = 2;

	// The logical timestamp is represented by a string with a chronological timestamp for order comparison.
	LOGICAL_TIMESTAMP_TYPE_STRING = 3;

	// The logical timestamp is represented by a 64-bit integer and a string with a chronological timestamp for order comparison. Two logical timestamps i.e. combination of eLogicalTimestampTypeInteger and eLogicalTimestampTypeString.
	LOGICAL_TIMESTAMP_TYPE_INTEGER_AND_STRING = 4;
}

// Mail protocol enumeration.
enum MailProtocol {

	// Undefined.
	MAIL_PROTOCOL_NONE = 0;

	// POP3.
	MAIL_PROTOCOL_POP = 1;

	// IMAP4.
	MAIL_PROTOCOL_IMAP = 2;

	// Exchange interface (EWS). DEPRECATED, DO NOT USE.
	MAIL_PROTOCOL_EXCHANGE = 3;

	// Microsoft Graph plugin.
	MAIL_PROTOCOL_REST_API = 4;

	// Aspose.Email IMAP4 plugin.
	MAIL_PROTOCOL_IMAP4_PLUGIN = 5;
}

// Mail source authentication type enumeration.
enum MailSourceAuthType {

	// Undefined.
	MAIL_SOURCE_AUTH_TYPE_NONE = 0;

	// Basic authentication.
	MAIL_SOURCE_AUTH_TYPE_BASIC = 1;

	// OAuth2 authentication.
	MAIL_SOURCE_AUTH_TYPE_OAUTH2 = 2;
}

// External mail source OAuth2 type enumeration.
enum MailSourceOauth2Status {

	// Undefined.
	MAIL_SOURCE_OAUTH2_STATUS_NONE = 0;

	// Error in Authentication.
	MAIL_SOURCE_OAUTH2_STATUS_ERROR = 1;

	// Authentication has been successfully done.
	MAIL_SOURCE_OAUTH2_STATUS_AUTHENTICATED = 2;

	// Authentication has expired.
	MAIL_SOURCE_OAUTH2_STATUS_EXPIRED = 3;
}

// Mail source OAuth2 type enumeration.
enum MailSourceOauth2Type {

	// Undefined.
	MAIL_SOURCE_OAUTH2_TYPE_NONE = 0;

	// Microsoft OAuth2 with Microsoft Authentication Library (MSAL).
	MAIL_SOURCE_OAUTH2_TYPE_MICROSOFT_OAUTH2 = 1;

	// Google OAuth2.
	MAIL_SOURCE_OAUTH2_TYPE_GOOGLE_OAUTH2 = 2;
}

// Target save as type.
enum MailStorageFormat {

	// Undefined.
	MAIL_STORAGE_FORMAT_NONE = 0;

	// The message should stored in plain text file. (*.txt)
	MAIL_STORAGE_FORMAT_TXT = 1;

	// Outlook message format.
	MAIL_STORAGE_FORMAT_MSG = 2;

	// Raw RFC-822 format.
	MAIL_STORAGE_FORMAT_EML = 3;
}

enum MetadataStructureItem {

	// None.
	METADATA_STRUCTURE_ITEM_NONE = 0;

	// Object type.
	METADATA_STRUCTURE_ITEM_OBJECT_TYPE = 1;

	// Property def.
	METADATA_STRUCTURE_ITEM_PROPERTY_DEF = 2;

	// Class.
	METADATA_STRUCTURE_ITEM_OBJECT_CLASS = 3;

	// Workflow.
	METADATA_STRUCTURE_ITEM_WORKFLOW = 4;

	// State.
	METADATA_STRUCTURE_ITEM_STATE = 5;

	// Named ACL.
	METADATA_STRUCTURE_ITEM_NAMED_ACL = 6;

	// User.
	METADATA_STRUCTURE_ITEM_USER = 7;

	// User group.
	METADATA_STRUCTURE_ITEM_USER_GROUP = 8;

	// Class group.
	METADATA_STRUCTURE_ITEM_CLASS_GROUP = 9;

	// View definition.
	METADATA_STRUCTURE_ITEM_VIEW_DEF = 10;

	// Language.
	METADATA_STRUCTURE_ITEM_LANGUAGE = 11;

	// An access control list.
	METADATA_STRUCTURE_ITEM_ACL = 12;

	// Value list item.
	METADATA_STRUCTURE_ITEM_VALUE_LIST_ITEM = 13;

	// Value list.
	METADATA_STRUCTURE_ITEM_VALUE_LIST = 14;

	// Vault-specific event handler.
	METADATA_STRUCTURE_ITEM_EVENT_HANDLER = 15;

	// State transition.
	METADATA_STRUCTURE_ITEM_STATE_TRANSITION = 16;

	// Metadata card configuration.
	METADATA_STRUCTURE_ITEM_METADATA_CARD_CONFIGURATION = 17;

	// All item types. DO NOT use this for mapping.
	METADATA_STRUCTURE_ITEM_ALL = 10000;
}

enum MFilesAPIMode {

	MFILES_APIMODE_NORMAL = 0;

	MFILES_APIMODE_INTERNAL_SERVER_ACCESS = 1;

	MFILES_APIMODE_INTERNAL_SERVER_ACCESS_WITH_VAULT_MANAGEMENT = 2;
}

// Specifies what is done to the source object after the migration.
enum MigrationSourceObjectPolicy {

	// Unspecified.
	MIGRATION_SOURCE_OBJECT_POLICY_UNSPECIFIED = 0;

	// The source object is left as-is.
	MIGRATION_SOURCE_OBJECT_POLICY_KEEP = 1;

	// The source object is deleted.
	MIGRATION_SOURCE_OBJECT_POLICY_DELETE = 2;

	// The source object is destroyed.
	MIGRATION_SOURCE_OBJECT_POLICY_DESTROY = 3;
}

// MonitoringContext enumeration.
enum MonitoringContext {

	// Unknown monitoring context.
	MONITORING_CONTEXT_UNSPECIFIED = 0;

	// Monitoring context for indexing.
	MONITORING_CONTEXT_INDEXING = 1;
}

// Each named ACL is always of exactly one type, e.g., eNACLTypeNormal or eNACLTypeInternal.
// We specify these types as bitfields because multiple types are combined (bitwise ORed) for searching
// purposes. For example, see the GetNamedACLs RPC method for more details.
enum NACLType {

	// None.
	NACLTYPE_NONE = 0;

	// Normal NACL that the user can select when specifying the permissions of the object, for example.
	NACLTYPE_NORMAL = 1;

	// Internal NACL, used for internal purposes.
	NACLTYPE_INTERNAL = 2;
}

// Enumeration of possible named value types.
enum NamedValueType {

	// Uninitialized value.
	NAMED_VALUE_TYPE_UNINITIALIZED = 0;

	// The last used value of an automatic numbering propertydef. Name = <PropertyDef ID>.
	NAMED_VALUE_TYPE_PROPERTY_AUTOMATIC_NUMBERING = 1;

	// A vault specific variable saved by the script. Name = <case-insensitive text>.
	NAMED_VALUE_TYPE_VAULT_SHARED_VARIABLE = 2;

	// Configuration value type (user readable/admin writable. Writing requires 'change metadata structure' permission).
	NAMED_VALUE_TYPE_METADATA_CONFIGURATION_VALUE = 3;

	// User defined value type (user readable/writable).
	NAMED_VALUE_TYPE_USER_CONFIGURATION_VALUE = 4;

	// Read-only value type that is stored into registry.
	NAMED_VALUE_TYPE_REGISTRY_VALUE = 5;

	// Configuration value type (user readable/admin writable. Writing requires 'manage common views' permission).
	NAMED_VALUE_TYPE_FOLDER_CONFIGURATION_VALUE = 6;

	// Configuration value type (admin readable/admin writable).
	NAMED_VALUE_TYPE_ADMIN_CONFIGURATION_VALUE = 7;

	// Configuration value type (admin readable/system admin writable).
	NAMED_VALUE_TYPE_SYSTEM_CONFIGURATION_VALUE = 8;

	NAMED_VALUE_TYPE_USER_SPECIFIC_VALUE = 9;
}

// Object skipped indexing reasons.
enum ObjectSkippedIndexingReason {

	// Unspecified reason.
	OBJECT_SKIPPED_INDEXING_REASON_UNSPECIFIED = 0;

	// Exceeds allowed max file size by configuration.
	OBJECT_SKIPPED_INDEXING_REASON_CONFIG_FILE_SIZE = 1;

	// Not included in allowed file extensions by configuration.
	OBJECT_SKIPPED_INDEXING_REASON_CONFIG_FILE_EXTENSION = 2;

	// Text extraction timeout by configuration.
	OBJECT_SKIPPED_INDEXING_REASON_CONFIG_TIMEOUT_TEXT_EXTRACTION = 3;

	// File not found error.
	OBJECT_SKIPPED_INDEXING_REASON_ERROR_FILE_NOT_FOUND = 4;

	// File access denied error.
	OBJECT_SKIPPED_INDEXING_REASON_ERROR_FILE_ACCESS_DENIED = 5;

	// File data not available error.
	OBJECT_SKIPPED_INDEXING_REASON_ERROR_FILE_DATA_NOT_AVAILABLE = 6;

	// File is in use (by some other process for example).
	OBJECT_SKIPPED_INDEXING_REASON_ERROR_FILE_IN_USE = 7;

	// File size mismatch error. We got a different amount of data than expected.
	OBJECT_SKIPPED_INDEXING_REASON_ERROR_FILE_SIZE_MISMATCH = 8;

	// Error while fetching object metadata.
	OBJECT_SKIPPED_INDEXING_REASON_ERROR_METADATA = 9;
}

// Error tolerance enumeration for object version data request.
enum ObjectVersionDataRequestErrorTolerance {

	// The request will fail on any error.
	OBJECT_VERSION_DATA_REQUEST_ERROR_TOLERANCE_FAIL_ON_ANY_ERROR = 0;

	// The request will not fail if object versions is missing.
	OBJECT_VERSION_DATA_REQUEST_ERROR_TOLERANCE_ALLOW_MISSING_OBJECT_VERSIONS = 1;
}

// Identity type enumeration for object version data request. Specifies how objects with changed identities are handled.
enum ObjectVersionDataRequestIdentityType {

	// Returned object IDs are same as in request.
	OBJECT_VERSION_DATA_REQUEST_IDENTITY_TYPE_SPECIFIC = 0;

	// Objects managed identity is returned, if it is available, even though the specified identity was unmanaged.
	OBJECT_VERSION_DATA_REQUEST_IDENTITY_TYPE_MANAGED_IF_AVAILABLE = 1;
}

// Version type enumeration for object version data request.
enum ObjectVersionDataRequestVersionType {

	// Search for specific object versions.
	OBJECT_VERSION_DATA_REQUEST_VERSION_TYPE_SPECIFIC_VERSIONS = 0;

	// Search for latest object versions. Supplied version ID parts are ignored. Objects can be also checked out to current user.
	OBJECT_VERSION_DATA_REQUEST_VERSION_TYPE_LATEST_VERSIONS = 1;

	// Search for ltest checked-in object versions.
	OBJECT_VERSION_DATA_REQUEST_VERSION_TYPE_LATEST_CHECKED_IN_VERSIONS = 2;
}

// Object file source type enumeration.
enum ObjFileSourceType {

	// Undefined object file source.
	OBJ_FILE_SOURCE_TYPE_UNDEFINED = 0;

	// Blank template object file source.
	OBJ_FILE_SOURCE_TYPE_BLANK_TEMPLATE = 1;

	// User defined template object file source.
	OBJ_FILE_SOURCE_TYPE_USER_DEFINED_TEMPLATE = 2;

	// Uploaded object file source.
	OBJ_FILE_SOURCE_TYPE_UPLOADED_FILE = 3;

	// Uploaded object file source.
	OBJ_FILE_SOURCE_TYPE_UPLOADED_FILES = 4;

	// Empty object file source (one or more files). The file contents have not been uploaded yet; only each file's title and extension are known at this point. This type may only be used when the object is created as a draft (the draft flag must be set); otherwise the request is rejected.
	OBJ_FILE_SOURCE_TYPE_EMPTY_FILES = 5;

	// Inline file content object file source.
	OBJ_FILE_SOURCE_TYPE_FILE_CONTENT = 6;
}

// The kind of an object version reference: a specific version, or a marker such as "latest".
//
// Send `OBJ_VER_VERSION_TYPE_SPECIFIC` unless a method documents that it accepts a marker. Several
// methods, for example `GetProperties` and `GetObjectFiles`, answer "Not found." to
// `OBJ_VER_VERSION_TYPE_LATEST`.
enum ObjVerVersionType {

	// Not set. Not accepted where a version is needed.
	OBJ_VER_VERSION_TYPE_UNINITIALIZED = 0;

	// The latest version. Used in lookup values (with `internal_version` -1) and accepted only by methods that say so.
	OBJ_VER_VERSION_TYPE_LATEST = 1;

	// Any version. Not accepted by `GetProperties`.
	OBJ_VER_VERSION_TYPE_ANY = 2;

	// All versions of the object.
	OBJ_VER_VERSION_TYPE_ALL = 3;

	// A specific version, given in `internal_version`.
	OBJ_VER_VERSION_TYPE_SPECIFIC = 4;

	// A value list item, which has no versions.
	OBJ_VER_VERSION_TYPE_VALUE_LIST_ITEM = 6;

	// The object as a whole rather than one of its versions.
	OBJ_VER_VERSION_TYPE_OBJECT_LEVEL_REFERENCE = 7;
}

// OCRBlockDimUnit enumeration.
enum OCRBlockDimUnitType {

	// Pixels.
	OCRBLOCK_DIM_UNIT_TYPE_PIXELS = 0;

	// Millimeters multiplied by 10  (1/10 mm precision).
	OCRBLOCK_DIM_UNIT_TYPE_MILLIMETERS_X10 = 1;

	// Inches multiplied by 100 (1/100 inch precision).
	OCRBLOCK_DIM_UNIT_TYPE_INCHES_X100 = 2;
}

// OCRLanguages enumeration.
enum OCRLanguageType {

	// 0
	OCRLANGUAGE_TYPE_NONE = 0;

	// 1
	OCRLANGUAGE_TYPE_NEUTRAL = 1;

	// 2
	OCRLANGUAGE_TYPE_NUMBERS_ONLY = 2;

	// 3
	OCRLANGUAGE_TYPE_ENGLISH_US = 3;

	// 4
	OCRLANGUAGE_TYPE_ENGLISH_GBR = 4;

	// 5
	OCRLANGUAGE_TYPE_GERMAN = 5;

	// 6
	OCRLANGUAGE_TYPE_FRENCH = 6;

	// 7
	OCRLANGUAGE_TYPE_SPANISH = 7;

	// 8
	OCRLANGUAGE_TYPE_ITALIAN = 8;

	// 9
	OCRLANGUAGE_TYPE_FINNISH = 9;

	// 10
	OCRLANGUAGE_TYPE_SWEDISH = 10;

	// 11
	OCRLANGUAGE_TYPE_DANISH = 11;

	// 12
	OCRLANGUAGE_TYPE_NORWEGIAN = 12;

	// 13
	OCRLANGUAGE_TYPE_NYNORSK = 13;

	// 14
	OCRLANGUAGE_TYPE_ESTONIAN = 14;

	// 15
	OCRLANGUAGE_TYPE_LATVIAN = 15;

	// 16
	OCRLANGUAGE_TYPE_LITHUANIAN = 16;

	// 17
	OCRLANGUAGE_TYPE_DUTCH = 17;

	// 18
	OCRLANGUAGE_TYPE_PORTUGUESE = 18;

	// 19
	OCRLANGUAGE_TYPE_BRAZILIAN = 19;

	// 20
	OCRLANGUAGE_TYPE_GALICIAN = 20;

	// 21
	OCRLANGUAGE_TYPE_ICELANDIC = 21;

	// 22
	OCRLANGUAGE_TYPE_GREEK = 22;

	// 23
	OCRLANGUAGE_TYPE_CZECH = 23;

	// 24
	OCRLANGUAGE_TYPE_HUNGARIAN = 24;

	// 25
	OCRLANGUAGE_TYPE_POLISH = 25;

	// 26
	OCRLANGUAGE_TYPE_ROMANIAN = 26;

	// 27
	OCRLANGUAGE_TYPE_SLOVAK = 27;

	// 28
	OCRLANGUAGE_TYPE_CROATIAN = 28;

	// 29
	OCRLANGUAGE_TYPE_SERBIAN = 29;

	// 30
	OCRLANGUAGE_TYPE_SLOVENIAN = 30;

	// 31
	OCRLANGUAGE_TYPE_LUXEMBOURGISH = 31;

	// 32
	OCRLANGUAGE_TYPE_SWISS_GERMAN = 32;

	// 33
	OCRLANGUAGE_TYPE_TURKISH = 33;

	// 34
	OCRLANGUAGE_TYPE_RUSSIAN = 34;

	// 35
	OCRLANGUAGE_TYPE_BYELO_RUSSIAN = 35;

	// 36
	OCRLANGUAGE_TYPE_UKRAINIAN = 36;

	// 37
	OCRLANGUAGE_TYPE_MACEDONIAN = 37;

	// 38
	OCRLANGUAGE_TYPE_BULGARIAN = 38;

	// 39
	OCRLANGUAGE_TYPE_AFRIKAANS = 39;

	// 40
	OCRLANGUAGE_TYPE_ALBANIAN = 40;

	// 41
	OCRLANGUAGE_TYPE_CATALAN = 41;

	// 42
	OCRLANGUAGE_TYPE_IRISH_GAELIC = 42;

	// 43
	OCRLANGUAGE_TYPE_SCOTTISH_GAELIC = 43;

	// 44
	OCRLANGUAGE_TYPE_WELSH = 44;

	// 45
	OCRLANGUAGE_TYPE_BASQUE = 45;

	// 46
	OCRLANGUAGE_TYPE_MEXICAN = 46;

	// 47
	OCRLANGUAGE_TYPE_JAPANESE = 47;

	// 48
	OCRLANGUAGE_TYPE_KOREAN = 48;

	// 49
	OCRLANGUAGE_TYPE_SIMPLIFIED_CHINESE = 49;

	// 50
	OCRLANGUAGE_TYPE_TRADITIONAL_CHINESE = 50;

	// 51
	OCRLANGUAGE_TYPE_HEBREW = 51;

	// 52
	OCRLANGUAGE_TYPE_ARABIC = 52;

	// 53
	OCRLANGUAGE_TYPE_FARSI = 53;
}

// OCR Operation type enumeration.
enum OCROperationType {

	// Unknown operation.
	OCROPERATION_TYPE_NONE = 0;

	// Output a searchable PDF.
	OCROPERATION_TYPE_CONVERT_TO_SEARCHABLE_PDF = 1;

	// Recognize all the blocks specified in the request.
	OCROPERATION_TYPE_RECOGNIZE_SPECIFIC_BLOCKS = 2;

	// Recognize any blocks found from the document.
	OCROPERATION_TYPE_RECOGNIZE_ANY_BLOCKS = 3;

	// Output a searchable PDF and recognize all the blocks specified in the request..
	OCROPERATION_TYPE_CONVERT_TO_SEARCHABLE_PDF_AND_RECOGNIZE_SPECIFIC_BLOCKS = 4;

	// Output a searchable PDF and recognize any blocks found from the document.
	OCROPERATION_TYPE_CONVERT_TO_SEARCHABLE_PDF_AND_RECOGNIZE_ANY_BLOCKS = 5;

	// Output a searchable PDF/A-1b.
	OCROPERATION_TYPE_CONVERT_TO_SEARCHABLE_ARCHIVE_PDF = 6;

	// Output a searchable PDF/A-1b and recognize all the blocks specified in the request..
	OCROPERATION_TYPE_CONVERT_TO_SEARCHABLE_ARCHIVE_PDF_AND_RECOGNIZE_SPECIFIC_BLOCKS = 7;

	OCROPERATION_TYPE_CONVERT_TO_SEARCHABLE_ARCHIVE_PDF_AND_RECOGNIZE_ANY_BLOCKS = 8;
}

// The state of an OCR job of a stateless upload (OCRUploadedFile).
enum OCRUploadedFileState {

	// Not specified.
	OCRUPLOADED_FILE_STATE_UNSPECIFIED = 0;

	// The job is waiting for a server to process it.
	OCRUPLOADED_FILE_STATE_QUEUED = 1;

	// A server is processing the job.
	OCRUPLOADED_FILE_STATE_RUNNING = 2;

	// The job has completed. The result is available as a file_ref.
	OCRUPLOADED_FILE_STATE_COMPLETED = 3;

	// The job has failed. The error is available.
	OCRUPLOADED_FILE_STATE_FAILED = 4;

	// The job has been canceled.
	OCRUPLOADED_FILE_STATE_CANCELED = 5;
}

// Parent-child behavior enumeration (affects searching and view levels).
enum ParentChildBehavior {

	// No special behavior.
	PARENT_CHILD_BEHAVIOR_NONE = 0;

	// Accept matches to child values as well.
	PARENT_CHILD_BEHAVIOR_INCLUDE_CHILD_VALUES = 1;

	// Accept matches to parent values as well.
	PARENT_CHILD_BEHAVIOR_INCLUDE_PARENT_VALUES = 2;
}

// Password encryption algorithm enumeration.
enum PasswordEncryption {

	// RC4-encrypted.
	PASSWORD_ENCRYPTION_RC4 = 0;

	// Not encrypted.
	PASSWORD_ENCRYPTION_UNENCRYPTED = 1;

	// AES-encrypted with 256-bit key.
	PASSWORD_ENCRYPTION_AES256 = 2;
}

// Password format enumeration.
enum PasswordFormat {

	// [DEPRECATED] The password format is MD5 hash encrypted.
	PASSWORD_FORMAT_MD5_HASH_ENCRYPTED = 0;

	// [DEPRECATED] The password format is plain text.
	PASSWORD_FORMAT_PLAIN_TEXT = 1;

	// Encryption and hash algorithms are relayed as separate parameters.
	PASSWORD_FORMAT_SEE_OTHER_PARAMS = 2;
}

// Password hash algorithm enumeration. Each value corresponds to an algorithm with specific parameters.
enum PasswordHashAlgorithm {

	// MD5 with fixed salt.
	PASSWORD_HASH_ALGORITHM_MD5 = 0;

	// Algorithm not defined.
	PASSWORD_HASH_ALGORITHM_UNDEFINED = 1;

	// PBKDF2 with HMAC-SHA512 as pseudorandom function and iteration count 100000.
	PASSWORD_HASH_ALGORITHM_PBKDF2_WITH_SHA512_AND100000_ITERS = 2;
}

// Permission expression types.
enum PermissionsExpressionType {

	// Access Control List (ACL).
	PERMISSIONS_EXPRESSION_TYPE_ACL = 0;

	// Visible to user/group.
	PERMISSIONS_EXPRESSION_TYPE_VISIBLE_TO = 1;

	// Editable by user/group.
	PERMISSIONS_EXPRESSION_TYPE_EDITABLE_BY = 2;

	// Permissions changeable by user/group.
	PERMISSIONS_EXPRESSION_TYPE_PERMISSIONS_CHANGEABLE_BY = 3;

	// Full control by user/group.
	PERMISSIONS_EXPRESSION_TYPE_FULL_CONTROL_BY = 4;

	// Deletable by user/group.
	PERMISSIONS_EXPRESSION_TYPE_DELETABLE_BY = 5;

	// Objects attachable to this item by user/group. Currently only used when searching value list items.
	PERMISSIONS_EXPRESSION_TYPE_OBJECTS_ATTACHABLE_TO_THIS_ITEM_BY = 6;
}

// Event type enumeration.
enum PluginAuthDataFormat {

	// Data is unencrypted. Encryption at this layer is going to be deprecated, so this value is the default.
	PLUGIN_AUTH_DATA_FORMAT_UNENCRYPTED = 0;

	// Data is encrypted with a 512-bit RSA key.
	PLUGIN_AUTH_DATA_FORMAT_RSA512 = 1;

	// Data is encrypted with a 2048-bit RSA key.
	PLUGIN_AUTH_DATA_FORMAT_RSA2048 = 2;
}

// Product modes.
enum ProductMode {

	// Full product (M-Files Enterprise).
	PRODUCT_MODE_FULL = 0;

	// Free product (M-Files Express).
	PRODUCT_MODE_EXPRESS = 1;

	// Paid-for product with some limitations (M-Files Business).
	PRODUCT_MODE_BUSINESS = 2;
}

// Property set by enumeration
enum PropertySetByType {

	// Undefined type.
	PROPERTY_SET_BY_TYPE_UNDEFINED = 0;

	// Set by system.
	PROPERTY_SET_BY_TYPE_SYSTEM = 1;

	// Set by user.
	PROPERTY_SET_BY_TYPE_USER = 2;

	// Set by AI.
	PROPERTY_SET_BY_TYPE_AI = 3;
}

// How a pseudo-user in an access control entry is resolved.
enum PseudoUserResolutionMode {

	// No pseudo-user resolution.
	PSEUDO_USER_RESOLUTION_MODE_NONE = 0;

	// Pseudo-user property is resolved as (indirect) property definition references.
	PSEUDO_USER_RESOLUTION_MODE_PROPERTY_DEF = 1;

	// State-based pseudo-user is resolved as a workflow state changer.
	PSEUDO_USER_RESOLUTION_MODE_WORKFLOW_STATE = 2;
}

// Reference direction enumeration.
enum ReferenceDirection {

	// Reference FROM the specified object.
	REFERENCE_DIRECTION_FROM = 0;

	// Reference TO the specified object.
	REFERENCE_DIRECTION_TO = 1;
}

// Relationships direction enumeration.
enum RelationshipDirection {

	// Unspecified.
	RELATIONSHIP_DIRECTION_UNSPECIFIED = 0;

	// Relationships FROM the specified object.
	RELATIONSHIP_DIRECTION_FROM = 1;

	// Relationships TO the specified object.
	RELATIONSHIP_DIRECTION_TO = 2;
}

// Relationships mode enumeration.
enum RelationshipsMode {

	// Unknown.
	RELATIONSHIPS_MODE_NONE = 0;

	// Relationships FROM the specified document.
	RELATIONSHIPS_MODE_FROM = 1;

	// Relationships TO the specified document.
	RELATIONSHIPS_MODE_TO = 2;

	// Relationships FROM and TO the specified document.
	RELATIONSHIPS_MODE_ALL = 3;
}

// SearchEngine enumeration.
enum SearchEngine {

	// Unspecified.
	SEARCH_ENGINE_UNSPECIFIED = 0;

	// dtSearch.
	SEARCH_ENGINE_DT_SEARCH = 1;

	// IDOL.
	SEARCH_ENGINE_IDOL = 2;

	// Azure search.
	SEARCH_ENGINE_AZURE_SEARCH = 3;

	// Smart search
	SEARCH_ENGINE_SMART_SEARCH = 4;

	// Aino search
	SEARCH_ENGINE_AINO_SEARCH = 5;

	// Goldfish - stateless reference indexer. Indexes everything, finds nothing. For testing and performance measurement purposes.
	SEARCH_ENGINE_GOLDFISH = 6;
}

// Search mode enumeration.
enum SearchMode {

	// Default mode (always the case in versions before 19.1). The search is executed using the full-text search engine if it contains an AnyField condition. Otherwise the search is executed against the database.
	SEARCH_MODE_DEFAULT = 0;

	// Favors executing the search with the full-text search engine if technically possible. The search is executed using the full-text search engine even if no AnyField condition exists if the search conditions are supported by the target search index. In other cases the search is executed against the database.
	SEARCH_MODE_FAVOR_FULL_TEXT_SEARCH = 1;

	// Requires executing the search with the full-text search engine. If the search conditions are not supported by the target search index, an error is returned.
	SEARCH_MODE_REQUIRE_FULL_TEXT_SEARCH = 2;

	// Requires executing the search against the database. If the search conditions are not compatible with executing the search against the database, an error is returned.
	SEARCH_MODE_REQUIRE_DATABASE_SEARCH = 3;
}

// Server data push notify type.
enum ServerDataPushNotifyType {

	// Not initialized.
	SERVER_DATA_PUSH_NOTIFY_TYPE_UNKNOWN = 0;

	// Data push request received.
	SERVER_DATA_PUSH_NOTIFY_TYPE_REQUEST = 1;

	// Data push response received.
	SERVER_DATA_PUSH_NOTIFY_TYPE_RESPONSE = 2;

	// Data push heartbeat received.
	SERVER_DATA_PUSH_NOTIFY_TYPE_HEARTBEAT = 3;
}

// ServerDataPushRequest union data type enumeration.
enum ServerDataPushRequestType {

	// Unknown type (not initialized to any type).
	SERVER_DATA_PUSH_REQUEST_TYPE_UNINITIALIZED = 0;

	// Electronic signature request.
	SERVER_DATA_PUSH_REQUEST_TYPE_ELECTRONIC_SIGNATURE_REQUEST = 1;

	// Extension authentication request.
	SERVER_DATA_PUSH_REQUEST_TYPE_EXTENSION_AUTHENTICATION_REQUEST = 2;

	// Objects changed notification.
	SERVER_DATA_PUSH_REQUEST_TYPE_OBJECTS_CHANGED_NOTIFICATION = 3;
}

// ServerDataPushStatus enumeration.
enum ServerDataPushStatus {

	// Not initialized.
	SERVER_DATA_PUSH_STATUS_UNINITIALIZED = 0;

	// Client has registered data push channel.
	SERVER_DATA_PUSH_STATUS_REGISTERED = 1;

	// Data push channel is not registered.
	SERVER_DATA_PUSH_STATUS_NOT_REGISTERED = 2;

	// Data push channel is currently not usable, nor can it be registered. Reason can be for example that it is being closed.
	SERVER_DATA_PUSH_STATUS_INVALID = 3;
}

// A structure that specifies the server health item.
enum ServerHealthItem {

	// Ignore this check.
	SERVER_HEALTH_ITEM_IGNORE = 0;

	// Check the item and return the result.
	SERVER_HEALTH_ITEM_CHECK = 1;

	// Check the item and fail the method call if the check fails.
	SERVER_HEALTH_ITEM_FAIL_IF_UNHEALTHY = 2;
}

// Visitor shared link notification enumeration.
enum SharedLinkNotification {

	// No notifications.
	SHARED_LINK_NOTIFICATION_NONE = 0;

	// Send notification on all accesses.
	SHARED_LINK_NOTIFICATION_ALWAYS = 1;
}

// Shared link type enumeration.
enum SharedLinkType {

	SHARED_LINK_TYPE_READ_ONLY = 0;

	SHARED_LINK_TYPE_CO_AUTHORING = 1;

	SHARED_LINK_TYPE_WOPIREADONLY = 2;

	SHARED_LINK_TYPE_WOPIEDIT = 3;

	SHARED_LINK_TYPE_VISITOR = 4;

	SHARED_LINK_TYPE_EXTERNAL = 5;
}

// An enumeration that tells the folder type of MFShell's Shell Folder.
enum ShellFolderType {

	// Normal Shell Folder.
	SHELL_FOLDER_TYPE_NORMAL = 0;

	// Object history Shell Folder.
	SHELL_FOLDER_TYPE_OBJECT_HISTORY = 2;

	// Like normal Shell Folder, but returns non-document items resurcively beneath it.
	SHELL_FOLDER_TYPE_NON_OBJECT_ITEMS = 3;

	// Relationships Shell Folder.
	SHELL_FOLDER_TYPE_RELATIONSHIPS = 4;

	// Subobjects Shell Folder.
	SHELL_FOLDER_TYPE_SUBOBJECTS = 5;

	// Collection Members Shell Folder.
	SHELL_FOLDER_TYPE_COLLECTION_MEMBERS = 6;

	// Deleted conflict history Shell Folder.
	SHELL_FOLDER_TYPE_DELETED_CONFLICT_HISTORY = 7;
}

// View type enumeration.
enum SMTPConnectionParameters {

	// Standard SMTP, no authentication or encryption extensions.
	SMTPCONNECTION_PARAMETERS_STANDARD = 0;

	// ESMTP authentication: plain text.
	SMTPCONNECTION_PARAMETERS_AUTHENTICATION_PLAIN = 1;

	// ESMTP authentication: AUTH-LOGIN (Base64-coded password).
	SMTPCONNECTION_PARAMETERS_AUTHENTICATION_LOGIN = 2;

	// ESMTP authentication: CRAM-MD5.
	SMTPCONNECTION_PARAMETERS_AUTHENTICATION_CRAM_MD5 = 4;
}

// Enumeration for different conditions to status information.
enum StatusType {

	// Is the document in checked out state.
	STATUS_TYPE_CHECKED_OUT = 0;

	// Check out user.
	STATUS_TYPE_CHECKED_OUT_TO = 1;

	// Check out date.
	STATUS_TYPE_CHECKED_OUT_AT = 2;

	// The ID of the document.
	STATUS_TYPE_OBJECT_ID = 3;

	// The ID of the document version. If the parent folder is eStatusTypeLatestOrSpecific = "Latest", works as a no-op and evaluates to "Latest".
	STATUS_TYPE_OBJECT_VERSION = 4;

	// The deletion state of the document.
	STATUS_TYPE_IS_DELETED = 5;

	// The type of the object.
	STATUS_TYPE_OBJECT_TYPE = 6;

	// Version must be the latest checked-in (LCI) or the initial checked-out (ICO) version.
	STATUS_TYPE_IS_LATEST_CHECKED_IN_OR_INITIAL_CHECKED_OUT_VERSION = 7;

	// External ID.
	STATUS_TYPE_EXTERNAL_ID = 8;

	// The latest version / specific version indicator. For the latest version, evaluates to both "Latest" and "Specific". For others, evaluates to "Specific" only. Used in constructing the ID-view.
	STATUS_TYPE_LATEST_OR_SPECIFIC = 9;

	// The type and ID of the object.
	STATUS_TYPE_OBJECT_TYPE_AND_ID = 10;

	// The item/object flags of the object, does not include the deleted flag.
	STATUS_TYPE_OBJECT_FLAGS = 11;

	// The GUID of the vault in which the object was originally created.
	STATUS_TYPE_ORIGINAL_VAULT_GUID = 12;

	// The type of the object in the vault in which the object was originally created.
	STATUS_TYPE_ORIGINAL_OBJECT_TYPE = 13;

	// The ID of the object in the vault in which the object was originally created.
	STATUS_TYPE_ORIGINAL_OBJECT_ID = 14;

	// The ID segment of the object in the vault in which the object was originally created. Segment size is always 1000.
	STATUS_TYPE_ORIGINAL_OBJECT_ID_SEGMENT = 15;

	// The object hash.
	STATUS_TYPE_OBJECT_HASH = 16;
}

// Storage tier enumeration.
enum StorageTier {

	// Undefined.
	STORAGE_TIER_UNDEFINED = 0;

	// Advanced tier. Branded as Content.
	STORAGE_TIER_CONTENT = 1;

	// Basic tier. Branded as Record.
	STORAGE_TIER_RECORD = 2;
}

// Structure item semantics type.
enum StructureItemGroupType {

	// No group selection used.
	STRUCTURE_ITEM_GROUP_TYPE_NONE = 0;

	// Export structure item represents all built-in items within selected type.
	STRUCTURE_ITEM_GROUP_TYPE_BUILT_IN = 1;

	// Export structure item represents all user defined items within selected type.
	STRUCTURE_ITEM_GROUP_TYPE_USER_DEFINED = 2;

	// Export structure item represents all views from the given user id within selected type.
	STRUCTURE_ITEM_GROUP_TYPE_VIEWS_BY_SELECTED_USER = 3;

	// Export structure item represents all event handlers of a given envent handler type within selected type.
	STRUCTURE_ITEM_GROUP_TYPE_HANDLERS_OF_SELECTED_EVENT_HANDLER_TYPE = 4;
}

// TaggedValueType enumeration.
enum TaggedValueType {

	// Default.
	TAGGED_VALUE_TYPE_DEFAULT = 0;

	// String.
	TAGGED_VALUE_TYPE_STRING = 1;

	// Integer.
	TAGGED_VALUE_TYPE_INTEGER = 2;

	// Float.
	TAGGED_VALUE_TYPE_FLOAT = 3;

	// Boolean.
	TAGGED_VALUE_TYPE_BOOLEAN = 4;

	// Datetime.
	TAGGED_VALUE_TYPE_DATETIME = 5;

	// Int64.
	TAGGED_VALUE_TYPE_INT64 = 6;
}

// Index status enumeration.
enum ThumbnailStatus {

	// No actions allowed.
	THUMBNAIL_STATUS_NO_ACTIONS_ALLOWED = 0;

	// File uploaded but no thumbnail generated yet for the file. Set to this value after check-in.
	THUMBNAIL_STATUS_NOT_GENERATED = 1;

	// A thumbnail generated. Set to this value when a thumbnail for the file is generated.
	THUMBNAIL_STATUS_GENERATED = 2;

	// Denied to generate. For example, set to this value when any thumbnail generation for the file is denied by an administrator.
	THUMBNAIL_STATUS_DO_NOT_GENERATE = 3;

	// Cannot generate. Set to this value when there is no registered thumbnail generator for the file format.
	THUMBNAIL_STATUS_CANNOT_GENERATE = 4;

	// Failed to generate. For example, set to this value a thumbnail for the file was tried to be generated but it failed due to some reason.
	THUMBNAIL_STATUS_FAILED_TO_GENERATE = 5;

	// Failed to generate because the data file is no longer available.
	THUMBNAIL_STATUS_FAILED_MISSING_DATA_FILE = 6;
}

// Thumbnail type.
enum ThumbnailType {

	// The classic thumbnail, square. Icon if no thumbnail available.
	THUMBNAIL_TYPE_CLASSIC = 0;

	// The classic thumbnail, square. Error if no thumbnail available.
	THUMBNAIL_TYPE_CLASSIC_NO_ICON = 1;

	// The preview type in correct aspect ration of the first page.
	THUMBNAIL_TYPE_PREVIEW = 2;
}

// Translation states for translation strings.
enum TranslationState {

	TRANSLATION_STATE_NOT_TRANSLATED = 0;

	TRANSLATION_STATE_TRANSLATED = 1;
}

// Definition for a three-state boolean
enum TriStateBoolean {

	// The value has not been defined.
	TRI_STATE_BOOLEAN_UNDEFINED = 0;

	// The value is "false".
	TRI_STATE_BOOLEAN_FALSE = 1;

	// The value is "true".
	TRI_STATE_BOOLEAN_TRUE = 2;
}

// Enumeration for UI settings folder type.
enum UISettingsFolderType {

	// Unknown.
	UISETTINGS_FOLDER_TYPE_UNKNOWN = 0;

	// Vault root (e.g. "M:\Demo (English)\").
	UISETTINGS_FOLDER_TYPE_ROOT_FOLDER = 1;

	// Container of view folders (e.g. "M:\Demo (English)\My Views\").
	UISETTINGS_FOLDER_TYPE_VIEW_FOLDERS_CONTAINER = 2;

	// Container of property folders (e.g. "M:\Demo (English)\By Class\").
	UISETTINGS_FOLDER_TYPE_PROPERTY_FOLDERS_CONTAINER = 3;

	// Container of documents and other objects (e.g. "M:\Demo (English)\By Class\Order\").
	UISETTINGS_FOLDER_TYPE_OBJECTS_CONTAINER = 4;

	// Container of object files (e.g. "M:\Demo (English)\By Class\Order\MFD (ID 123)\").
	UISETTINGS_FOLDER_TYPE_OBJECT_FILES_CONTAINER = 5;

	// Container of traditional folders (e.g. "M:\Demo (English)\Company Pictures\").
	UISETTINGS_FOLDER_TYPE_TRADITIONAL_FOLDERS_CONTAINER = 6;

	// Container of search results (e.g. "M:\Demo (English)\Latest Searches\Search Results 10.10.2007 10:30\").
	UISETTINGS_FOLDER_TYPE_SEARCH_RESULTS_CONTAINER = 7;

	// The History UI.
	UISETTINGS_FOLDER_TYPE_HISTORY_UI = 8;

	// The From tab of the Relationships UI.
	UISETTINGS_FOLDER_TYPE_RELATIONHIPS_UI_FROM_TAB = 9;

	// The Collection Members UI.
	UISETTINGS_FOLDER_TYPE_COLLECTION_MEMBERS_UI = 10;

	// The Subobjects UI.
	UISETTINGS_FOLDER_TYPE_SUBOBJECTS_UI = 11;

	// The Clear Local Cache / View UI.
	UISETTINGS_FOLDER_TYPE_CLEAR_LOCAL_CACHE_UI = 12;

	// The To tab of the Relationships UI.
	UISETTINGS_FOLDER_TYPE_RELATIONSHIPS_UI_TO_TAB = 13;

	// The All tab of the Relationships UI.
	UISETTINGS_FOLDER_TYPE_RELATIONSHIPS_UI_ALL_TAB = 14;

	// Container of local temporary files/folders.
	UISETTINGS_FOLDER_TYPE_LOCAL_TEMPORARY_ITEMS_CONTAINER = 15;

	// Container of external view folders (e.g. "M:\Demo (English)\Network share\").
	UISETTINGS_FOLDER_TYPE_EXTERNAL_VIEW_FOLDERS_CONTAINER = 16;

	// The deleted conflict history UI.
	UISETTINGS_FOLDER_TYPE_DELETED_CONFLICT_HISTORY_UI = 17;
}

// Update type enumeration.
enum UpdateType {

	// Normal, user-settable property.
	UPDATE_TYPE_NORMAL = 0;

	// A property that is automatically set and updated by the server. If a client supplies this type of properties in set operations, they are ignored by the server.
	UPDATE_TYPE_SET_BY_SERVER = 1;

	// A property that is automatically set and updated by the client. The only difference to type eUpdateTypeNormal is that the user should not be prompted to enter the value of this type of property.
	UPDATE_TYPE_SET_BY_CLIENT_CODE = 2;
}

// User account addition mode enumeration.
enum UserAccountAdditionMode {

	// Always add. Do not try to undelete old accounts.
	USER_ACCOUNT_ADDITION_MODE_ALWAYS_ADD = 0;

	// First attempt to undelete account by GUID or login name. Add new account if old account cannot be undeleted.
	USER_ACCOUNT_ADDITION_MODE_UNDELETE_OR_ADD = 1;

	// Only undelete old account. Do not create new account if old account cannot be undeleted.
	USER_ACCOUNT_ADDITION_MODE_ONLY_UNDELETE = 2;
}

// Validation types.
enum UserGroupType {

	// Normal M-Files user group.
	USER_GROUP_TYPE_NORMAL = 0;

	// A group representing external repository user.
	USER_GROUP_TYPE_REPOSITORY_USER = 1;

	// A group representing external repository user group.
	USER_GROUP_TYPE_REPOSITORY_GROUP = 2;

	// Any user group, used for searching.
	USER_GROUP_TYPE_ANY = -1;
}

// User type enumeration.
enum UserType {

	// Unknown user type (not initialized to any type).
	USER_TYPE_UNKNOWN = 0;

	// User account.
	USER_TYPE_USER = 1;

	// User group.
	USER_TYPE_USER_GROUP = 2;

	// Worklow state pseudo user. Indirectly specifies a user on the basis of a state ID (i.e. "the user who moved the object into state X").
	USER_TYPE_WORKFLOW_STATE_PSEUDO_USER = 3;

	// Property-based pseudo user. Indirectly specifies a user or users on the basis of a property value (i.e. "the user(s) specified in the property X").
	USER_TYPE_PROPERTY_BASED_PSEUDO_USER = 4;
}

// Validation types.
enum ValidationType {

	// No validation.
	VALIDATION_TYPE_NONE = 0;

	// A regular expression string, e.g. for validating a phone number.
	VALIDATION_TYPE_REGEX = 1;

	// A VBScript for performing the validation.
	VALIDATION_TYPE_CODE = 2;
}

// Vault migration type enumeration.
enum VaultMigrationType {

	// Full migration i.e. changing to a different database engine. Might include transferring the file data as well.
	VAULT_MIGRATION_TYPE_FULL = 0;

	// Migrate/transfer the file data only.
	VAULT_MIGRATION_TYPE_FILE_DATA = 1;
}

// VaultType enumeration.
enum VaultType {

	// Normal.
	VAULT_TYPE_NORMAL_VAULT = 0;

	// Replica vault.
	VAULT_TYPE_REPLICA_VAULT = 1;

	// Ground link proxy.
	VAULT_TYPE_GROUND_LINK_PROXY = 2;
}

// View type enumeration.
enum ViewType {

	// Normal view. Displays objects on its last level and can have a display hierarchy.
	VIEW_TYPE_SHOW_OBJECTS = 0;

	// Defines a filter only. Does not show objects and cannot have a display hierarchy.
	VIEW_TYPE_FILTER_ONLY = 1;
}

// Value list sorting types.
enum VLSortingType {

	// Sort by display name.
	VLSORTING_TYPE_BY_DISPLAY_NAME = 0;

	// Sort by external ID.
	VLSORTING_TYPE_BY_EXTERNAL_ID = 1;
}

// Web Companion Action type enumeration.
enum WebCompanionActionType {

	// View Action type for viewing the object in native desktop application.
	WEB_COMPANION_ACTION_TYPE_VIEW = 0;

	// Edit Action type for editing the object in native desktop application.
	WEB_COMPANION_ACTION_TYPE_EDIT = 1;

	// Checkin Action type for editing the object in native desktop application.
	WEB_COMPANION_ACTION_TYPE_CHECKIN = 2;

	// Save file extension type for saving valid file type from admin to web companion.
	WEB_COMPANION_ACTION_TYPE_SAVE_FILE_EXTENSION = 3;

	// Co-authoring launch action type for opening the object for live co-authoring in the native Office application.
	WEB_COMPANION_ACTION_TYPE_CO_AUTHOR = 4;
}

// Weekday enumerations.
enum Weekday {

	// None.
	WEEKDAY_NONE = 0;

	// Monday.
	WEEKDAY_MONDAY = 1;

	// Tuesday.
	WEEKDAY_TUESDAY = 2;

	// Wednesday.
	WEEKDAY_WEDNESDAY = 3;

	// Thursday.
	WEEKDAY_THURSDAY = 4;

	// Friday.
	WEEKDAY_FRIDAY = 5;

	// Saturday.
	WEEKDAY_SATURDAY = 6;

	WEEKDAY_SUNDAY = 7;
}

// WOPI Action type enumeration.
enum WOPIActionType {

	// View Action type for viewing the object in Online viewer.
	WOPIACTION_TYPE_VIEW = 0;

	// Edit Action type for editing the object in Online viewer.
	WOPIACTION_TYPE_EDIT = 1;

	// CoAuthoring Action type for performing CoAuthoring operations in Online viewer.
	WOPIACTION_TYPE_COAUTHORING = 2;
}

// WOPI Token type enumeration.
enum WOPITokenType {

	// The WOPI User Session Token.
	WOPITOKEN_TYPE_WOPIVAULT_USER_SESSION_TOKEN = 0;

	// One Time Token.
	WOPITOKEN_TYPE_ONE_TIME_TOKEN = 1;

	// The WOPI Container Token.
	WOPITOKEN_TYPE_WOPICONTAINER_TOKEN = 2;
}

// Workspace setting actions.
enum WorkspaceSettingsAction {

	// Apply settings for current user.
	WORKSPACE_SETTINGS_ACTION_APPLY_PERSONAL_SETTINGS = 0;

	// Reset current user settings to default. Settings struct is ignored.
	WORKSPACE_SETTINGS_ACTION_RESET_TO_DEFAULT = 1;

	// Apply settings as default for all users. Requires admin privileges.
	WORKSPACE_SETTINGS_ACTION_SET_AS_DEFAULT_TO_ALL_USERS = 2;

	// Apply settings as default for all users. Overrides all existing user settings. Requires admin privileges.
	WORKSPACE_SETTINGS_ACTION_SET_AS_DEFAULT_TO_ALL_USERS_OVERRIDE = 3;
}

// Workspace settings scope. Selects which row the GetWorkspaceSettings call returns.
enum WorkspaceSettingsScope {

	// Return the caller's effective workspace settings (their own tab order): the user's personal row, falling back to the stored defaults row, reconciled with every view the caller can see. Use this to render the user's own workspace.
	WORKSPACE_SETTINGS_SCOPE_EFFECTIVE = 0;

	// Return the admin-set default settings only (the UA_WORKSPACESETTINGS row with ID_USERACCOUNT = unset), with no personal fallback, reconciled with the common views. Use this to compare against, reset to, or otherwise surface the defaults in the UI.
	WORKSPACE_SETTINGS_SCOPE_DEFAULTS = 1;
}
