<?php

/**
 * OpenKM, Open Knowledge Management System S.L.  (http://www.openkm.com)
 * Copyright (c) 2006-2018
 *
 * No bytes were intentionally harmed during the development of this application.
 *
 * This program is commercial software; you can use it under the terms of the
 * EULA - OpenKM SDK End User License Agreement as published by OpenKM Knowledge Management System S.L.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * EULA - OpenKM SDK End User License Agreement for more details:
 * http://docs.openkm.com/kcenter/view/licenses/eula-openkm-sdk-end-user-license-agreement.html
 */

namespace openkm\util;

/**
 * UriHelper
 *
 * @author sochoa
 */
class UriHelper {

    /**
     * Auth
     */
    const AUTH_GET_LOGIN = "rest/auth/login";
    const AUTH_GET_LOGOUT = "rest/auth/logout";
    const AUTH_GET_GRANTED_USERS_AND_ROLES = "rest/auth/nodes/{0}/permissions";
    const AUTH_GET_GRANTED_USERS = "rest/auth/nodes/{0}/permissions/users";
    const AUTH_POST_GRANT_USER = "rest/auth/nodes/{0}/permissions/users";
    const AUTH_PUT_SET_USER_PERMISSIONS = "rest/auth/nodes/{0}/permissions/users/{1}";
    const AUTH_DEL_REVOKE_USER = "rest/auth/nodes/{0}/permissions/users/{1}";
    const AUTH_GET_GRANTED_ROLES = "rest/auth/nodes/{0}/permissions/roles";
    const AUTH_POST_GRANT_ROLE = "rest/auth/nodes/{0}/permissions/roles";
    const AUTH_PUT_SET_ROLE_PERMISSIONS = "rest/auth/nodes/{0}/permissions/roles/{1}";
    const AUTH_DEL_REVOKE_ROLE = "rest/auth/nodes/{0}/permissions/roles/{1}";
    const AUTH_PUT_CHANGE_SECURITY = "rest/auth/nodes/{0}/permissions";
    const AUTH_GET_ROLES = "rest/auth/roles";
    const AUTH_POST_CREATE_ROLE = "rest/auth/roles";
    const AUTH_GET_USERS_BY_ROLE = "rest/auth/roles/{0}/users";
    const AUTH_PUT_UPDATE_ROLE = "rest/auth/roles/{0}";
    const AUTH_DEL_DELETE_ROLE = "rest/auth/roles/{0}";
    const AUTH_GET_USERS = "rest/auth/users";
    const AUTH_POST_CREATE_USER = "rest/auth/users";
    const AUTH_GET_USER = "rest/auth/users/{0}";
    const AUTH_PUT_UPDATE_USER = "rest/auth/users/{0}";
    const AUTH_DEL_DELETE_USER = "rest/auth/users/{0}";
    const AUTH_GET_ROLES_BY_USER = "rest/auth/users/{0}/roles";
    const AUTH_DEL_REMOVE_ROLE = "rest/auth/users/{0}/roles/{1}";
    const AUTH_POST_ASSIGN_ROLE = "rest/auth/users/{0}/roles";
    const AUTH_GET_USER_PROFILE = "rest/auth/users/{0}/profile";
    const AUTH_PUT_SET_USER_PROFILE = "rest/auth/users/{0}/profile";
    const AUTH_GET_PROFILES = "rest/auth/profiles";
    const AUTH_GET_USER_TENANTS = "rest/auth/tenant";
    const AUTH_PUT_SET_USER_TENANT = "rest/auth/tenant";
    const AUTH_GET_SESSION_ID = "rest/auth/sessionId";
    const AUTH_GET_IS_ADMIN = "rest/auth/isAdmin";
    const AUTH_GET_HAS_SECURITY_RESCURSIVE = "rest/auth/hasSecurityRecursive";
    
    /**
     * Document
     */
    const DOCUMENT_GET_CHECKOUT = "rest/documents/checkedOut";
    const DOCUMENT_GET_DETECTED_LANGUAGES = "rest/documents/languages";
    const DOCUMENT_POST_CREATE = "rest/documents/parents/{uuid}";
    const DOCUMENT_POST_WIZARD_CREATE = "rest/documents/parents/{0}/wizard";
    const DOCUMENT_PUT_DELETE = "rest/documents/{uuid}";
    const DOCUMENT_DEL_PURGE = "rest/documents/{0}";
    const DOCUMENT_GET_PROPERTIES = "rest/documents/{uuid}/properties";
    const DOCUMENT_PUT_SET_PROPERTIES = "rest/documents/{0}/properties";
    const DOCUMENT_POST_CHECKIN = "rest/documents/{0}/content";
    const DOCUMENT_GET_CONTENT = "rest/documents/{uuid}/content";
    const DOCUMENT_PUT_CHECKOUT = "rest/documents/{0}/content/checkOut";
    const DOCUMENT_GET_IS_CHECKOUT = "rest/documents/{0}/content/checkOut";
    const DOCUMENT_DEL_CANCEL_CHECKOUT = "rest/documents/{0}/content/checkOut"; // also used by force with parameter
    const DOCUMENT_GET_CONTENT_BY_VERSION = "rest/documents/{uuid}/versions/{versionId}/content";
    const DOCUMENT_GET_VERSION_HISTORY_SIZE = "rest/documents/{0}/versions/size";
    const DOCUMENT_GET_DIFFERENCES = "rest/documents/{0}/versions/{1}/differences/{2}";
    const DOCUMENT_GET_CHILDREN = "rest/documents/{uuid}/children";
    const DOCUMENT_PUT_RENAME = "rest/documents/{uuid}/name";
    const DOCUMENT_PUT_SET_LANGUAGE = "rest/documents/{0}/language";
    const DOCUMENT_PUT_SET_TITLE = "rest/documents/{0}/title";
    const DOCUMENT_PUT_SET_NODECLASS = "rest/documents/{0}/nodeClass";
    const DOCUMENT_PUT_LOCK = "rest/documents/{0}/lock";
    const DOCUMENT_DEL_UNLOCK = "rest/documents/{0}/lock"; // also used by force with parameter
    const DOCUMENT_GET_IS_LOCKED = "rest/documents/{0}/lock";
    const DOCUMENT_GET_LOCKINFO = "rest/documents/{0}/lock/info";
    const DOCUMENT_POST_COPY = "rest/documents/{uuid}/copy/{dstId}";
    const DOCUMENT_POST_EXTENDED_COPY = "rest/documents/{0}/copy/extended/{1}";
    const DOCUMENT_PUT_MOVE = "rest/documents/{uuid}/move/{dstId}";
    const DOCUMENT_GET_IS_VALID = "rest/documents/{uuid}/valid";
    const DOCUMENT_GET_PATH = "rest/documents/{0}/path";
    const DOCUMENT_GET_EXTRACTED_TEXT = "rest/documents/{uuid}/text";
    const DOCUMENT_GET_THUMBNAIL = "rest/documents/{uuid}/thumbnail";
    const DOCUMENT_GET_ANNOTATIONS = "rest/documents/{0}/annotations/{1}";
    const DOCUMENT_PUT_SET_DISPOSITION_STEP = "rest/documents/{0}/disposition";
    const DOCUMENT_PUT_SET_DESCRIPTION = "rest/documents/{0}/description";
    const DOCUMENT_POST_CREATE_FROM_TEMPLATE = "rest/documents/{0}/templates";
    const DOCUMENT_PUT_UPDATE_FROM_TEMPLATE = "rest/documents/{0}/templates";
    const DOCUMENT_GET_IS_ORC_DATA_CAPTURE_SUPPORTED = "rest/documents/{0}/ocr/supported";
    const DOCUMENT_GET_RECOGNIZE = "rest/documents/{0}/ocr/recognize";
    const DOCUMENT_PUT_CAPTURE_DATA = "rest/documents/{0}/ocr/{1}/properties";
    const DOCUMENT_GET_NUMBER_OF_PAGES = "rest/documents/{0}/pages/number";
    const DOCUMENT_GET_PAGE_AS_IMAGE = "rest/documents/{0}/pages/{1}/image";
    const DOCUMENT_PUT_MERGE_PDF = "rest/documents/merge";
    const DOCUMENT_GET_LIVEEDIT_RESTRICTED_MIMETYPES = "rest/documents/mimeTypes/liveEdit/restricted";
    const DOCUMENT_PUT_LIVEEDIT_CHECKIN = "rest/documents/{0}/liveEdit";
    
    /**
     * Folder
     */
    const FOLDER_POST_CREATE_MISSING_FOLDERS = "rest/folders/paths";
    const FOLDER_POST_CREATE = "rest/folders/parents/{uuid}";
    const FOLDER_PUT_DELETE = "rest/folders/{uuid}";
    const FOLDER_DEL_PURGE = "rest/folders/{uuid}";
    const FOLDER_GET_PROPERTIES = "rest/folders/{uuid}/properties";
    const FOLDER_PUT_RENAME = "rest/folders/{uuid}/name";
    const FOLDER_PUT_MOVE = "rest/folders/{uuid}/move/{dstId}";
    const FOLDER_GET_CHILDREN = "rest/folders/{uuid}/children";
    const FOLDER_GET_IS_VALID = "rest/folders/{uuid}/valid";
    const FOLDER_GET_PATH = "rest/folders/{uuid}/path";
    const FOLDER_POST_COPY = "rest/folders/{uuid}/copy/{dstId}";
    const FOLDER_POST_EXTENDED_COPY = "rest/folders/{uuid}/copy/extended/{dstId}";
    const FOLDER_GET_CONTENT_INFO = "rest/folders/{uuid}/contentInfo";
    const FOLDER_PUT_SET_STYLE = "rest/folders/{uuid}/style";
    const FOLDER_PUT_SET_DESCRIPTION = "rest/folders/{uuid}/description";
    const FOLDER_POST_CREATE_FROM_TEMPLATE = "rest/folders/{uuid}/templates";
    
    /**
     * Mail
     */
    const MAIL_GET_MAILS_PAGINATED = "rest/mails";
    const MAIL_POST_SEND_MAIL = "rest/mails";
    const MAIL_POST_WIZARD_CREATE = "rest/mails/parents/{0}/wizard";
    const MAIL_PUT_DELETE = "rest/mails/{0}";
    const MAIL_DEL_PURGE = "rest/mails/{0}";
    const MAIL_GET_CONTENT = "rest/mails/{0}/content";
    const MAIL_GET_PROPERTIES = "rest/mails/{0}/properties";
    const MAIL_PUT_RENAME = "rest/mails/{0}/name";
    const MAIL_PUT_MOVE = "rest/mails/{0}/move/{1}";
    const MAIL_POST_COPY = "rest/mails/{0}/copy/{1}";
    const MAIL_POST_EXTENDED_COPY = "rest/mails/{0}/copy/extended/{1}";
    const MAIL_GET_CHILDREN = "rest/mails/{0}/children";
    const MAIL_GET_IS_VALID = "rest/mails/{0}/valid";
    const MAIL_GET_PATH = "rest/mails/{0}/path";
    const MAIL_PUT_SET_NODECLASS = "rest/mails/{0}/nodeClass";
    const MAIL_PUT_SET_DISPOSITION_STEP = "rest/mails/{0}/disposition";
    const MAIL_GET_ATTACHMENTS = "rest/mails/{0}/attachments";
    const MAIL_POST_CREATE_ATTACHMENTS = "rest/mails/{0}/attachments";
    const MAIL_DEL_DELETE_ATTACHMENTS = "rest/mails/{0}/attachments";
    const MAIL_PUT_SET_TITLE = "rest/mails/{0}/title";
    const MAIL_PUT_SET_DESCRIPTION = "rest/mails/{0}/description";
    const MAIL_GET_THUMBNAIL = "rest/mails/{0}/thumbnail";
    const MAIL_POST_IMPORT_EML = "rest/mails/{0}/eml";
    const MAIL_POST_IMPORT_MSG = "rest/mails/{0}/msg";
    const MAIL_POST_SEND_MAIL_WITH_ATTACHMENTS = "rest/mails/{0}/withAttachments";
    const MAIL_GET_ACCOUNTS = "rest/mails/accounts";
    const MAIL_GET_MESSAGES = "rest/mails/accounts/{0}/messages/{1}";
    const MAIL_POST_ADD_ACCOUNT = "rest/mails/accounts";
    const MAIL_PUT_UPDATE_ACCOUNT = "rest/mails/accounts/{0}";
    const MAIL_GET_TEST_CONNECTION = "rest/mails/accounts/test";
    const MAIL_DEL_DELETE_ACCOUNT = "rest/mails/accounts/{0}";
    const MAIL_PUT_IMPORT_MESSAGES = "rest/mails/accounts/{0}/import";
    const MAIL_POST_CREATE_FILTER = "rest/mails/accounts/{0}/filter";
    const MAIL_PUT_UPDATE_FILTER = "rest/mails/accounts/filter/{0}";
    const MAIL_DEL_DELETE_FILTER = "rest/mails/accounts/filter/{0}";
    const MAIL_GET_GET_RULES = "rest/mails/accounts/{0}/rule";
    const MAIL_POST_CREATE_RULE = "rest/mails/accounts/{0}/rule";
    const MAIL_PUT_UPDATE_RULE = "rest/mails/accounts/rule/{0}";
    const MAIL_DEL_DELETE_RULE = "rest/mails/accounts/rule/{0}";
    const MAIL_POST_FORWARD = "rest/mails/{0}/forward";
    
    /**
     * Note
     */
    const NOTE_GET = "rest/note/{noteId}";
    const NOTE_DELETE = "rest/note/{noteId}";
    const NOTE_PUT_SET = "rest/note/{noteId}";
    const NOTE_POST_ADD = "rest/note/nodes/{uuid}";
    const NOTE_GET_LIST = "rest/note/nodes/{uuid}";
    const NOTE_GET_HISTORY_LIST = "rest/note/nodes/{uuid}/history";
    
    // PropertyGroup
    const PROPERTY_GROUP_GET_ALL_GROUPS = "rest/propertyGroups";
    const PROPERTY_GROUP_GET_REGISTERED_DEFINITION = "rest/propertyGroups/definition";
    const PROPERTY_GROUP_POST_REGISTER_DEFINITION = "rest/propertyGroups/definition";
    const PROPERTY_GROUP_GET_GROUP = "rest/propertyGroups/{grpName}";
    const PROPERTY_GROUP_GET_PROPERTY_GROUP_FORM = "rest/propertyGroups/{grpName}/formElements";
    const PROPERTY_GROUP_GET_PROPERTY_GROUP_FORM_BY_NODE = "rest/propertyGroups/nodes/{uuid}/groups/{grpName}/formElements";
    const PROPERTY_GROUP_GET_GROUPS = "rest/propertyGroups/nodes/{uuid}/groups";
    const PROPERTY_GROUP_POST_ADD_GROUP = "rest/propertyGroups/nodes/{uuid}/groups";
    const PROPERTY_GROUP_DEL_REMOVE_GROUP = "rest/propertyGroups/nodes/{uuid}/groups/{grpName}";
    const PROPERTY_GROUP_GET_HAS_GROUP = "rest/propertyGroups/nodes/{uuid}/groups/{grpName}/valid";
    const PROPERTY_GROUP_GET_PROPERTIES = "rest/propertyGroups/nodes/{uuid}/groups/{grpName}/properties";
    const PROPERTY_GROUP_PUT_SET_PROPERTIES = "rest/propertyGroups/nodes/{uuid}/groups/{grpName}/properties";
    const PROPERTY_GROUP_GET_GROUPS_BY_VERSION = "rest/propertyGroups/nodes/{uuid}/versions/{versionName}/groups";
    const PROPERTY_GROUP_GET_PROPERTIES_BY_VERSION = "rest/propertyGroups/nodes/{uuid}/versions/{versionName}/groups/{grpName}/properties";
    const PROPERTY_GROUP_GET_PROPERTIES_BY_VERSION_FORM = "rest/propertyGroups/nodes/{uuid}/versions/{versionName}/groups/{grpName}/formElements";
    const PROPERTY_GROUP_GET_SUGGESTIONS = "rest/propertyGroups/nodes/{uuid}/suggestions";

    /**
     * Repository
     */
    const REPOSITORY_GET_ROOT_FOLDER = "rest/repository/root";
    const REPOSITORY_GET_ROOT_PERSONAL = "rest/repository/personal";
    const REPOSITORY_GET_ROOT_TRASH = "rest/repository/trash";
    const REPOSITORY_GET_ROOT_TRASH_BASE = "rest/repository/trash/base";
    const REPOSITORY_GET_ROOT_TEMPLATES = "rest/repository/templates";
    const REPOSITORY_GET_ROOT_PERSONAL_BASE = "rest/repository/personal/base";
    const REPOSITORY_GET_ROOT_MAIL = "rest/repository/mail";
    const REPOSITORY_GET_ROOT_MAIL_BASE = "rest/repository/mail/base";
    const REPOSITORY_GET_ROOT_THESAURUS = "rest/repository/thesaurus";
    const REPOSITORY_GET_ROOT_CATEGORIES = "rest/repository/categories";
    const REPOSITORY_DEL_PURGE_TRASH = "rest/repository/trash";
    const REPOSITORY_GET_UPDATE_MESSAGE = "rest/repository/message";
    const REPOSITORY_POST_EXECUTE_SCRIPT = "rest/repository/script";
    const REPOSITORY_POST_EXECUTE_SQL_QUERY = "rest/repository/sql";
    const REPOSITORY_POST_EXECUTE_HQL_QUERY = "rest/repository/hql";
    const REPOSITORY_GET_TRANSLATIONS = "rest/repository/configuration/translations";
    const REPOSITORY_GET_RESPOSITORY_UUID = "rest/repository/configuration/uuid";
    const REPOSITORY_GET_CONFIGURATION = "rest/repository/configuration";
    const REPOSITORY_GET_APP_VERSION = "rest/repository/configuration/version";
    const REPOSITORY_GET_AVAILABLE_LOCALES = "rest/repository/configuration/locales";
    const REPOSITORY_GET_SERVER_TIME = "rest/repository/configuration/time";
    const REPOSITORY_GET_CHANGELOG = "rest/repository/changelog";
    const REPOSITORY_POST_COPY_ATTRIBUTES = "rest/repository/{0}/copy/{1}";
    const REPOSITORY_GET_HAS_NODE = "rest/repository/nodes/valid";
    const REPOSITORY_GET_NODE_UUID = "rest/repository/nodes/uuid";
    const REPOSITORY_GET_NODE_PATH = "rest/repository/nodes/{0}/path";
    const REPOSITORY_GET_LICENSE_INFO = "rest/repository/configuration/license";
    
    /**
     * Plugin
     */
    const PLUGIN_POST_EXECUTE_PLUGIN = "rest/plugins";
    const PLUGIN_POST_EXECUTE_PLUGIN_RETURN_FILE = "rest/plugins/file";
    const PLUGIN_GET_EXECUTE_PLUGIN = "rest/plugins";
    const PLUGIN_GET_EXECUTE_PLUGIN_RETURN_FILE = "rest/plugins/file";
    
    /**
     * Search
     */
    const SEARCH_GET_FIND = "rest/search";
    const SEARCH_GET_FIND_PAGINATED = "rest/search/paginated";
    const SEARCH_GET_KEYWORD_MAP = "rest/search/keywords";
    const SEARCH_GET_ALL_SEARCH = "rest/search/stored";
    const SEARCH_POST_SAVE_SEARCH = "rest/search/stored";
    const SEARCH_PUT_UPDATE_SEARCH = "rest/search/stored/{0}";
    const SEARCH_GET_SEARCH = "rest/search/stored/{0}";
    const SEARCH_DEL_DELETE_SEARCH = "rest/search/stored/{0}";
    const SEARCH_GET_FIND_ALL_DEFAULT_BY_NODE_CLASS = "rest/search/nodeClass/stored/{0}";
    const SEARCH_GET_FIND_WITH_METADATA = "rest/search/metadata";
    const SEARCH_GET_FIND_WITH_METADATA_PAGINATED = "rest/search/metadata/paginated";
    const SEARCH_GET_FIND_BY_QUERY = "rest/search/query";
    const SEARCH_GET_FIND_BY_QUERY_PAGINATED = "rest/search/query/paginated";
    const SEARCH_GET_CATEGORIZED_DOCUMENTS = "rest/search/categories/{0}/documents";
    
    /**
     * Property
     */
    const PROPERTY_POST_ADD_CATEGORY = "rest/properties/nodes/{0}/categories";
    const PROPERTY_DEL_REMOVE_CATEGORY = "rest/properties/nodes/{0}/categories/{1}";
    const PROPERTY_POST_ADD_KEYWORD = "rest/properties/nodes/{0}/keywords";
    const PROPERTY_DEL_REMOVE_KEYWORD = "rest/properties/nodes/{0}/keywords";
    const PROPERTY_PUT_SET_ENCRYPTION = "rest/properties/nodes/{0}/encryption";
    const PROPERTY_DEL_UNSET_ENCRYPTION = "rest/properties/nodes/{0}/encryption";
    const PROPERTY_PUT_SET_SIGNED = "rest/properties/nodes/{0}/signed";
    
    /**
     * Fileplan
     */
    const FILEPLAN_GET_ROOT_SECTIONS = "rest/fileplan/root/sections";
    const FILEPLAN_GET_ROOT_SECTIONS_FILTERED_BY_SECURITY = "rest/fileplan/root/permissions/{0}/sections";
    const FILEPLAN_GET_SECTION_FILTERED = "rest/fileplan/sections/search";
    const FILEPLAN_GET_CHILDREN_SECTIONS = "rest/fileplan/sections/{0}/children";
    const FILEPLAN_GET_CHILDREN_CLASSES = "rest/fileplan/sections/{0}/nodeClasses/children";
    const FILEPLAN_GET_CHILDREN_CLASSES_FILTERED_BY_SECURITY = "rest/fileplan/sections/{0}/permissions/{1}/nodeClasses";
    const FILEPLAN_GET_CHILDREN_SECTIONS_FILTERED_BY_SECURITY = "rest/fileplan/sections/{0}/permissions/{1}/sections";
    const FILEPLAN_GET_NODE_CLASS_BY_PK = "rest/fileplan/nodeClasses/{0}";
    const FILEPLAN_GET_NODE_CLASS_FILTERED = "rest/fileplan/nodeClasses/search";
    const FILEPLAN_GET_ELECTRONIC_RECORD_CLASSES = "rest/fileplan/e-records/nodeClasses";
    const FILEPLAN_GET_ELECTRONIC_RECORD_CLASSES_FILTERED_BY_SECURITY = "rest/fileplan/e-records/permissions/{0}/nodeClasses";
    const FILEPLAN_GET_SECTION_BREADCRUMB = "rest/fileplan/sections/{0}/breadcrumb";
    const FILEPLAN_GET_ALL_NODE_CLASS = "rest/fileplan/nodeClasses";
    
    /**
     * Record
     */
    const RECORD_POST_CREATE = "rest/records/parents/{0}";
    const RECORD_POST_WIZARD_CREATE = "rest/records/parents/{0}/wizard";
    const RECORD_GET_PROPERTIES = "rest/records/{0}/properties";
    const RECORD_PUT_DELETE = "rest/records/{0}";
    const RECORD_DEL_PURGE = "rest/records/{0}";
    const RECORD_PUT_RENAME = "rest/records/{0}/name";
    const RECORD_PUT_MOVE = "rest/records/{0}/move/{1}";
    const RECORD_POST_COPY = "rest/records/{0}/copy/{1}";
    const RECORD_GET_IS_VALID = "rest/records/{0}/valid";
    const RECORD_GET_CHILDREN = "rest/records/{0}/children";
    const RECORD_PUT_LOCK = "rest/records/{0}/lock";
    const RECORD_DEL_UNLOCK = "rest/records/{0}/lock"; // also used by force with parameter
    const RECORD_PUT_SET_TITLE = "rest/records/{0}/title";
    const RECORD_PUT_SET_NODECLASS = "rest/records/{0}/nodeClass";
    const RECORD_GET_PATH = "rest/records/{0}/path";
    const RECORD_PUT_SET_DISPOSITION_STEP = "rest/records/{0}/disposition";
    const RECORD_PUT_SET_DESCRIPTION = "rest/records/{0}/description";
    const RECORD_POST_EXTENDED_COPY = "rest/records/{0}/copy/extended/{1}";
    const RECORD_POST_CREATE_FROM_TEMPLATE = "rest/records/{0}/templates";
    
    /**
     * Node
     */
    const NODE_GET_NODE_BY_UUID = "rest/nodes/{0}";
    const NODE_GET_VERSION_HISTORY = "rest/nodes/{0}/versions";
    const NODE_PUT_RESTORE_VERSION = "rest/nodes/{0}/versions/{1}";
    const NODE_DEL_PURGE_VERSION = "rest/nodes/{0}/versions";
    const NODE_GET_MAY_BE_PROMOTED_AS_RECORD = "rest/nodes/{0}/record/status/valid";
    const NODE_PUT_PROMOTE_AS_RECORD = "rest/nodes/{0}/record/status";
    const NODE_DEL_DEGRADE_RECORD = "rest/nodes/{0}/record/status";
    const NODE_IS_ELECTRONIC_RECORD_PATH = "rest/nodes/{uuid}/path/e-record/valid";
    const NODE_GET_ELECTRONIC_RECORD_IN_PATH = "rest/nodes/{0}/path/e-record";
    const NODE_GET_CHILDREN_PAGINATED = "rest/nodes/{0}/children";
    const NODE_GET_BREADCRUMB = "rest/nodes/{0}/breadcrumb";
    const NODE_PUT_SUBSCRIBE = "rest/nodes/{0}/subscription";
    const NODE_DEL_UNSUBSCRIBE = "rest/nodes/{0}/subscription";
    const NODE_POST_IMPORT_ZIP = "rest/nodes/{0}/zip";
    const NODE_POST_UNZIP = "rest/nodes/{0}/unzip";
    const NODE_GET_EXPORT_ZIP = "rest/nodes/zip";
    const NODE_GET_CHILDREN_BY_CATEGORY_PAGINATED = "rest/nodes/categories/{0}/children";
    const NODE_GET_FILTER = "rest/nodes/filter";
    const NODE_GET_EVALUATE_EXPORT_ZIP = "rest/nodes/zip/evaluate";
    const NODE_POST_DOWNLOAD_TOKEN = "rest/nodes/{uuid}/downloadToken";
    const NODE_POST_RESTORE = "rest/nodes/{0}/restore";
    const NODE_HIERARCHY_LOCK = "rest/nodes/{0}/hierarchy/lock";
    const NODE_PUT_LOCK = "rest/nodes/{0}/lock"; // also used by force with parameter
    const NODE_DEL_UNLOCK = "rest/nodes/{0}/lock"; // also used by force with parameter
    const NODE_GET_IS_LOCKED = "rest/nodes/{0}/lock";
    const NODE_GET_LOCK_INFO = "rest/nodes/{0}/lock/info";
    const NODE_PUT_COMMENT = "rest/nodes/{0}/versions/{1}/comment";
    const NODE_GET_PAGINATOR_PLUGINS = "rest/nodes/paginators";

    /**
     * Relation
     */
    const RELATION_DEL_DELETE = "rest/relations/{0}";
    const RELATION_DELETE_GROUP_ITEM = "rest/relations/{0}/groups/{1}";
    const RELATION_DELETE_GROUP = "rest/relations/groups/{0}";
    const RELATION_GET_RELATION_TYPES = "rest/relations/types";
    const RELATION_GET_GROUP = "rest/relations/groups/{0}";
    const RELATION_POST_NODE_TO_GROUP = "rest/relations/groups/{0}/nodes";
    const RELATION_PUT_SET_GROUP_NAME = "rest/relations/groups/{0}/name";
    const RELATION_GET_RELATIONS = "rest/relations/nodes/{0}/relations";
    const RELATION_GET_RELATION_GROUPS = "rest/relations/nodes/{0}/groups";
    const RELATION_GET_ALL_RELATION_GROUPS = "rest/relations/nodes/groups";
    const RELATION_POST_ADD = "rest/relations/nodes/{0}/relations/types/{1}";
    const RELATION_POST_ADD_GROUP = "rest/relations/nodes/{0}/relations/types/groups/{1}";
    
    /**
     * Workflow
     */
    const WORKFLOW_POST_REGISTER_PROCESS_DEFINITION = "rest/workflows";
    const WORKFLOW_GET_FIND_ALL_PROCESS_DEFINITIONS = "rest/workflows";
    const WORKFLOW_GET_FIND_LATEST_PROCESS_DEFINITIONS = "rest/workflows/latest";
    const WORKFLOW_GET_FIND_LAST_PROCESS_DEFINITION = "rest/workflows/last";
    const WORKFLOW_DEL_DELETE_PROCESS_DEFINITION = "rest/workflows/{0}";
    const WORKFLOW_GET_PROCESS_DEFINITION = "rest/workflows/{0}";
    const WORKFLOW_GET_PROCESS_DEFINITION_IMAGE = "rest/workflows/{0}/image/{1}";
    const WORKFLOW_POST_RUN_PROCESS_DEFINITION = "rest/workflows/{0}/nodes/{1}";
    const WORKFLOW_GET_FIND_PROCESS_INSTANCES = "rest/workflows/{0}/instances";
    const WORKFLOW_GET_PROCESS_DEFINITION_FORMS = "rest/workflows/{0}/formElements";
    const WORKFLOW_GET_PROCESS_INSTANCE = "rest/workflows/instances/{0}";
    const WORKFLOW_GET_TASK_INSTANCES = "rest/workflows/instances/{0}/tasks";
    const WORKFLOW_GET_TASK_INSTANCE = "rest/workflows/instances/tasks/{0}";
    const WORKFLOW_PUT_START_TASKINSTANCE = "rest/workflows/instances/tasks/{0}";
    const WORKFLOW_DEL_END_TASKINSTANCE = "rest/workflows/instances/tasks/{0}";
    const WORKFLOW_PUT_SET_TASK_ACTOR_ID = "rest/workflows/instances/tasks/{0}/actor";
    const WORKFLOW_PUT_SET_TASK_INSTANCE_VALUES = "rest/workflows/instances/tasks/{0}/values";
    const WORKFLOW_GET_USER_TASK_INSTANCES = "rest/workflows/user/instances/tasks";
    const WORKFLOW_GET_POOLED_TASK_INSTANCES = "rest/workflows/pooled";
    
    /**
     * Convert
     */
    const CONVERT_POST_DOC_TO_PDF = "rest/conversion/doc/pdf";
    const CONVERT_POST_DOC_TO_TXT = "rest/conversion/doc/txt";
    const CONVERT_POST_DOC_IMAGE_CONVERT = "rest/conversion/img";
    const CONVERT_POST_IMAGE_TO_TXT = "rest/conversion/img/txt";
    const CONVERT_GET_HTML_TO_PDF = "rest/conversion/url/pdf";
    const CONVERT_POST_BARCODE_TO_TXT = "rest/conversion/barcode/txt";
    
    /**
     * Report
     */
    const REPORT_GET_LIST = "rest/reports";
    const REPORT_GET = "rest/reports/{0}";
    const REPORT_POST_EXECUTE = "rest/reports/{0}";
    const REPORT_POST_DOWNLOAD_TOKEN = "rest/reports/{0}/downloadToken";
    const REPORT_POST_SAVE = "rest/reports/{0}/save";
    
    /**
     * Dashboard
     */
    const DASHBOARD_GET_USER_CHECKED_OUT_DOCUMENTS = "rest/dashboard/user/documents/checkedOut";
    const DASHBOARD_GET_USER_LAST_MODIFIED_DOCUMENTS = "rest/dashboard/user/documents/modified";
    const DASHBOARD_GET_USER_SUBSCRIBED_DOCUMENTS = "rest/dashboard/user/documents/subscribed";
    const DASHBOARD_GET_USER_LOCKED_DOCUMENTS = "rest/dashboard/user/documents/locked";
    const DASHBOARD_GET_USER_LAST_CREATED_DOCUMENTS = "rest/dashboard/user/documents/created";
    const DASHBOARD_GET_USER_LAST_DOWNLOADED_DOCUMENTS = "rest/dashboard/user/documents/downloaded";
    const DASHBOARD_GET_USER_SUBSCRIBED_FOLDERS = "rest/dashboard/user/folders/subscribed";
    const DASHBOARD_GET_USER_LAST_CREATED_FOLDERS = "rest/dashboard/user/folders/created";
    const DASHBOARD_GET_USER_LOCKED_RECORDS = "rest/dashboard/user/records/locked";
    const DASHBOARD_GET_USER_SUBSCRIBED_RECORDS = "rest/dashboard/user/records/subscribed";
    const DASHBOARD_GET_USER_LAST_CREATED_RECORDS = "rest/dashboard/user/records/created";
    const DASHBOARD_GET_USER_LAST_IMPORTED_MAILS = "rest/dashboard/user/mails/imported";
    const DASHBOARD_GET_USER_LAST_IMPORTED_MAIL_ATTACHMENTS = "rest/dashboard/user/mails/attachments/imported";
    
    /**
     * Notification
     */
    const NOTIFICATION_POST_NOTIFY = "rest/notification";
    
    /**
     * Task
     */
    const TASK_POST_CREATE = "rest/tasks";
    const TASK_GET_GET_TASK = "rest/tasks/{0}";
    const TASK_PUT_UPDATE = "rest/tasks/{0}";
    const TASK_DEL_DELETE = "rest/tasks/{0}";
    const TASK_GET_ASSIGNED = "rest/tasks/assigned";
    const TASK_GET_ASSIGNED_TOTAL = "rest/tasks/assigned/total";
    const TASK_GET_ACTIVE = "rest/tasks/active";
    const TASK_GET_ACTIVE_TOTAL = "rest/tasks/active/total";
    const TASK_GET_FINISHED = "rest/tasks/finished";
    const TASK_GET_FINISHED_TOTAL = "rest/tasks/finished/total";
    const TASK_GET_STATUSES = "rest/tasks/statuses";
    const TASK_GET_PROJECTS_ACTIVE = "rest/tasks/projects/active/{0}";
    const TASK_GET_PROJECT = "rest/tasks/projects/{0}";
    const TASK_POST_CREATE_PROJECT = "rest/tasks/projects";
    const TASK_PUT_UPDATE_PROJECT = "rest/tasks/projects/{0}";
    const TASK_DEL_DELETE_PROJECT = "rest/tasks/projects/{0}";
    const TASK_GET_TYPES_ACTIVE = "rest/tasks/types/active/{0}";
    const TASK_GET_TYPE = "rest/tasks/types/{0}";
    const TASK_POST_CREATE_TYPE = "rest/tasks/types";
    const TASK_PUT_UPDATE_TYPE = "rest/tasks/types/{0}";
    const TASK_DEL_DELETE_TYPE = "rest/tasks/types/{0}";
    const TASK_GET_STATUS = "rest/tasks/status/{0}";
    const TASK_POST_CREATE_STATUS = "rest/tasks/status";
    const TASK_PUT_UPDATE_STATUS = "rest/tasks/status/{0}";
    const TASK_DEL_DELETE_STATUS = "rest/tasks/status/{0}";
    const TASK_GET_NOTES = "rest/tasks/{0}/notes";
    const TASK_POST_CREATE_NOTE = "rest/tasks/{0}/notes";
    const TASK_DEL_DELETE_NOTE = "rest/tasks/notes/{0}";
    const TASK_PUT_UPDATE_NOTE = "rest/tasks/notes/{0}";
    // Bookmark
    const BOOKMARK_GET_ALL_BY_USER = "rest/bookmarks";
    const BOOKMARK_POST_CREATE = "rest/bookmarks";
    const BOOKMARK_PUT_RENAME = "rest/bookmarks/{0}/rename";
    const BOOKMARK_DEL_DELETE = "rest/bookmarks/{0}";
    // Stamp
    const STAMP_GET_ALL = "rest/stamp/list";
    const STAMP_GET_TEXT_BY_PK = "rest/stamp/text/{0}/{1}";
    const STAMP_GET_IMAGE_BY_PK = "rest/stamp/image/{0}/{1}";
    const STAMP_GET_COORDINATES = "rest/stamp/coordinates";
    const STAMP_GET_EXPRESSIONS = "rest/stamp/expressions";
    const STAMP_POST_STAMP_TEXT = "rest/stamp/nodes/{0}/stamp/text/{1}";
    const STAMP_POST_STAMP_IMAGE = "rest/stamp/nodes/{0}/stamp/image/{1}";
    const STAMP_POST_STAMP_IMAGE_MANUALLY = "rest/stamp/nodes/{0}/stamp/image/{1}/manually";
    const STAMP_GET_STAMP_IMAGE_DIMENSIONS = "rest/stamp/nodes/{0}/stamp/image/{1}/fly";
    const STAMP_GET_PERSONAL_STAMPS = "rest/stamp/personal";
    const STAMP_GET_PERSONAL_STAMP_IMAGES = "rest/stamp/personal/{0}";
    // Activity
    const ACTIVITY_GET_FILTER = "rest/activity/find";
    const ACTIVITY_GET_ACTIONS = "rest/activity/actions";

    /**
     * getUri
     */
    public static function getUri($host, $serviceUrl) {
        if (substr($host, strlen($host) - 1, strlen($host)) == '/') {
            return $host . $serviceUrl;
        } else {
            return $host . "/" . $serviceUrl;
        }
    }

}

?>
