{
  "consumes": [
    "application/json"
  ],
  "definitions": {
    "ListLogRequestLogFormat": {
      "default": "JSON",
      "enum": [
        "JSON",
        "CSV",
        "XLSX"
      ],
      "title": "Output Format",
      "type": "string"
    },
    "ListSharedResourcesRequestListShareType": {
      "default": "ANY",
      "enum": [
        "ANY",
        "LINKS",
        "CELLS"
      ],
      "type": "string"
    },
    "ListSharedResourcesResponseSharedResource": {
      "properties": {
        "Cells": {
          "items": {
            "$ref": "#/definitions/restCell"
          },
          "type": "array"
        },
        "Link": {
          "$ref": "#/definitions/restShareLink"
        },
        "Node": {
          "$ref": "#/definitions/treeNode"
        }
      },
      "title": "Container for ShareLink or Cell",
      "type": "object"
    },
    "PackagePackageStatus": {
      "default": "Draft",
      "enum": [
        "Draft",
        "Pending",
        "Released"
      ],
      "type": "string"
    },
    "ResourcePolicyQueryQueryType": {
      "default": "CONTEXT",
      "enum": [
        "CONTEXT",
        "ANY",
        "NONE",
        "USER"
      ],
      "type": "string"
    },
    "UpdateUserMetaNamespaceRequestUserMetaNsOp": {
      "default": "PUT",
      "enum": [
        "PUT",
        "DELETE"
      ],
      "type": "string"
    },
    "UpdateUserMetaRequestUserMetaOp": {
      "default": "PUT",
      "enum": [
        "PUT",
        "DELETE"
      ],
      "type": "string"
    },
    "activityObject": {
      "properties": {
        "@context": {
          "type": "string"
        },
        "accuracy": {
          "format": "float",
          "title": "Place Properties",
          "type": "number"
        },
        "actor": {
          "$ref": "#/definitions/activityObject",
          "title": "Activity Properties"
        },
        "altitude": {
          "format": "float",
          "type": "number"
        },
        "anyOf": {
          "$ref": "#/definitions/activityObject"
        },
        "attachment": {
          "$ref": "#/definitions/activityObject"
        },
        "attributedTo": {
          "$ref": "#/definitions/activityObject"
        },
        "audience": {
          "$ref": "#/definitions/activityObject"
        },
        "bcc": {
          "$ref": "#/definitions/activityObject"
        },
        "bto": {
          "$ref": "#/definitions/activityObject"
        },
        "cc": {
          "$ref": "#/definitions/activityObject"
        },
        "closed": {
          "format": "date-time",
          "type": "string"
        },
        "content": {
          "$ref": "#/definitions/activityObject"
        },
        "context": {
          "$ref": "#/definitions/activityObject"
        },
        "current": {
          "$ref": "#/definitions/activityObject"
        },
        "deleted": {
          "format": "date-time",
          "type": "string"
        },
        "duration": {
          "format": "date-time",
          "type": "string"
        },
        "endTime": {
          "format": "date-time",
          "type": "string"
        },
        "first": {
          "$ref": "#/definitions/activityObject"
        },
        "formerType": {
          "$ref": "#/definitions/activityObjectType",
          "title": "Tombstone Properties"
        },
        "generator": {
          "$ref": "#/definitions/activityObject"
        },
        "height": {
          "format": "int32",
          "type": "integer"
        },
        "href": {
          "title": "Link Properties",
          "type": "string"
        },
        "hreflang": {
          "type": "string"
        },
        "icon": {
          "$ref": "#/definitions/activityObject"
        },
        "id": {
          "type": "string"
        },
        "image": {
          "$ref": "#/definitions/activityObject"
        },
        "inReplyTo": {
          "$ref": "#/definitions/activityObject"
        },
        "instrument": {
          "$ref": "#/definitions/activityObject"
        },
        "items": {
          "items": {
            "$ref": "#/definitions/activityObject"
          },
          "title": "Collection Properties",
          "type": "array"
        },
        "last": {
          "$ref": "#/definitions/activityObject"
        },
        "latitude": {
          "format": "float",
          "type": "number"
        },
        "location": {
          "$ref": "#/definitions/activityObject"
        },
        "longitude": {
          "format": "float",
          "type": "number"
        },
        "markdown": {
          "type": "string"
        },
        "mediaType": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "next": {
          "$ref": "#/definitions/activityObject"
        },
        "object": {
          "$ref": "#/definitions/activityObject"
        },
        "oneOf": {
          "$ref": "#/definitions/activityObject",
          "title": "Question Properties"
        },
        "origin": {
          "$ref": "#/definitions/activityObject"
        },
        "partOf": {
          "$ref": "#/definitions/activityObject"
        },
        "prev": {
          "$ref": "#/definitions/activityObject"
        },
        "preview": {
          "$ref": "#/definitions/activityObject"
        },
        "published": {
          "format": "date-time",
          "type": "string"
        },
        "radius": {
          "format": "float",
          "type": "number"
        },
        "rel": {
          "type": "string"
        },
        "relationship": {
          "$ref": "#/definitions/activityObject"
        },
        "replies": {
          "$ref": "#/definitions/activityObject"
        },
        "result": {
          "$ref": "#/definitions/activityObject"
        },
        "startTime": {
          "format": "date-time",
          "type": "string"
        },
        "subject": {
          "$ref": "#/definitions/activityObject",
          "title": "Relationship Properties"
        },
        "summary": {
          "type": "string"
        },
        "tag": {
          "$ref": "#/definitions/activityObject"
        },
        "target": {
          "$ref": "#/definitions/activityObject"
        },
        "to": {
          "$ref": "#/definitions/activityObject"
        },
        "totalItems": {
          "format": "int32",
          "type": "integer"
        },
        "type": {
          "$ref": "#/definitions/activityObjectType"
        },
        "units": {
          "type": "string"
        },
        "updated": {
          "format": "date-time",
          "type": "string"
        },
        "url": {
          "$ref": "#/definitions/activityObject"
        },
        "width": {
          "format": "int32",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "activityObjectType": {
      "default": "BaseObject",
      "enum": [
        "BaseObject",
        "Activity",
        "Link",
        "Mention",
        "Collection",
        "OrderedCollection",
        "CollectionPage",
        "OrderedCollectionPage",
        "Application",
        "Group",
        "Organization",
        "Person",
        "Service",
        "Article",
        "Audio",
        "Document",
        "Event",
        "Image",
        "Note",
        "Page",
        "Place",
        "Profile",
        "Relationship",
        "Tombstone",
        "Video",
        "Accept",
        "Add",
        "Announce",
        "Arrive",
        "Block",
        "Create",
        "Delete",
        "Dislike",
        "Flag",
        "Follow",
        "Ignore",
        "Invite",
        "Join",
        "Leave",
        "Like",
        "Listen",
        "Move",
        "Offer",
        "Question",
        "Reject",
        "Read",
        "Remove",
        "TentativeReject",
        "TentativeAccept",
        "Travel",
        "Undo",
        "Update",
        "UpdateComment",
        "UpdateMeta",
        "View",
        "Workspace",
        "Digest",
        "Folder",
        "Cell",
        "Share"
      ],
      "title": "- Collection: CollectionTypes\n - Application: Actor Types\n - Article: Objects Types\n - Accept: Activity Types\n - Workspace: Pydio Types",
      "type": "string"
    },
    "activityOwnerType": {
      "default": "NODE",
      "enum": [
        "NODE",
        "USER"
      ],
      "type": "string"
    },
    "activitySearchSubscriptionsRequest": {
      "properties": {
        "ObjectIds": {
          "items": {
            "type": "string"
          },
          "title": "Filter by object Ids",
          "type": "array"
        },
        "ObjectTypes": {
          "items": {
            "$ref": "#/definitions/activityOwnerType"
          },
          "title": "Filter by type of objects",
          "type": "array"
        },
        "UserIds": {
          "items": {
            "type": "string"
          },
          "title": "List of UserIds for which we want to list",
          "type": "array"
        }
      },
      "type": "object"
    },
    "activityStreamActivitiesRequest": {
      "properties": {
        "AsDigest": {
          "title": "Compute a digest of all unread activities",
          "type": "boolean"
        },
        "BoxName": {
          "title": "Target inbox or outbox for the given object",
          "type": "string"
        },
        "Context": {
          "$ref": "#/definitions/activityStreamContext",
          "title": "Define the context of the stream"
        },
        "ContextData": {
          "title": "Value for the context (e.g. User Id, Node Id)",
          "type": "string"
        },
        "Language": {
          "description": "Provide language information for building the human-readable strings.",
          "type": "string"
        },
        "Limit": {
          "format": "int64",
          "title": "Limit the number of results",
          "type": "string"
        },
        "Offset": {
          "format": "int64",
          "title": "Start listing at a given position",
          "type": "string"
        },
        "PointOfView": {
          "$ref": "#/definitions/activitySummaryPointOfView",
          "title": "Provide context for building the human-readable strings of each activity"
        },
        "StreamFilter": {
          "title": "Json-encoded filter",
          "type": "string"
        },
        "UnreadCountOnly": {
          "title": "Count last activities that were not loaded yet",
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "activityStreamContext": {
      "default": "MYFEED",
      "enum": [
        "MYFEED",
        "USER_ID",
        "NODE_ID"
      ],
      "type": "string"
    },
    "activitySubscription": {
      "properties": {
        "Events": {
          "items": {
            "type": "string"
          },
          "title": "List of events to listen to",
          "type": "array"
        },
        "ObjectId": {
          "title": "If of the owner",
          "type": "string"
        },
        "ObjectType": {
          "$ref": "#/definitions/activityOwnerType",
          "title": "Type of owner"
        },
        "UserId": {
          "title": "Id of the user for this subscription",
          "type": "string"
        }
      },
      "type": "object"
    },
    "activitySummaryPointOfView": {
      "default": "GENERIC",
      "enum": [
        "GENERIC",
        "ACTOR",
        "SUBJECT"
      ],
      "type": "string"
    },
    "authToken": {
      "properties": {
        "AccessToken": {
          "type": "string"
        },
        "ExpiresAt": {
          "type": "string"
        },
        "IDToken": {
          "type": "string"
        },
        "RefreshToken": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "ctlPeer": {
      "properties": {
        "Address": {
          "type": "string"
        },
        "Id": {
          "type": "string"
        },
        "Metadata": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "Port": {
          "format": "int32",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "ctlService": {
      "properties": {
        "Controllable": {
          "type": "boolean"
        },
        "Description": {
          "type": "string"
        },
        "Metadata": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "Name": {
          "type": "string"
        },
        "RunningPeers": {
          "items": {
            "$ref": "#/definitions/ctlPeer"
          },
          "type": "array"
        },
        "Status": {
          "$ref": "#/definitions/ctlServiceStatus"
        },
        "Tag": {
          "type": "string"
        },
        "Version": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "ctlServiceCommand": {
      "default": "START",
      "enum": [
        "START",
        "STOP"
      ],
      "type": "string"
    },
    "ctlServiceStatus": {
      "default": "ANY",
      "enum": [
        "ANY",
        "STOPPED",
        "STARTING",
        "STOPPING",
        "STARTED"
      ],
      "type": "string"
    },
    "encryptionAdminCreateKeyRequest": {
      "properties": {
        "KeyID": {
          "title": "Create a key with this ID",
          "type": "string"
        },
        "Label": {
          "title": "Provide label for the newly created key",
          "type": "string"
        }
      },
      "type": "object"
    },
    "encryptionAdminCreateKeyResponse": {
      "properties": {
        "Success": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "encryptionAdminDeleteKeyRequest": {
      "properties": {
        "KeyID": {
          "title": "Id of the key to delete",
          "type": "string"
        }
      },
      "type": "object"
    },
    "encryptionAdminDeleteKeyResponse": {
      "properties": {
        "Success": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "encryptionAdminExportKeyRequest": {
      "properties": {
        "KeyID": {
          "title": "Id of the key to export",
          "type": "string"
        },
        "StrPassword": {
          "title": "Associated password as string",
          "type": "string"
        }
      },
      "type": "object"
    },
    "encryptionAdminExportKeyResponse": {
      "properties": {
        "Key": {
          "$ref": "#/definitions/encryptionKey"
        }
      },
      "type": "object"
    },
    "encryptionAdminImportKeyRequest": {
      "properties": {
        "Key": {
          "$ref": "#/definitions/encryptionKey",
          "title": "Imported key data"
        },
        "Override": {
          "title": "Whether to override if a key with same ID already exists",
          "type": "boolean"
        },
        "StrPassword": {
          "title": "Key password",
          "type": "string"
        }
      },
      "type": "object"
    },
    "encryptionAdminImportKeyResponse": {
      "properties": {
        "Success": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "encryptionAdminListKeysRequest": {
      "properties": {
        "All": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "encryptionAdminListKeysResponse": {
      "properties": {
        "Keys": {
          "items": {
            "$ref": "#/definitions/encryptionKey"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "encryptionExport": {
      "properties": {
        "By": {
          "title": "Name of exporter",
          "type": "string"
        },
        "Date": {
          "format": "int32",
          "title": "Date of export",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "encryptionImport": {
      "properties": {
        "By": {
          "title": "Name of importer",
          "type": "string"
        },
        "Date": {
          "format": "int32",
          "title": "Date of import",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "encryptionKey": {
      "properties": {
        "Content": {
          "title": "Key content",
          "type": "string"
        },
        "CreationDate": {
          "format": "int32",
          "title": "Key creation date",
          "type": "integer"
        },
        "ID": {
          "title": "Key ID",
          "type": "string"
        },
        "Info": {
          "$ref": "#/definitions/encryptionKeyInfo",
          "title": "Additional key info"
        },
        "Label": {
          "title": "Key label",
          "type": "string"
        },
        "Owner": {
          "title": "Key owner",
          "type": "string"
        }
      },
      "type": "object"
    },
    "encryptionKeyInfo": {
      "properties": {
        "Exports": {
          "items": {
            "$ref": "#/definitions/encryptionExport"
          },
          "type": "array"
        },
        "Imports": {
          "items": {
            "$ref": "#/definitions/encryptionImport"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "idmACL": {
      "description": "ACL are the basic flags that can be put anywhere in the tree to provide some specific rights to a given role.\nThe context of how they apply can be fine-tuned by workspace.",
      "properties": {
        "Action": {
          "$ref": "#/definitions/idmACLAction",
          "title": "Action on which this ACL provides control"
        },
        "ID": {
          "title": "Unique ID of this ACL",
          "type": "string"
        },
        "NodeID": {
          "title": "Associated Node",
          "type": "string"
        },
        "RoleID": {
          "title": "Associated Role",
          "type": "string"
        },
        "WorkspaceID": {
          "title": "Associated Workspace",
          "type": "string"
        }
      },
      "type": "object"
    },
    "idmACLAction": {
      "properties": {
        "Name": {
          "title": "ACL Action name, most frequent values are \"read\" or \"write\"",
          "type": "string"
        },
        "Value": {
          "title": "ACL Action value",
          "type": "string"
        }
      },
      "type": "object"
    },
    "idmACLSingleQuery": {
      "properties": {
        "Actions": {
          "items": {
            "$ref": "#/definitions/idmACLAction"
          },
          "title": "List of Actions to lookup",
          "type": "array"
        },
        "NodeIDs": {
          "items": {
            "type": "string"
          },
          "title": "Filter by one or more node UUID",
          "type": "array"
        },
        "RoleIDs": {
          "items": {
            "type": "string"
          },
          "title": "Filter by one or more role UUID",
          "type": "array"
        },
        "WorkspaceIDs": {
          "items": {
            "type": "string"
          },
          "title": "Filter by one or more workspace UUID",
          "type": "array"
        },
        "not": {
          "title": "Internal - Negate query",
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "idmListPolicyGroupsRequest": {
      "properties": {
        "Filter": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "idmListPolicyGroupsResponse": {
      "properties": {
        "PolicyGroups": {
          "items": {
            "$ref": "#/definitions/idmPolicyGroup"
          },
          "type": "array"
        },
        "Total": {
          "format": "int32",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "idmNodeType": {
      "default": "UNKNOWN",
      "enum": [
        "UNKNOWN",
        "USER",
        "GROUP"
      ],
      "type": "string"
    },
    "idmPolicy": {
      "properties": {
        "actions": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "conditions": {
          "additionalProperties": {
            "$ref": "#/definitions/idmPolicyCondition"
          },
          "type": "object"
        },
        "description": {
          "type": "string"
        },
        "effect": {
          "$ref": "#/definitions/idmPolicyEffect"
        },
        "id": {
          "type": "string"
        },
        "resources": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "subjects": {
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "idmPolicyCondition": {
      "properties": {
        "jsonOptions": {
          "type": "string"
        },
        "type": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "idmPolicyEffect": {
      "default": "unknown",
      "enum": [
        "unknown",
        "deny",
        "allow"
      ],
      "type": "string"
    },
    "idmPolicyGroup": {
      "properties": {
        "Description": {
          "type": "string"
        },
        "LastUpdated": {
          "format": "int32",
          "type": "integer"
        },
        "Name": {
          "type": "string"
        },
        "OwnerUuid": {
          "type": "string"
        },
        "Policies": {
          "items": {
            "$ref": "#/definitions/idmPolicy"
          },
          "type": "array"
        },
        "ResourceGroup": {
          "$ref": "#/definitions/idmPolicyResourceGroup"
        },
        "Uuid": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "idmPolicyResourceGroup": {
      "default": "rest",
      "enum": [
        "rest",
        "acl",
        "oidc"
      ],
      "type": "string"
    },
    "idmRole": {
      "description": "Role represents a generic set of permissions that can be applied to any users or groups.",
      "properties": {
        "AutoApplies": {
          "items": {
            "type": "string"
          },
          "title": "List of profiles (standard, shared, admin) on which the role will be automatically applied",
          "type": "array"
        },
        "ForceOverride": {
          "description": "Is used in a stack of roles, this one will always be applied last.",
          "type": "boolean"
        },
        "GroupRole": {
          "title": "Whether this role is attached to a Group object",
          "type": "boolean"
        },
        "IsTeam": {
          "title": "Whether this role represents a user team or not",
          "type": "boolean"
        },
        "Label": {
          "title": "Label of this role",
          "type": "string"
        },
        "LastUpdated": {
          "format": "int32",
          "title": "Last modification date of the role",
          "type": "integer"
        },
        "Policies": {
          "items": {
            "$ref": "#/definitions/serviceResourcePolicy"
          },
          "title": "List of policies for securing this role access",
          "type": "array"
        },
        "PoliciesContextEditable": {
          "title": "Whether the policies resolve into an editable state",
          "type": "boolean"
        },
        "UserRole": {
          "title": "Whether this role is attached to a User object",
          "type": "boolean"
        },
        "Uuid": {
          "title": "Unique identifier of this role",
          "type": "string"
        }
      },
      "type": "object"
    },
    "idmRoleSingleQuery": {
      "description": "RoleSingleQuery is the basic unit for building queries to Roles.",
      "properties": {
        "HasAutoApply": {
          "title": "Look for roles that have any value in the autoApplies field",
          "type": "boolean"
        },
        "IsGroupRole": {
          "title": "Look for roles associated with a Group",
          "type": "boolean"
        },
        "IsTeam": {
          "title": "Look up for roles associated with a Team",
          "type": "boolean"
        },
        "IsUserRole": {
          "title": "Look for roles associated with a User",
          "type": "boolean"
        },
        "Label": {
          "title": "Look for roles by label, eventually using \"wildchar\"",
          "type": "string"
        },
        "Uuid": {
          "items": {
            "type": "string"
          },
          "title": "Look for roles by Uuid",
          "type": "array"
        },
        "not": {
          "title": "Internal - Negate the query",
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "idmSearchUserMetaRequest": {
      "properties": {
        "MetaUuids": {
          "items": {
            "type": "string"
          },
          "title": "Look for meta by their unique identifier",
          "type": "array"
        },
        "Namespace": {
          "title": "Filter meta by their namespace",
          "type": "string"
        },
        "NodeUuids": {
          "items": {
            "type": "string"
          },
          "title": "Look for all meta for a list of nodes",
          "type": "array"
        },
        "ResourceQuery": {
          "$ref": "#/definitions/serviceResourcePolicyQuery",
          "title": "Filter meta by policies query"
        },
        "ResourceSubjectOwner": {
          "title": "Filter meta by owner (in the sense of the policies)",
          "type": "string"
        }
      },
      "title": "Request for searching UserMeta by NodeUuid or by Namespace",
      "type": "object"
    },
    "idmUpdateUserMetaNamespaceRequest": {
      "properties": {
        "Namespaces": {
          "items": {
            "$ref": "#/definitions/idmUserMetaNamespace"
          },
          "type": "array"
        },
        "Operation": {
          "$ref": "#/definitions/UpdateUserMetaNamespaceRequestUserMetaNsOp"
        }
      },
      "title": "Modify UserMetaNamespaces",
      "type": "object"
    },
    "idmUpdateUserMetaNamespaceResponse": {
      "properties": {
        "Namespaces": {
          "items": {
            "$ref": "#/definitions/idmUserMetaNamespace"
          },
          "type": "array"
        }
      },
      "title": "Response of the",
      "type": "object"
    },
    "idmUpdateUserMetaRequest": {
      "properties": {
        "MetaDatas": {
          "items": {
            "$ref": "#/definitions/idmUserMeta"
          },
          "title": "List of metadatas to update or delete",
          "type": "array"
        },
        "Operation": {
          "$ref": "#/definitions/UpdateUserMetaRequestUserMetaOp",
          "title": "Type of operation to apply (PUT / DELETE)"
        }
      },
      "title": "Request for modifying UserMeta",
      "type": "object"
    },
    "idmUpdateUserMetaResponse": {
      "properties": {
        "MetaDatas": {
          "items": {
            "$ref": "#/definitions/idmUserMeta"
          },
          "title": "List of metadatas",
          "type": "array"
        }
      },
      "title": "Response of UpdateUserMeta service",
      "type": "object"
    },
    "idmUser": {
      "properties": {
        "Attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "A free list of attributes",
          "type": "object"
        },
        "GroupLabel": {
          "title": "Label of the group, field is empty for users",
          "type": "string"
        },
        "GroupPath": {
          "title": "Path to the parent group",
          "type": "string"
        },
        "IsGroup": {
          "title": "Whether this object is a group or a user",
          "type": "boolean"
        },
        "LastConnected": {
          "format": "int32",
          "title": "Last successful connection timestamp",
          "type": "integer"
        },
        "Login": {
          "title": "User login is used to connect, field is empty for groups",
          "type": "string"
        },
        "OldPassword": {
          "title": "OldPassword must be set when a user updates her own password",
          "type": "string"
        },
        "Password": {
          "title": "Password can be passed to be updated (but never read back), field is empty for groups",
          "type": "string"
        },
        "Policies": {
          "items": {
            "$ref": "#/definitions/serviceResourcePolicy"
          },
          "title": "Policies securing access to this user",
          "type": "array"
        },
        "PoliciesContextEditable": {
          "description": "Context-resolved to quickly check if user is editable or not.",
          "type": "boolean"
        },
        "Roles": {
          "items": {
            "$ref": "#/definitions/idmRole"
          },
          "title": "List of roles applied to this user or group",
          "type": "array"
        },
        "Uuid": {
          "title": "User unique identifier",
          "type": "string"
        }
      },
      "title": "User can represent either a User or a Group",
      "type": "object"
    },
    "idmUserMeta": {
      "properties": {
        "JsonValue": {
          "title": "Json encoded value used to pass any type of values",
          "type": "string"
        },
        "Namespace": {
          "title": "Namespace for the metadata",
          "type": "string"
        },
        "NodeUuid": {
          "title": "Unique identifier of the node to which meta is attached",
          "type": "string"
        },
        "Policies": {
          "items": {
            "$ref": "#/definitions/serviceResourcePolicy"
          },
          "title": "Policies for securing access",
          "type": "array"
        },
        "PoliciesContextEditable": {
          "title": "Context-resolved to quickly check if this meta is editable or not",
          "type": "boolean"
        },
        "ResolvedNode": {
          "$ref": "#/definitions/treeNode",
          "title": "Pass along resolved Node for advanced filtering"
        },
        "Uuid": {
          "title": "Unique identifier of the metadata",
          "type": "string"
        }
      },
      "title": "Piece of metadata attached to a node",
      "type": "object"
    },
    "idmUserMetaNamespace": {
      "properties": {
        "Indexable": {
          "title": "Whether a modification of a metadata value for this namespace should trigger an indexation by the search engine",
          "type": "boolean"
        },
        "JsonDefinition": {
          "title": "Json-encoded type to provide accurate interface for edition",
          "type": "string"
        },
        "Label": {
          "title": "Human-readable Label",
          "type": "string"
        },
        "Namespace": {
          "title": "Namespace identifier, must be unique",
          "type": "string"
        },
        "Order": {
          "format": "int32",
          "title": "Order is used for sorting lists of namesapces",
          "type": "integer"
        },
        "Policies": {
          "items": {
            "$ref": "#/definitions/serviceResourcePolicy"
          },
          "title": "Policies securing this namespace",
          "type": "array"
        },
        "PoliciesContextEditable": {
          "title": "Context-resolved to quickly check if this meta is editable or not",
          "type": "boolean"
        }
      },
      "title": "Globally declared Namespace with associated policies",
      "type": "object"
    },
    "idmUserSingleQuery": {
      "properties": {
        "AttributeAnyValue": {
          "title": "Search for the existence of the AttributeName, whatever its value",
          "type": "boolean"
        },
        "AttributeName": {
          "title": "Search on attribute, to be combined with AttributeValue",
          "type": "string"
        },
        "AttributeValue": {
          "title": "Value used for comparison",
          "type": "string"
        },
        "ConnectedSince": {
          "title": "Lookup by last connection date. Must be a timestamp with a leading comparison symbol ('\u003c' or '\u003e')",
          "type": "string"
        },
        "FullPath": {
          "title": "Search one specific Group by its path",
          "type": "string"
        },
        "GroupPath": {
          "title": "List users below a specific on group path",
          "type": "string"
        },
        "HasProfile": {
          "title": "Lookup by profile name (e.g. admin, standard, shared). This is a shortcut for searching on the pydio:profile attribute",
          "type": "string"
        },
        "HasRole": {
          "title": "Search users having a specific role UUID",
          "type": "string"
        },
        "Login": {
          "title": "Lookup a user by Login",
          "type": "string"
        },
        "NodeType": {
          "$ref": "#/definitions/idmNodeType",
          "title": "Filter/Search by NodeType (generally user or group)"
        },
        "Password": {
          "title": "Lookup by hashed password, probably never used",
          "type": "string"
        },
        "Recursive": {
          "title": "When searching on group path, load all users and groups recursively",
          "type": "boolean"
        },
        "Uuid": {
          "title": "Lookup a user by its Uuid",
          "type": "string"
        },
        "not": {
          "title": "Internal - Negate the query/filter result",
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "idmWorkspace": {
      "description": "A Workspace is composed of a set of nodes UUIDs and is used to provide accesses to the tree via ACLs.",
      "properties": {
        "Attributes": {
          "title": "JSON-encoded list of attributes",
          "type": "string"
        },
        "Description": {
          "title": "Description of the workspace (max length 1000)",
          "type": "string"
        },
        "Label": {
          "title": "Label of the workspace (max length 500)",
          "type": "string"
        },
        "LastUpdated": {
          "format": "int32",
          "title": "Last modification time",
          "type": "integer"
        },
        "Policies": {
          "items": {
            "$ref": "#/definitions/serviceResourcePolicy"
          },
          "title": "Policies for securing access",
          "type": "array"
        },
        "PoliciesContextEditable": {
          "title": "Context-resolved to quickly check if workspace is editable or not",
          "type": "boolean"
        },
        "RootNodes": {
          "additionalProperties": {
            "$ref": "#/definitions/treeNode"
          },
          "title": "List of the Root Nodes in the tree that compose this workspace",
          "type": "object"
        },
        "RootUUIDs": {
          "items": {
            "type": "string"
          },
          "title": "Quick list of the RootNodes uuids",
          "type": "array"
        },
        "Scope": {
          "$ref": "#/definitions/idmWorkspaceScope",
          "title": "Scope can be ADMIN, ROOM (=CELL) or LINK"
        },
        "Slug": {
          "title": "Slug is an url-compatible form of the workspace label, or can be freely modified (max length 500)",
          "type": "string"
        },
        "UUID": {
          "title": "Unique identifier of the workspace",
          "type": "string"
        }
      },
      "type": "object"
    },
    "idmWorkspaceScope": {
      "default": "ANY",
      "enum": [
        "ANY",
        "ADMIN",
        "ROOM",
        "LINK"
      ],
      "type": "string"
    },
    "idmWorkspaceSingleQuery": {
      "properties": {
        "AttributeName": {
          "title": "Lookup for an attribute, to be used in combination with AttributeValue",
          "type": "string"
        },
        "AttributeValue": {
          "title": "Value used for comparison",
          "type": "string"
        },
        "HasAttribute": {
          "title": "Lookup for the presence of a specific attribute, whatever its value",
          "type": "string"
        },
        "LastUpdated": {
          "title": "Compared to workspace update date (Golang duration with a leading comparator \u003c or \u003e)",
          "type": "string"
        },
        "description": {
          "title": "Lookup by description",
          "type": "string"
        },
        "label": {
          "title": "Lookup by workspace Label",
          "type": "string"
        },
        "not": {
          "title": "Internal - Negate the query result",
          "type": "boolean"
        },
        "scope": {
          "$ref": "#/definitions/idmWorkspaceScope",
          "title": "Restrict to a specific workspace type"
        },
        "slug": {
          "title": "Select workspace by slug",
          "type": "string"
        },
        "uuid": {
          "title": "Lookup by workspace Uuid",
          "type": "string"
        }
      },
      "type": "object"
    },
    "installCheckResult": {
      "properties": {
        "JsonResult": {
          "type": "string"
        },
        "Name": {
          "type": "string"
        },
        "Success": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "installGetAgreementResponse": {
      "properties": {
        "Text": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "installGetDefaultsResponse": {
      "properties": {
        "config": {
          "$ref": "#/definitions/installInstallConfig"
        }
      },
      "type": "object"
    },
    "installInstallConfig": {
      "properties": {
        "CheckResults": {
          "items": {
            "$ref": "#/definitions/installCheckResult"
          },
          "type": "array"
        },
        "DocumentsDSN": {
          "title": "Additional Documents DSN data",
          "type": "string"
        },
        "ProxyConfig": {
          "$ref": "#/definitions/installProxyConfig",
          "title": "Additional proxy config (optional)"
        },
        "UseDocumentsDSN": {
          "type": "boolean"
        },
        "dbConnectionType": {
          "type": "string"
        },
        "dbManualDSN": {
          "type": "string"
        },
        "dbSocketFile": {
          "type": "string"
        },
        "dbSocketName": {
          "type": "string"
        },
        "dbSocketPassword": {
          "type": "string"
        },
        "dbSocketUser": {
          "type": "string"
        },
        "dbTCPHostname": {
          "type": "string"
        },
        "dbTCPName": {
          "type": "string"
        },
        "dbTCPPassword": {
          "type": "string"
        },
        "dbTCPPort": {
          "type": "string"
        },
        "dbTCPUser": {
          "type": "string"
        },
        "dbUseDefaults": {
          "type": "boolean"
        },
        "dsFolder": {
          "type": "string"
        },
        "dsName": {
          "type": "string"
        },
        "dsPort": {
          "type": "string"
        },
        "dsS3ApiKey": {
          "type": "string"
        },
        "dsS3ApiSecret": {
          "type": "string"
        },
        "dsS3BucketBinaries": {
          "type": "string"
        },
        "dsS3BucketCells": {
          "type": "string"
        },
        "dsS3BucketDefault": {
          "type": "string"
        },
        "dsS3BucketPersonal": {
          "type": "string"
        },
        "dsS3BucketThumbs": {
          "type": "string"
        },
        "dsS3BucketVersions": {
          "type": "string"
        },
        "dsS3Custom": {
          "type": "string"
        },
        "dsS3CustomRegion": {
          "type": "string"
        },
        "dsType": {
          "type": "string"
        },
        "frontendApplicationTitle": {
          "type": "string"
        },
        "frontendDefaultLanguage": {
          "type": "string"
        },
        "frontendHosts": {
          "type": "string"
        },
        "frontendLogin": {
          "type": "string"
        },
        "frontendPassword": {
          "type": "string"
        },
        "frontendRepeatPassword": {
          "type": "string"
        },
        "internalUrl": {
          "type": "string"
        },
        "licenseRequired": {
          "type": "boolean"
        },
        "licenseString": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "installInstallEventsResponse": {
      "properties": {
        "Success": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "installInstallRequest": {
      "properties": {
        "config": {
          "$ref": "#/definitions/installInstallConfig"
        }
      },
      "type": "object"
    },
    "installInstallResponse": {
      "properties": {
        "success": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "installPerformCheckRequest": {
      "properties": {
        "Config": {
          "$ref": "#/definitions/installInstallConfig"
        },
        "Name": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "installPerformCheckResponse": {
      "properties": {
        "Result": {
          "$ref": "#/definitions/installCheckResult"
        }
      },
      "type": "object"
    },
    "installProxyConfig": {
      "properties": {
        "Binds": {
          "items": {
            "type": "string"
          },
          "title": "A list of [host]:port to bind to",
          "type": "array"
        },
        "Certificate": {
          "$ref": "#/definitions/installTLSCertificate"
        },
        "LetsEncrypt": {
          "$ref": "#/definitions/installTLSLetsEncrypt"
        },
        "Maintenance": {
          "title": "If set, this site will be in maintenance mode",
          "type": "boolean"
        },
        "MaintenanceConditions": {
          "items": {
            "type": "string"
          },
          "title": "Append caddy directive to restrict maintenance mode",
          "type": "array"
        },
        "ReverseProxyURL": {
          "title": "Optional URL of reverse proxy exposing this site",
          "type": "string"
        },
        "SSLRedirect": {
          "title": "If TLS is set, whether to automatically redirect each http://host:port to https://host:port",
          "type": "boolean"
        },
        "SelfSigned": {
          "$ref": "#/definitions/installTLSSelfSigned"
        }
      },
      "title": "ProxyConfig gives necessary URL and TLS configurations to start proxy",
      "type": "object"
    },
    "installTLSCertificate": {
      "properties": {
        "CellsRootCA": {
          "type": "string"
        },
        "CertFile": {
          "type": "string"
        },
        "KeyFile": {
          "type": "string"
        }
      },
      "title": "TLSCertificate is a TLSConfig where user passes",
      "type": "object"
    },
    "installTLSLetsEncrypt": {
      "properties": {
        "AcceptEULA": {
          "type": "boolean"
        },
        "Email": {
          "type": "string"
        },
        "StagingCA": {
          "type": "boolean"
        }
      },
      "title": "TLSLetsEncrypt set up proxy to automatically get a valid certificate from let's encrypt servers",
      "type": "object"
    },
    "installTLSSelfSigned": {
      "properties": {
        "Hostnames": {
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "title": "TLSSelfSigned generates a selfsigned certificate",
      "type": "object"
    },
    "jobsAction": {
      "properties": {
        "ActionOutputFilter": {
          "$ref": "#/definitions/jobsActionOutputFilter",
          "title": "Previous action output filter"
        },
        "BreakAfter": {
          "title": "Stop full chain now : do not carry on executing next actions",
          "type": "boolean"
        },
        "Bypass": {
          "title": "Bypass this action (forward input to output and do nothing)",
          "type": "boolean"
        },
        "ChainedActions": {
          "items": {
            "$ref": "#/definitions/jobsAction"
          },
          "title": "Other actions to perform after this one is finished,\nusing the Output of this action as Input for the next.\nIf there are many, it is considered they can be triggered\nin parallel",
          "type": "array"
        },
        "ChatEventFilter": {
          "$ref": "#/definitions/jobsChatEventFilter",
          "title": "Filter values from ChatEvent"
        },
        "ContextMetaFilter": {
          "$ref": "#/definitions/jobsContextMetaFilter",
          "title": "Metadata policy-based filter"
        },
        "DataFilter": {
          "$ref": "#/definitions/jobsDataSelector",
          "title": "Filter values from JsonBody"
        },
        "DataSelector": {
          "$ref": "#/definitions/jobsDataSelector",
          "title": "Collect/select values from JsonBody"
        },
        "DataSourceFilter": {
          "$ref": "#/definitions/jobsDataSourceSelector",
          "title": "DataSource objects filter"
        },
        "DataSourceSelector": {
          "$ref": "#/definitions/jobsDataSourceSelector",
          "title": "DataSource objects collector"
        },
        "Description": {
          "title": "User-defined comment for this action",
          "type": "string"
        },
        "FailedFilterActions": {
          "items": {
            "$ref": "#/definitions/jobsAction"
          },
          "title": "If any Filter is used, next actions can be triggered on Failure\nThis adds ability to create conditional Yes/No branches",
          "type": "array"
        },
        "ID": {
          "title": "String Identifier for specific action",
          "type": "string"
        },
        "IdmFilter": {
          "$ref": "#/definitions/jobsIdmSelector",
          "title": "Idm objects filter"
        },
        "IdmSelector": {
          "$ref": "#/definitions/jobsIdmSelector",
          "title": "Idm objects collector"
        },
        "Label": {
          "title": "User-defined label for this action",
          "type": "string"
        },
        "MergeAction": {
          "$ref": "#/definitions/jobsAction",
          "title": "CollectAction adds starts another chain after the whole ChainedAction/FailedFilterActions have been performed"
        },
        "NodesFilter": {
          "$ref": "#/definitions/jobsNodesSelector",
          "title": "Node Filter"
        },
        "NodesSelector": {
          "$ref": "#/definitions/jobsNodesSelector",
          "title": "Nodes Selector"
        },
        "Parameters": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "Defined parameters for this action",
          "type": "object"
        },
        "Timeout": {
          "title": "Optional timeout for this action",
          "type": "string"
        },
        "TriggerFilter": {
          "$ref": "#/definitions/jobsTriggerFilter",
          "title": "Filter on specific triggers"
        },
        "UsersFilter": {
          "$ref": "#/definitions/jobsUsersSelector",
          "title": "User Filter (deprecated in favor of IdmSelector)"
        },
        "UsersSelector": {
          "$ref": "#/definitions/jobsUsersSelector",
          "title": "Users Selector (deprecated in favor of IdmSelector)"
        }
      },
      "type": "object"
    },
    "jobsActionLog": {
      "properties": {
        "Action": {
          "$ref": "#/definitions/jobsAction"
        },
        "InputMessage": {
          "$ref": "#/definitions/jobsActionMessage"
        },
        "OutputMessage": {
          "$ref": "#/definitions/jobsActionMessage"
        }
      },
      "type": "object"
    },
    "jobsActionMessage": {
      "properties": {
        "Acls": {
          "items": {
            "$ref": "#/definitions/idmACL"
          },
          "title": "One or more ACL",
          "type": "array"
        },
        "Activities": {
          "items": {
            "$ref": "#/definitions/activityObject"
          },
          "title": "One or more Activity",
          "type": "array"
        },
        "DataSources": {
          "items": {
            "$ref": "#/definitions/objectDataSource"
          },
          "title": "One or more DataSource",
          "type": "array"
        },
        "Event": {
          "$ref": "#/definitions/protobufAny",
          "title": "Initial event that triggered the Job"
        },
        "Nodes": {
          "items": {
            "$ref": "#/definitions/treeNode"
          },
          "title": "One or more Node",
          "type": "array"
        },
        "OutputChain": {
          "items": {
            "$ref": "#/definitions/jobsActionOutput"
          },
          "title": "Stack of ActionOutput messages appended by all previous actions",
          "type": "array"
        },
        "Roles": {
          "items": {
            "$ref": "#/definitions/idmRole"
          },
          "title": "One or more Role",
          "type": "array"
        },
        "Users": {
          "items": {
            "$ref": "#/definitions/idmUser"
          },
          "title": "One or more User",
          "type": "array"
        },
        "Workspaces": {
          "items": {
            "$ref": "#/definitions/idmWorkspace"
          },
          "title": "One or more Workspace",
          "type": "array"
        }
      },
      "title": "Message passed along from one action to another, main properties\nare modified by the various actions.\nOutputChain is being stacked up when passing through actions",
      "type": "object"
    },
    "jobsActionOutput": {
      "properties": {
        "ErrorString": {
          "title": "Error",
          "type": "string"
        },
        "Ignored": {
          "title": "If action was returned WithIgnore()",
          "type": "boolean"
        },
        "JsonBody": {
          "format": "byte",
          "title": "Arbitrary JSON-encoded bytes",
          "type": "string"
        },
        "RawBody": {
          "format": "byte",
          "title": "Arbitrary bytes sequence",
          "type": "string"
        },
        "StringBody": {
          "title": "Arbitrary string",
          "type": "string"
        },
        "Success": {
          "title": "True if action succeeded",
          "type": "boolean"
        },
        "Time": {
          "format": "int32",
          "title": "Time taken to run the action",
          "type": "integer"
        },
        "Vars": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Vars container, values are json-encoded.",
          "type": "object"
        }
      },
      "title": "Standard output of an action. Success value is required\nother are optional",
      "type": "object"
    },
    "jobsActionOutputFilter": {
      "properties": {
        "Description": {
          "title": "Selector additional description",
          "type": "string"
        },
        "Label": {
          "title": "Selector custom label",
          "type": "string"
        },
        "Query": {
          "$ref": "#/definitions/serviceQuery",
          "title": "Query built from ActionOutputSingleQuery"
        }
      },
      "title": "ActionOutputFilter can be used to filter last message output",
      "type": "object"
    },
    "jobsChatEventFilter": {
      "properties": {
        "Description": {
          "title": "Selector additional description",
          "type": "string"
        },
        "Label": {
          "title": "Selector custom label",
          "type": "string"
        },
        "Query": {
          "$ref": "#/definitions/serviceQuery",
          "title": "Query used to compute output object or list of objects"
        }
      },
      "type": "object"
    },
    "jobsCommand": {
      "default": "None",
      "enum": [
        "None",
        "Pause",
        "Resume",
        "Stop",
        "Delete",
        "RunOnce",
        "Inactive",
        "Active"
      ],
      "type": "string"
    },
    "jobsContextMetaFilter": {
      "properties": {
        "Description": {
          "title": "Selector additional description",
          "type": "string"
        },
        "Label": {
          "title": "Selector custom label",
          "type": "string"
        },
        "Query": {
          "$ref": "#/definitions/serviceQuery",
          "title": "Can be built with ContextMetaSingleQuery"
        },
        "Type": {
          "$ref": "#/definitions/jobsContextMetaFilterType",
          "title": "Type of context filter"
        }
      },
      "title": "PolicyContextFilter can be used to filter request metadata",
      "type": "object"
    },
    "jobsContextMetaFilterType": {
      "default": "RequestMeta",
      "enum": [
        "RequestMeta",
        "ContextUser"
      ],
      "type": "string"
    },
    "jobsCtrlCommand": {
      "properties": {
        "Cmd": {
          "$ref": "#/definitions/jobsCommand",
          "title": "Type of command to send (None, Pause, Resume, Stop, Delete, RunOnce, Inactive, Active)"
        },
        "JobId": {
          "title": "Id of the job",
          "type": "string"
        },
        "OwnerId": {
          "title": "Owner of the job",
          "type": "string"
        },
        "RunParameters": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "Parameters used for RunOnce command",
          "type": "object"
        },
        "TaskId": {
          "title": "Id of the associated task",
          "type": "string"
        }
      },
      "title": "Command sent to control a job or a task",
      "type": "object"
    },
    "jobsCtrlCommandResponse": {
      "properties": {
        "Msg": {
          "type": "string"
        }
      },
      "title": "Response to the CtrlCommand",
      "type": "object"
    },
    "jobsDataSelector": {
      "properties": {
        "ClearInput": {
          "title": "Clear previous selection",
          "type": "boolean"
        },
        "Collect": {
          "title": "Collect results",
          "type": "boolean"
        },
        "Description": {
          "title": "Selector additional description",
          "type": "string"
        },
        "FanOutInput": {
          "title": "Ignore query and just fan out input.LastOutput.JsonBody",
          "type": "boolean"
        },
        "Label": {
          "title": "Selector custom label",
          "type": "string"
        },
        "Query": {
          "$ref": "#/definitions/serviceQuery",
          "title": "Query used to compute output object or list of objects"
        },
        "Timeout": {
          "title": "Optional Timeout for this selector",
          "type": "string"
        }
      },
      "type": "object"
    },
    "jobsDataSourceSelector": {
      "properties": {
        "All": {
          "title": "Select all",
          "type": "boolean"
        },
        "ClearInput": {
          "title": "Clear previous selection",
          "type": "boolean"
        },
        "Collect": {
          "title": "Collect results",
          "type": "boolean"
        },
        "Description": {
          "title": "Selector additional description",
          "type": "string"
        },
        "FanOutInput": {
          "title": "Ignore query and just fan out input.DataSources",
          "type": "boolean"
        },
        "Label": {
          "title": "Selector custom label",
          "type": "string"
        },
        "Query": {
          "$ref": "#/definitions/serviceQuery",
          "title": "Composition of DataSourceSingleQueries"
        },
        "Timeout": {
          "title": "Optional Timeout for this selector",
          "type": "string"
        },
        "Type": {
          "$ref": "#/definitions/jobsDataSourceSelectorType",
          "title": "Selector type, either DataSource or Object service"
        }
      },
      "title": "Selector/Filter for DataSource objects",
      "type": "object"
    },
    "jobsDataSourceSelectorType": {
      "default": "DataSource",
      "enum": [
        "DataSource",
        "Object"
      ],
      "type": "string"
    },
    "jobsDeleteTasksRequest": {
      "properties": {
        "JobId": {
          "title": "Id of the job",
          "type": "string"
        },
        "PruneLimit": {
          "format": "int32",
          "title": "If deleting by status, optionally keep only a number of tasks",
          "type": "integer"
        },
        "Status": {
          "items": {
            "$ref": "#/definitions/jobsTaskStatus"
          },
          "title": "If no TaskID and/or no JobID are passed, delete tasks by status",
          "type": "array"
        },
        "TaskID": {
          "items": {
            "type": "string"
          },
          "title": "Ids of tasks to delete",
          "type": "array"
        }
      },
      "type": "object"
    },
    "jobsDeleteTasksResponse": {
      "properties": {
        "Deleted": {
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "jobsIdmSelector": {
      "properties": {
        "All": {
          "title": "Load all objects",
          "type": "boolean"
        },
        "ClearInput": {
          "title": "Clear previous selection",
          "type": "boolean"
        },
        "Collect": {
          "title": "Pass a slice of objects to one action, or trigger all actions in parallel",
          "type": "boolean"
        },
        "Description": {
          "title": "Selector additional description",
          "type": "string"
        },
        "FanOutInput": {
          "title": "Ignore query and just fan out input.[Type]",
          "type": "boolean"
        },
        "Label": {
          "title": "Selector custom label",
          "type": "string"
        },
        "Query": {
          "$ref": "#/definitions/serviceQuery",
          "title": "Serialized search query"
        },
        "Range": {
          "$ref": "#/definitions/jobsSelectorRange",
          "title": "Handle ranges"
        },
        "Timeout": {
          "title": "Optional Timeout for this selector",
          "type": "string"
        },
        "Type": {
          "$ref": "#/definitions/jobsIdmSelectorType",
          "title": "Type of objects to look for"
        }
      },
      "title": "Generic container for select/filter idm objects",
      "type": "object"
    },
    "jobsIdmSelectorType": {
      "default": "User",
      "enum": [
        "User",
        "Role",
        "Workspace",
        "Acl"
      ],
      "title": "Possible values for IdmSelector.Type",
      "type": "string"
    },
    "jobsJob": {
      "properties": {
        "Actions": {
          "items": {
            "$ref": "#/definitions/jobsAction"
          },
          "title": "Chain of actions to perform",
          "type": "array"
        },
        "AutoClean": {
          "title": "Remove job automatically once it is finished (success only)",
          "type": "boolean"
        },
        "AutoRestart": {
          "title": "Start task as soon as server is started",
          "type": "boolean"
        },
        "AutoStart": {
          "title": "Start task as soon as job is inserted",
          "type": "boolean"
        },
        "ChatEventFilter": {
          "$ref": "#/definitions/jobsChatEventFilter",
          "title": "Filter values from ChatEvent"
        },
        "ContextMetaFilter": {
          "$ref": "#/definitions/jobsContextMetaFilter",
          "title": "Event Context Filter"
        },
        "CreatedAt": {
          "format": "int32",
          "title": "Timestamp for creation time",
          "type": "integer"
        },
        "Custom": {
          "title": "Job created by application or by administrator",
          "type": "boolean"
        },
        "DataSourceFilter": {
          "$ref": "#/definitions/jobsDataSourceSelector",
          "title": "DataSource objects filter"
        },
        "EventNames": {
          "items": {
            "type": "string"
          },
          "title": "How the job will be triggered.\nOne of these must be set (not exclusive)\nListen to a given set of events",
          "type": "array"
        },
        "Hooks": {
          "items": {
            "$ref": "#/definitions/jobsJobHook"
          },
          "title": "Expose this job through one or more-userspace APIs",
          "type": "array"
        },
        "ID": {
          "title": "Unique ID for this Job",
          "type": "string"
        },
        "IdmFilter": {
          "$ref": "#/definitions/jobsIdmSelector",
          "title": "Idm objects filter"
        },
        "Inactive": {
          "title": "Admin can temporarily disable this job",
          "type": "boolean"
        },
        "Label": {
          "title": "Human-readable Label",
          "type": "string"
        },
        "Languages": {
          "items": {
            "type": "string"
          },
          "title": "Optional list of languages detected in the context at launch time",
          "type": "array"
        },
        "MaxConcurrency": {
          "format": "int32",
          "title": "Task properties",
          "type": "integer"
        },
        "MergeAction": {
          "$ref": "#/definitions/jobsAction",
          "title": "Collect chain of actions into a merged output"
        },
        "Metadata": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional user-defined metadata, can be used for icon, documentation, pre-requisites, etc.",
          "type": "object"
        },
        "ModifiedAt": {
          "format": "int32",
          "title": "Timestamp for modification time",
          "type": "integer"
        },
        "NodeEventFilter": {
          "$ref": "#/definitions/jobsNodesSelector",
          "title": "Filter out specific events"
        },
        "Owner": {
          "title": "Who created this Job",
          "type": "string"
        },
        "Parameters": {
          "items": {
            "$ref": "#/definitions/jobsJobParameter"
          },
          "title": "Job-level parameters that can be passed to underlying actions",
          "type": "array"
        },
        "ResourcesDependencies": {
          "items": {
            "$ref": "#/definitions/protobufAny"
          },
          "title": "Additional dependencies that may be required when running the job",
          "type": "array"
        },
        "Schedule": {
          "$ref": "#/definitions/jobsSchedule",
          "title": "Schedule a periodic repetition"
        },
        "Tasks": {
          "items": {
            "$ref": "#/definitions/jobsTask"
          },
          "title": "Filled with currently running tasks",
          "type": "array"
        },
        "TasksSilentUpdate": {
          "title": "Do not send notification on task update",
          "type": "boolean"
        },
        "Timeout": {
          "title": "Optional Timeout any running job",
          "type": "string"
        },
        "UserEventFilter": {
          "$ref": "#/definitions/jobsUsersSelector",
          "title": "Deprecated in favor of more generic IdmSelector"
        },
        "VersionMeta": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "Additional Versioning Metadata",
          "type": "object"
        }
      },
      "type": "object"
    },
    "jobsJobHook": {
      "properties": {
        "AllowOverridePresets": {
          "title": "Allow trigger parameters to override default presets",
          "type": "boolean"
        },
        "ApiSlug": {
          "title": "Custom ApiSlug, otherwise use the job UUID",
          "type": "string"
        },
        "Metadata": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "Additional arbitrary metadata attached to this hook",
          "type": "object"
        },
        "Policies": {
          "items": {
            "$ref": "#/definitions/serviceResourcePolicy"
          },
          "title": "Set permissions for accessing this endpoint",
          "type": "array"
        },
        "PresetParameters": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "Preset parameters values when calling this endpoint. May be overriden by a map[string]string in the body",
          "type": "object"
        }
      },
      "title": "Dynamically expose a job trigger via API",
      "type": "object"
    },
    "jobsJobParameter": {
      "properties": {
        "Description": {
          "title": "Additional description",
          "type": "string"
        },
        "JsonChoices": {
          "title": "Additional data used by GUI elements",
          "type": "string"
        },
        "Mandatory": {
          "title": "If mandatory, job cannot start without a value",
          "type": "boolean"
        },
        "Name": {
          "title": "Parameter name",
          "type": "string"
        },
        "Type": {
          "title": "Parameter type used in GUI forms",
          "type": "string"
        },
        "Value": {
          "title": "Value saved for this parameter",
          "type": "string"
        }
      },
      "type": "object"
    },
    "jobsListJobsRequest": {
      "properties": {
        "EventsOnly": {
          "title": "Filter with only event-based jobs",
          "type": "boolean"
        },
        "JobIDs": {
          "items": {
            "type": "string"
          },
          "title": "Load jobs by their ID",
          "type": "array"
        },
        "LoadTasks": {
          "$ref": "#/definitions/jobsTaskStatus",
          "title": "Load tasks that correspond to the given TaskStatus"
        },
        "Owner": {
          "title": "Restrict to a specific owner (current user by default)",
          "type": "string"
        },
        "TasksLimit": {
          "format": "int32",
          "title": "Lmit the number of results",
          "type": "integer"
        },
        "TasksOffset": {
          "format": "int32",
          "title": "Start listing at a given position",
          "type": "integer"
        },
        "TimersOnly": {
          "title": "Filter with only timer-based jobs",
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "jobsNodesSelector": {
      "properties": {
        "All": {
          "title": "Select all files - ignore any other condition",
          "type": "boolean"
        },
        "ClearInput": {
          "title": "Clear previous selection",
          "type": "boolean"
        },
        "Collect": {
          "title": "Whether to trigger one action per node or one action\nwith all nodes as selection",
          "type": "boolean"
        },
        "Description": {
          "title": "Selector additional description",
          "type": "string"
        },
        "FanOutInput": {
          "title": "Ignore query and just fan out input.Nodes",
          "type": "boolean"
        },
        "Label": {
          "title": "Selector custom label",
          "type": "string"
        },
        "Pathes": {
          "items": {
            "type": "string"
          },
          "title": "Preset list of node pathes",
          "type": "array"
        },
        "Query": {
          "$ref": "#/definitions/serviceQuery",
          "title": "Query to apply to select users (or filter a given node passed by event)"
        },
        "Range": {
          "$ref": "#/definitions/jobsSelectorRange",
          "title": "Handle ranges"
        },
        "Timeout": {
          "title": "Optional Timeout for this selector",
          "type": "string"
        }
      },
      "title": "/////////////////\nJOB  SERVICE  //\n/////////////////",
      "type": "object"
    },
    "jobsSchedule": {
      "properties": {
        "Iso8601MinDelta": {
          "title": "Minimum time between two runs",
          "type": "string"
        },
        "Iso8601Schedule": {
          "description": "ISO 8601 Description of the scheduling for instance \"R2/2015-06-04T19:25:16.828696-07:00/PT4S\"\nwhere first part is the number of repetitions (if 0, infinite repetition), \nsecond part the starting date and last part, the duration between 2 occurrences.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "jobsSelectorRange": {
      "properties": {
        "Limit": {
          "title": "Limit number of results - use string to allow templating",
          "type": "string"
        },
        "Offset": {
          "title": "Start offset - use string to allow templating",
          "type": "string"
        },
        "OrderBy": {
          "title": "OrderBy a given field of the object",
          "type": "string"
        },
        "OrderDir": {
          "title": "Order direction (asc/desc)",
          "type": "string"
        }
      },
      "type": "object"
    },
    "jobsTask": {
      "properties": {
        "ActionsLogs": {
          "items": {
            "$ref": "#/definitions/jobsActionLog"
          },
          "title": "Logs of all the actions performed",
          "type": "array"
        },
        "CanPause": {
          "title": "Can be paused/resumed",
          "type": "boolean"
        },
        "CanStop": {
          "title": "Can be interrupted",
          "type": "boolean"
        },
        "EndTime": {
          "format": "int32",
          "type": "integer"
        },
        "HasProgress": {
          "title": "Tasks publish a progress",
          "type": "boolean"
        },
        "ID": {
          "type": "string"
        },
        "JobID": {
          "type": "string"
        },
        "Progress": {
          "format": "float",
          "title": "Float value of the progress between 0 and 1",
          "type": "number"
        },
        "StartTime": {
          "format": "int32",
          "type": "integer"
        },
        "Status": {
          "$ref": "#/definitions/jobsTaskStatus"
        },
        "StatusMessage": {
          "type": "string"
        },
        "TriggerOwner": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "jobsTaskStatus": {
      "default": "Unknown",
      "enum": [
        "Unknown",
        "Idle",
        "Running",
        "Finished",
        "Interrupted",
        "Paused",
        "Any",
        "Error",
        "Queued"
      ],
      "title": "/////////////////\nTASK SERVICE  //\n/////////////////",
      "type": "string"
    },
    "jobsTriggerFilter": {
      "properties": {
        "Description": {
          "title": "Filter additional description",
          "type": "string"
        },
        "Label": {
          "title": "Filter custom label",
          "type": "string"
        },
        "Query": {
          "$ref": "#/definitions/serviceQuery",
          "title": "Filter type"
        }
      },
      "title": "Filter for events, can be applied on action branches",
      "type": "object"
    },
    "jobsUsersSelector": {
      "properties": {
        "All": {
          "title": "Select all users",
          "type": "boolean"
        },
        "ClearInput": {
          "title": "Clear previous selection",
          "type": "boolean"
        },
        "Collect": {
          "title": "Wether to trigger one action per user or one action\nwith all user as a selection",
          "type": "boolean"
        },
        "Description": {
          "title": "Selector additional description",
          "type": "string"
        },
        "Label": {
          "title": "Selector custom label",
          "type": "string"
        },
        "Query": {
          "$ref": "#/definitions/serviceQuery",
          "title": "Filter users using this query"
        },
        "Timeout": {
          "title": "Optional Timeout for this selector",
          "type": "string"
        },
        "Users": {
          "items": {
            "$ref": "#/definitions/idmUser"
          },
          "title": "Preset set of Users",
          "type": "array"
        }
      },
      "title": "Select or filter users - should be replaced by more generic IdmSelector",
      "type": "object"
    },
    "logListLogRequest": {
      "description": "ListLogRequest launches a parameterised query in the log repository and streams the results.",
      "properties": {
        "Format": {
          "$ref": "#/definitions/ListLogRequestLogFormat"
        },
        "Page": {
          "format": "int32",
          "title": "Start at page",
          "type": "integer"
        },
        "Query": {
          "title": "Bleve-type Query stsring",
          "type": "string"
        },
        "Size": {
          "format": "int32",
          "title": "Number of results",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "logLogMessage": {
      "description": "LogMessage is the format used to transmit log messages to clients via the REST API.",
      "properties": {
        "GroupPath": {
          "type": "string"
        },
        "HttpProtocol": {
          "type": "string"
        },
        "JsonZaps": {
          "title": "Other Unkown Fields",
          "type": "string"
        },
        "Level": {
          "type": "string"
        },
        "Logger": {
          "type": "string"
        },
        "Msg": {
          "type": "string"
        },
        "MsgId": {
          "title": "Pydio specific",
          "type": "string"
        },
        "NodePath": {
          "type": "string"
        },
        "NodeUuid": {
          "title": "Tree Info",
          "type": "string"
        },
        "OperationLabel": {
          "type": "string"
        },
        "OperationUuid": {
          "title": "High Level Operation Info",
          "type": "string"
        },
        "Profile": {
          "type": "string"
        },
        "RemoteAddress": {
          "title": "Client info",
          "type": "string"
        },
        "RoleUuids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "SchedulerJobUuid": {
          "type": "string"
        },
        "SchedulerTaskActionPath": {
          "type": "string"
        },
        "SchedulerTaskUuid": {
          "type": "string"
        },
        "SpanParentUuid": {
          "type": "string"
        },
        "SpanRootUuid": {
          "type": "string"
        },
        "SpanUuid": {
          "title": "Span Info",
          "type": "string"
        },
        "TransferSize": {
          "format": "int64",
          "type": "string"
        },
        "Ts": {
          "format": "int32",
          "title": "Generic zap fields",
          "type": "integer"
        },
        "UserAgent": {
          "type": "string"
        },
        "UserName": {
          "title": "User Info",
          "type": "string"
        },
        "UserUuid": {
          "type": "string"
        },
        "WsScope": {
          "type": "string"
        },
        "WsUuid": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "mailerMail": {
      "properties": {
        "Attachments": {
          "items": {
            "type": "string"
          },
          "title": "List of attachments",
          "type": "array"
        },
        "Cc": {
          "items": {
            "$ref": "#/definitions/mailerUser"
          },
          "title": "List of target users to put in CC",
          "type": "array"
        },
        "ContentHtml": {
          "title": "HTML content used for the body",
          "type": "string"
        },
        "ContentMarkdown": {
          "title": "Markdown content used for the body",
          "type": "string"
        },
        "ContentPlain": {
          "title": "Plain-text content used for the body, if not set will be generated from the ContentHtml",
          "type": "string"
        },
        "DateSent": {
          "format": "int64",
          "title": "Date of sending",
          "type": "string"
        },
        "From": {
          "$ref": "#/definitions/mailerUser",
          "title": "User object used to compute the From header"
        },
        "Retries": {
          "format": "int32",
          "title": "Number of retries after failed attempts (used internally)",
          "type": "integer"
        },
        "Sender": {
          "$ref": "#/definitions/mailerUser",
          "title": "User object used to compute the Sender header"
        },
        "Subject": {
          "title": "String used as subject for the email",
          "type": "string"
        },
        "TemplateData": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "Key/values to pass to the template",
          "type": "object"
        },
        "TemplateId": {
          "title": "Mail Template Id refers to predefined templates",
          "type": "string"
        },
        "ThreadIndex": {
          "title": "Not used, could be used to create conversations",
          "type": "string"
        },
        "ThreadUuid": {
          "title": "Not used, could be used to create conversations",
          "type": "string"
        },
        "To": {
          "items": {
            "$ref": "#/definitions/mailerUser"
          },
          "title": "List of target users to send the mail to",
          "type": "array"
        },
        "sendErrors": {
          "items": {
            "type": "string"
          },
          "title": "Errors stacked on failed attempts",
          "type": "array"
        }
      },
      "type": "object"
    },
    "mailerSendMailResponse": {
      "properties": {
        "Success": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "mailerUser": {
      "properties": {
        "Address": {
          "type": "string"
        },
        "Language": {
          "type": "string"
        },
        "Name": {
          "type": "string"
        },
        "Uuid": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "objectDataSource": {
      "properties": {
        "ApiKey": {
          "title": "Corresponding objects service api key",
          "type": "string"
        },
        "ApiSecret": {
          "title": "Corresponding objects service api secret",
          "type": "string"
        },
        "CreationDate": {
          "format": "int32",
          "title": "Data Source creation date",
          "type": "integer"
        },
        "Disabled": {
          "title": "Whether this data source is disabled or running",
          "type": "boolean"
        },
        "EncryptionKey": {
          "title": "Encryption key used for encrypting data",
          "type": "string"
        },
        "EncryptionMode": {
          "$ref": "#/definitions/objectEncryptionMode",
          "title": "Type of encryption applied before sending data to storage"
        },
        "FlatStorage": {
          "title": "Store data in flat format (object-storage like)",
          "type": "boolean"
        },
        "LastSynchronizationDate": {
          "format": "int32",
          "title": "Data Source last synchronization date",
          "type": "integer"
        },
        "Name": {
          "title": "Name of the data source (max length 34)",
          "type": "string"
        },
        "ObjectsBaseFolder": {
          "title": "Corresponding objects service base folder inside the bucket",
          "type": "string"
        },
        "ObjectsBucket": {
          "title": "Corresponding objects service bucket",
          "type": "string"
        },
        "ObjectsHost": {
          "title": "Corresponding objects service host",
          "type": "string"
        },
        "ObjectsPort": {
          "format": "int32",
          "title": "Corresponding objects service port",
          "type": "integer"
        },
        "ObjectsSecure": {
          "title": "Corresponding objects service connection type",
          "type": "boolean"
        },
        "ObjectsServiceName": {
          "title": "Corresponding objects service name (underlying s3 service)",
          "type": "string"
        },
        "PeerAddress": {
          "title": "Peer address of the data source",
          "type": "string"
        },
        "SkipSyncOnRestart": {
          "title": "Do not trigger resync at start",
          "type": "boolean"
        },
        "StorageConfiguration": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "List of key values describing storage configuration",
          "type": "object"
        },
        "StorageType": {
          "$ref": "#/definitions/objectStorageType",
          "title": "Type of underlying storage (LOCAL, S3, AZURE, GCS)"
        },
        "VersioningPolicyName": {
          "title": "Versioning policy describes how files are kept in the versioning queue",
          "type": "string"
        },
        "Watch": {
          "title": "Not implemented, whether to watch for underlying changes on the FS",
          "type": "boolean"
        }
      },
      "title": "DataSource Object description",
      "type": "object"
    },
    "objectEncryptionMode": {
      "default": "CLEAR",
      "enum": [
        "CLEAR",
        "MASTER",
        "USER",
        "USER_PWD"
      ],
      "title": "Type of Encryption",
      "type": "string"
    },
    "objectStorageType": {
      "default": "LOCAL",
      "enum": [
        "LOCAL",
        "S3",
        "SMB",
        "CELLS",
        "AZURE",
        "GCS",
        "B2",
        "MANTA",
        "SIA"
      ],
      "title": "Type of Gateway",
      "type": "string"
    },
    "protobufAny": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n\nExample 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\nExample 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "registryActionType": {
      "default": "ANY",
      "enum": [
        "ANY",
        "FULL_DIFF",
        "FULL_LIST",
        "CREATE",
        "UPDATE",
        "DELETE"
      ],
      "type": "string"
    },
    "registryDao": {
      "properties": {
        "driver": {
          "type": "string"
        },
        "dsn": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "registryEdge": {
      "properties": {
        "vertices": {
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "registryGeneric": {
      "properties": {
        "type": {
          "$ref": "#/definitions/registryItemType"
        }
      },
      "type": "object"
    },
    "registryItem": {
      "properties": {
        "adjacents": {
          "items": {
            "$ref": "#/definitions/registryItem"
          },
          "type": "array"
        },
        "dao": {
          "$ref": "#/definitions/registryDao"
        },
        "edge": {
          "$ref": "#/definitions/registryEdge"
        },
        "generic": {
          "$ref": "#/definitions/registryGeneric"
        },
        "id": {
          "type": "string"
        },
        "metadata": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "name": {
          "type": "string"
        },
        "node": {
          "$ref": "#/definitions/registryNode"
        },
        "server": {
          "$ref": "#/definitions/registryServer"
        },
        "service": {
          "$ref": "#/definitions/registryService"
        }
      },
      "type": "object"
    },
    "registryItemType": {
      "default": "ALL",
      "enum": [
        "ALL",
        "EDGE",
        "NODE",
        "SERVICE",
        "SERVER",
        "DAO",
        "GENERIC",
        "ADDRESS",
        "TAG",
        "PROCESS",
        "ENDPOINT",
        "STATS"
      ],
      "type": "string"
    },
    "registryListRequest": {
      "properties": {
        "adjacentsOptions": {
          "$ref": "#/definitions/registryOptions"
        },
        "options": {
          "$ref": "#/definitions/registryOptions"
        }
      },
      "type": "object"
    },
    "registryListResponse": {
      "properties": {
        "items": {
          "items": {
            "$ref": "#/definitions/registryItem"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "registryNode": {
      "properties": {
        "advertiseIp": {
          "type": "string"
        },
        "hostname": {
          "type": "string"
        },
        "ips": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "machine": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "registryOptions": {
      "properties": {
        "actions": {
          "items": {
            "$ref": "#/definitions/registryActionType"
          },
          "type": "array"
        },
        "ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "metaName": {
          "type": "string"
        },
        "metaValue": {
          "type": "string"
        },
        "names": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "ttl": {
          "format": "int64",
          "type": "string"
        },
        "types": {
          "items": {
            "$ref": "#/definitions/registryItemType"
          },
          "type": "array"
        }
      },
      "title": "Options are registry options",
      "type": "object"
    },
    "registryServer": {
      "properties": {
        "protocol": {
          "type": "string"
        }
      },
      "title": "Server represents the node the service is on",
      "type": "object"
    },
    "registryService": {
      "properties": {
        "options": {
          "$ref": "#/definitions/registryOptions"
        },
        "tags": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "version": {
          "type": "string"
        }
      },
      "title": "Service represents a go-micro service",
      "type": "object"
    },
    "restACLCollection": {
      "properties": {
        "ACLs": {
          "items": {
            "$ref": "#/definitions/idmACL"
          },
          "title": "List of ACLs",
          "type": "array"
        },
        "Total": {
          "format": "int32",
          "title": "Total number of results",
          "type": "integer"
        }
      },
      "title": "Response for search request",
      "type": "object"
    },
    "restActionDescription": {
      "properties": {
        "Category": {
          "title": "User-defined category to organize actions list",
          "type": "string"
        },
        "Description": {
          "title": "Long description and help text",
          "type": "string"
        },
        "FormModule": {
          "title": "JS module name to be used instead of loading standard form",
          "type": "string"
        },
        "FormModuleProps": {
          "title": "JSON props used to init the FormModule (optional)",
          "type": "string"
        },
        "HasForm": {
          "title": "Whether this action has a form or not",
          "type": "boolean"
        },
        "Icon": {
          "title": "Mdi reference name for displaying icon",
          "type": "string"
        },
        "InputDescription": {
          "title": "Additional description for expected inputs",
          "type": "string"
        },
        "IsInternal": {
          "description": "If action is declared internal, it is hidden to avoid polluting the list.",
          "type": "boolean"
        },
        "Label": {
          "title": "Human-readable label",
          "type": "string"
        },
        "Name": {
          "title": "Unique name of the action",
          "type": "string"
        },
        "OutputDescription": {
          "title": "Additional description describing the action output",
          "type": "string"
        },
        "SummaryTemplate": {
          "title": "Template for building a short summary of the action configuration",
          "type": "string"
        },
        "Tint": {
          "title": "User-defined hexa or rgb color",
          "type": "string"
        }
      },
      "type": "object"
    },
    "restBackgroundJobResult": {
      "properties": {
        "Label": {
          "type": "string"
        },
        "NodeUuid": {
          "type": "string"
        },
        "Uuid": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "restBulkMetaResponse": {
      "properties": {
        "Nodes": {
          "items": {
            "$ref": "#/definitions/treeNode"
          },
          "type": "array"
        },
        "Pagination": {
          "$ref": "#/definitions/restPagination"
        }
      },
      "type": "object"
    },
    "restCell": {
      "properties": {
        "ACLs": {
          "additionalProperties": {
            "$ref": "#/definitions/restCellAcl"
          },
          "title": "Access control for this Cell",
          "type": "object"
        },
        "AccessEnd": {
          "format": "int64",
          "title": "Timestamp after which the share is disabled",
          "type": "string"
        },
        "Description": {
          "title": "Long description of the Cell (max 1000 chars)",
          "type": "string"
        },
        "Label": {
          "title": "Label of the Cell (max 500 chars)",
          "type": "string"
        },
        "Policies": {
          "items": {
            "$ref": "#/definitions/serviceResourcePolicy"
          },
          "title": "Associated access policies",
          "type": "array"
        },
        "PoliciesContextEditable": {
          "title": "Whether these policies are currently editable",
          "type": "boolean"
        },
        "RootNodes": {
          "items": {
            "$ref": "#/definitions/treeNode"
          },
          "title": "Nodes attached as roots to this Cell",
          "type": "array"
        },
        "Uuid": {
          "title": "Unique Id of the Cell",
          "type": "string"
        }
      },
      "title": "Model for representing a Cell",
      "type": "object"
    },
    "restCellAcl": {
      "properties": {
        "Actions": {
          "items": {
            "$ref": "#/definitions/idmACLAction"
          },
          "title": "List of Acl Actions and their effect",
          "type": "array"
        },
        "Group": {
          "$ref": "#/definitions/idmUser",
          "title": "Associated Group"
        },
        "IsUserRole": {
          "title": "Flag for detecting if it's a user role or not",
          "type": "boolean"
        },
        "Role": {
          "$ref": "#/definitions/idmRole",
          "title": "Associated Role"
        },
        "RoleId": {
          "title": "Associated Role ID",
          "type": "string"
        },
        "User": {
          "$ref": "#/definitions/idmUser",
          "title": "Associated User"
        }
      },
      "title": "Group collected acls by subjects",
      "type": "object"
    },
    "restConfiguration": {
      "properties": {
        "Data": {
          "title": "JSON-encoded data to store",
          "type": "string"
        },
        "FullPath": {
          "title": "Full slash-separated path to the config key",
          "type": "string"
        }
      },
      "title": "Configuration message. Data is an Json representation of any value",
      "type": "object"
    },
    "restControlServiceRequest": {
      "properties": {
        "Command": {
          "$ref": "#/definitions/ctlServiceCommand",
          "title": "Command to apply (START or STOP)"
        },
        "NodeName": {
          "title": "Name of the node",
          "type": "string"
        },
        "ServiceName": {
          "title": "Name of the service to stop",
          "type": "string"
        }
      },
      "type": "object"
    },
    "restCreateNodesRequest": {
      "properties": {
        "Nodes": {
          "items": {
            "$ref": "#/definitions/treeNode"
          },
          "title": "A list of nodes that must be created",
          "type": "array"
        },
        "Recursive": {
          "title": "If nodes are created inside non-existing folders, whether the parents should be created automatically or not",
          "type": "boolean"
        },
        "TemplateUUID": {
          "title": "Use a template to create this node",
          "type": "string"
        }
      },
      "type": "object"
    },
    "restCreatePeerFolderResponse": {
      "properties": {
        "Node": {
          "$ref": "#/definitions/treeNode"
        },
        "Success": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "restCreateSelectionRequest": {
      "properties": {
        "Nodes": {
          "items": {
            "$ref": "#/definitions/treeNode"
          },
          "title": "Create a temporary selection out of this list of nodes",
          "type": "array"
        },
        "Persist": {
          "title": "Whether to save the selection or just get a temporary Uuid in return",
          "type": "boolean"
        },
        "TargetAction": {
          "title": "Associated target action for this selection",
          "type": "string"
        }
      },
      "type": "object"
    },
    "restCreateSelectionResponse": {
      "properties": {
        "Nodes": {
          "items": {
            "$ref": "#/definitions/treeNode"
          },
          "type": "array"
        },
        "SelectionUUID": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "restCreateStorageBucketResponse": {
      "properties": {
        "BucketName": {
          "type": "string"
        },
        "Success": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "restDataSourceCollection": {
      "properties": {
        "DataSources": {
          "items": {
            "$ref": "#/definitions/objectDataSource"
          },
          "type": "array"
        },
        "Total": {
          "format": "int32",
          "type": "integer"
        }
      },
      "title": "Collection of datasources",
      "type": "object"
    },
    "restDeleteCellResponse": {
      "properties": {
        "Success": {
          "title": "Delete result",
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "restDeleteDataSourceResponse": {
      "properties": {
        "Success": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "restDeleteNodesRequest": {
      "properties": {
        "Nodes": {
          "items": {
            "$ref": "#/definitions/treeNode"
          },
          "title": "List of nodes to delete",
          "type": "array"
        },
        "Recursive": {
          "title": "Whether to delete all the children if node is a folder",
          "type": "boolean"
        },
        "RemovePermanently": {
          "title": "Force permanent deletion even if a recycle bin is defined",
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "restDeleteNodesResponse": {
      "properties": {
        "DeleteJobs": {
          "items": {
            "$ref": "#/definitions/restBackgroundJobResult"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "restDeleteResponse": {
      "properties": {
        "NumRows": {
          "format": "int64",
          "title": "Number of records deleted during operation",
          "type": "string"
        },
        "Success": {
          "title": "If delete was successfull",
          "type": "boolean"
        }
      },
      "title": "Generic Message",
      "type": "object"
    },
    "restDeleteShareLinkResponse": {
      "properties": {
        "Success": {
          "title": "If delete sucess or failed",
          "type": "boolean"
        }
      },
      "title": "Response for deleting a share link",
      "type": "object"
    },
    "restDeleteUserMetaTagsResponse": {
      "properties": {
        "Success": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "restDiscoveryResponse": {
      "properties": {
        "BuildRevision": {
          "title": "Revision of the current binary build, empty if user is not authenticated",
          "type": "string"
        },
        "BuildStamp": {
          "format": "int32",
          "title": "Build stamp of the binary build, empty if user is not authenticated",
          "type": "integer"
        },
        "Endpoints": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "List of endpoints and their corresponding URL access. Special case for grpc that just send back its port",
          "type": "object"
        },
        "PackageLabel": {
          "title": "Current Package Label, empty if user is not authenticated",
          "type": "string"
        },
        "PackageType": {
          "title": "Current Package Type, empty if user is not authenticated",
          "type": "string"
        },
        "Version": {
          "title": "Current Package Version, empty if user is not authenticated",
          "type": "string"
        }
      },
      "type": "object"
    },
    "restDocumentAccessTokenRequest": {
      "properties": {
        "ClientID": {
          "type": "string"
        },
        "Path": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "restDocumentAccessTokenResponse": {
      "properties": {
        "AccessToken": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "restError": {
      "properties": {
        "Code": {
          "title": "Unique ID of the error",
          "type": "string"
        },
        "Detail": {
          "title": "Human-readable, longer description",
          "type": "string"
        },
        "Meta": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "Additional Metadata",
          "type": "object"
        },
        "Source": {
          "title": "Cells service name or other quickly useful info",
          "type": "string"
        },
        "Title": {
          "title": "Human-readable, short label",
          "type": "string"
        }
      },
      "title": "Generic error message",
      "type": "object"
    },
    "restFrontBinaryResponse": {
      "properties": {
        "Data": {
          "format": "byte",
          "type": "string"
        }
      },
      "title": "Not used, endpoint returns octet-stream",
      "type": "object"
    },
    "restFrontBootConfResponse": {
      "properties": {
        "JsonData": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "restFrontEnrollAuthRequest": {
      "properties": {
        "EnrollInfo": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "EnrollType": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "restFrontEnrollAuthResponse": {
      "properties": {
        "Info": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "Any parameters can be returned",
          "type": "object"
        }
      },
      "type": "object"
    },
    "restFrontMessagesResponse": {
      "properties": {
        "Messages": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "restFrontPluginsResponse": {
      "properties": {
        "Data": {
          "format": "byte",
          "type": "string"
        }
      },
      "type": "object"
    },
    "restFrontSessionRequest": {
      "properties": {
        "AuthInfo": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "Data sent back by specific auth steps",
          "type": "object"
        },
        "ClientTime": {
          "format": "int32",
          "title": "Time reference for computing jwt expiry",
          "type": "integer"
        },
        "Logout": {
          "title": "Kill session now",
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "restFrontSessionResponse": {
      "properties": {
        "Error": {
          "type": "string"
        },
        "ExpireTime": {
          "format": "int32",
          "type": "integer"
        },
        "JWT": {
          "title": "Legacy information (now in token)",
          "type": "string"
        },
        "RedirectTo": {
          "type": "string"
        },
        "Token": {
          "$ref": "#/definitions/authToken"
        },
        "Trigger": {
          "title": "Trigger a specific Auth step",
          "type": "string"
        },
        "TriggerInfo": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "Additional data for the trigger",
          "type": "object"
        }
      },
      "type": "object"
    },
    "restFrontStateResponse": {
      "properties": {
        "Data": {
          "format": "byte",
          "type": "string"
        }
      },
      "type": "object"
    },
    "restGetBulkMetaRequest": {
      "properties": {
        "AllMetaProviders": {
          "title": "Whether to query all services for the metadata they can contribute to enrich the node",
          "type": "boolean"
        },
        "Filters": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "Children Filtering",
          "type": "object"
        },
        "Limit": {
          "format": "int32",
          "title": "Limit number of results",
          "type": "integer"
        },
        "NodePaths": {
          "items": {
            "type": "string"
          },
          "title": "List of node paths to query (use paths ending with /* to load the children)",
          "type": "array"
        },
        "Offset": {
          "format": "int32",
          "title": "Start listing at a given position",
          "type": "integer"
        },
        "SortDirDesc": {
          "title": "Sort descending (otherwise ascending)",
          "type": "boolean"
        },
        "SortField": {
          "title": "Remote Sort on specific field",
          "type": "string"
        },
        "Versions": {
          "title": "Load Versions of the given node",
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "restHeadNodeResponse": {
      "properties": {
        "Node": {
          "$ref": "#/definitions/treeNode"
        }
      },
      "type": "object"
    },
    "restListPeersAddressesResponse": {
      "properties": {
        "PeerAddresses": {
          "items": {
            "type": "string"
          },
          "title": "List of peer addresses",
          "type": "array"
        }
      },
      "type": "object"
    },
    "restListProcessesRequest": {
      "properties": {
        "PeerId": {
          "title": "Id of the peer node",
          "type": "string"
        },
        "ServiceName": {
          "title": "Look for a service name",
          "type": "string"
        }
      },
      "type": "object"
    },
    "restListProcessesResponse": {
      "properties": {
        "Processes": {
          "items": {
            "$ref": "#/definitions/restProcess"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "restListSharedResourcesRequest": {
      "properties": {
        "Limit": {
          "format": "int32",
          "title": "Limit number of results",
          "type": "integer"
        },
        "Offset": {
          "format": "int32",
          "title": "Start listing at a given offset",
          "type": "integer"
        },
        "OwnedBySubject": {
          "title": "If true, will also check filter the output to shares actually owned by subject",
          "type": "boolean"
        },
        "ShareType": {
          "$ref": "#/definitions/ListSharedResourcesRequestListShareType",
          "title": "Filter output to a given type"
        },
        "Subject": {
          "title": "Will restrict the list to the shares readable by a specific subject.\nIn user-context, current user is used by default. In admin-context, this can\nbe any resource policy subject",
          "type": "string"
        }
      },
      "type": "object"
    },
    "restListSharedResourcesResponse": {
      "properties": {
        "Limit": {
          "format": "int32",
          "type": "integer"
        },
        "Offset": {
          "format": "int32",
          "title": "Cursor informations",
          "type": "integer"
        },
        "Resources": {
          "items": {
            "$ref": "#/definitions/ListSharedResourcesResponseSharedResource"
          },
          "title": "Actual results",
          "type": "array"
        },
        "Total": {
          "format": "int32",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "restListSitesResponse": {
      "properties": {
        "Sites": {
          "items": {
            "$ref": "#/definitions/installProxyConfig"
          },
          "type": "array"
        }
      },
      "title": "Response with declared sites",
      "type": "object"
    },
    "restListStorageBucketsRequest": {
      "properties": {
        "BucketsRegexp": {
          "type": "string"
        },
        "DataSource": {
          "$ref": "#/definitions/objectDataSource"
        }
      },
      "type": "object"
    },
    "restListTemplatesResponse": {
      "properties": {
        "Templates": {
          "items": {
            "$ref": "#/definitions/restTemplate"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "restListUserMetaTagsResponse": {
      "properties": {
        "Tags": {
          "items": {
            "type": "string"
          },
          "title": "List of existing tags values",
          "type": "array"
        }
      },
      "type": "object"
    },
    "restLogMessageCollection": {
      "properties": {
        "Logs": {
          "items": {
            "$ref": "#/definitions/logLogMessage"
          },
          "type": "array"
        }
      },
      "title": "Collection of serialized log messages",
      "type": "object"
    },
    "restMetadata": {
      "properties": {
        "JsonMeta": {
          "type": "string"
        },
        "Namespace": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "restNodesCollection": {
      "properties": {
        "Children": {
          "items": {
            "$ref": "#/definitions/treeNode"
          },
          "type": "array"
        },
        "Parent": {
          "$ref": "#/definitions/treeNode"
        }
      },
      "type": "object"
    },
    "restOpenApiResponse": {
      "properties": {
        "Data": {
          "format": "byte",
          "type": "string"
        }
      },
      "type": "object"
    },
    "restPagination": {
      "properties": {
        "CurrentOffset": {
          "format": "int32",
          "title": "Current Offset value",
          "type": "integer"
        },
        "CurrentPage": {
          "format": "int32",
          "title": "Current number of Page",
          "type": "integer"
        },
        "Limit": {
          "format": "int32",
          "title": "Current Limit parameter, either passed by request or default value",
          "type": "integer"
        },
        "NextOffset": {
          "format": "int32",
          "title": "Offset value for next page if there is one",
          "type": "integer"
        },
        "PrevOffset": {
          "format": "int32",
          "title": "Offset value for previous page, if there is one",
          "type": "integer"
        },
        "Total": {
          "format": "int32",
          "title": "Total number of records",
          "type": "integer"
        },
        "TotalPages": {
          "format": "int32",
          "title": "Number of detected pages",
          "type": "integer"
        }
      },
      "title": "Generic container for responses sending pagination information",
      "type": "object"
    },
    "restProcess": {
      "properties": {
        "ID": {
          "title": "Process ID",
          "type": "string"
        },
        "MetricsPort": {
          "format": "int32",
          "title": "Port to access the metrics api",
          "type": "integer"
        },
        "ParentID": {
          "title": "Parent Process ID",
          "type": "string"
        },
        "PeerAddress": {
          "title": "Address of peer node",
          "type": "string"
        },
        "PeerId": {
          "title": "Id of peer node",
          "type": "string"
        },
        "Services": {
          "items": {
            "type": "string"
          },
          "title": "List of services running inside this process",
          "type": "array"
        },
        "StartTag": {
          "title": "Parameters used to start this process",
          "type": "string"
        }
      },
      "type": "object"
    },
    "restPutCellRequest": {
      "properties": {
        "CreateEmptyRoot": {
          "title": "Whether to create a dedicated folder for this cell at creation",
          "type": "boolean"
        },
        "Room": {
          "$ref": "#/definitions/restCell",
          "title": "Content of the Cell (Room is legacy name)"
        }
      },
      "title": "Request for creating a Cell",
      "type": "object"
    },
    "restPutShareLinkRequest": {
      "properties": {
        "CreatePassword": {
          "title": "Set if switching from no password to password",
          "type": "string"
        },
        "PasswordEnabled": {
          "title": "Whether it has Password enabled",
          "type": "boolean"
        },
        "ShareLink": {
          "$ref": "#/definitions/restShareLink",
          "title": "Content of the link to create"
        },
        "UpdateCustomHash": {
          "title": "Change the ShareLink Hash with a custom value",
          "type": "string"
        },
        "UpdatePassword": {
          "title": "Set if updating an existing password",
          "type": "string"
        }
      },
      "title": "Request for create/update a link",
      "type": "object"
    },
    "restPutUserMetaTagResponse": {
      "properties": {
        "Success": {
          "title": "Operation success",
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "restRecommendRequest": {
      "properties": {
        "Category": {
          "type": "string"
        },
        "Limit": {
          "format": "int32",
          "type": "integer"
        },
        "Neighbor": {
          "type": "string"
        },
        "Segment": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "restRecommendResponse": {
      "properties": {
        "Nodes": {
          "items": {
            "$ref": "#/definitions/treeNode"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "restRelationResponse": {
      "properties": {
        "BelongsToTeams": {
          "items": {
            "$ref": "#/definitions/idmRole"
          },
          "type": "array"
        },
        "SharedCells": {
          "items": {
            "$ref": "#/definitions/idmWorkspace"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "restResetPasswordRequest": {
      "properties": {
        "NewPassword": {
          "title": "New password to be stored for this user",
          "type": "string"
        },
        "ResetPasswordToken": {
          "title": "Token generated by the previous step of the reset password workflow",
          "type": "string"
        },
        "UserLogin": {
          "title": "User Login",
          "type": "string"
        }
      },
      "type": "object"
    },
    "restResetPasswordResponse": {
      "properties": {
        "Message": {
          "type": "string"
        },
        "Success": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "restResetPasswordTokenResponse": {
      "properties": {
        "Message": {
          "type": "string"
        },
        "Success": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "restResourcePolicyQuery": {
      "properties": {
        "Type": {
          "$ref": "#/definitions/ResourcePolicyQueryQueryType",
          "title": "The type can be CONTEXT, ANY, NODE or USER. This restricts the may filter out the result set based on their policies"
        },
        "UserId": {
          "title": "Limit to one given user ID",
          "type": "string"
        }
      },
      "title": "Generic Query for limiting results based on resource permissions",
      "type": "object"
    },
    "restRestoreNodesRequest": {
      "properties": {
        "Nodes": {
          "items": {
            "$ref": "#/definitions/treeNode"
          },
          "title": "Restore this node from the recycle bin to its original location",
          "type": "array"
        }
      },
      "type": "object"
    },
    "restRestoreNodesResponse": {
      "properties": {
        "RestoreJobs": {
          "items": {
            "$ref": "#/definitions/restBackgroundJobResult"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "restRevokeRequest": {
      "properties": {
        "TokenId": {
          "title": "Pass a specific Token ID to be revoked. If empty, request will use current JWT",
          "type": "string"
        }
      },
      "title": "Rest request for revocation. Token is not mandatory, if not set\nrequest will use current JWT token",
      "type": "object"
    },
    "restRevokeResponse": {
      "properties": {
        "Message": {
          "type": "string"
        },
        "Success": {
          "type": "boolean"
        }
      },
      "title": "Rest response",
      "type": "object"
    },
    "restRolesCollection": {
      "properties": {
        "Roles": {
          "items": {
            "$ref": "#/definitions/idmRole"
          },
          "title": "List of Roles",
          "type": "array"
        },
        "Total": {
          "format": "int32",
          "title": "Total in DB",
          "type": "integer"
        }
      },
      "title": "Roles Collection",
      "type": "object"
    },
    "restSchedulerActionFormResponse": {
      "properties": {
        "ActionName": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "restSchedulerActionsResponse": {
      "properties": {
        "Actions": {
          "additionalProperties": {
            "$ref": "#/definitions/restActionDescription"
          },
          "title": "List of all registered actions",
          "type": "object"
        }
      },
      "type": "object"
    },
    "restSearchACLRequest": {
      "properties": {
        "CountOnly": {
          "title": "Return counts only, no actual results",
          "type": "boolean"
        },
        "GroupBy": {
          "format": "int32",
          "title": "Group results",
          "type": "integer"
        },
        "Limit": {
          "format": "int64",
          "title": "Limit the number of results",
          "type": "string"
        },
        "Offset": {
          "format": "int64",
          "title": "Start listing at a given position",
          "type": "string"
        },
        "Operation": {
          "$ref": "#/definitions/serviceOperationType",
          "title": "Single queries will be combined using this operation AND or OR logic"
        },
        "Queries": {
          "items": {
            "$ref": "#/definitions/idmACLSingleQuery"
          },
          "title": "Atomic queries that will be combined using the OperationType (AND or OR)",
          "type": "array"
        }
      },
      "title": "Rest request for ACL's",
      "type": "object"
    },
    "restSearchResults": {
      "properties": {
        "Facets": {
          "items": {
            "$ref": "#/definitions/treeSearchFacet"
          },
          "type": "array"
        },
        "Results": {
          "items": {
            "$ref": "#/definitions/treeNode"
          },
          "type": "array"
        },
        "Total": {
          "format": "int32",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "restSearchRoleRequest": {
      "properties": {
        "CountOnly": {
          "title": "Return counts only, no actual results",
          "type": "boolean"
        },
        "GroupBy": {
          "format": "int32",
          "title": "Group results by",
          "type": "integer"
        },
        "Limit": {
          "format": "int64",
          "title": "Limit number of results",
          "type": "string"
        },
        "Offset": {
          "format": "int64",
          "title": "Start listing at a given position",
          "type": "string"
        },
        "Operation": {
          "$ref": "#/definitions/serviceOperationType",
          "title": "Combine Single Queries with AND or OR"
        },
        "Queries": {
          "items": {
            "$ref": "#/definitions/idmRoleSingleQuery"
          },
          "title": "List of atomic queries that will be combined using the Operation type (AND / OR)",
          "type": "array"
        },
        "ResourcePolicyQuery": {
          "$ref": "#/definitions/restResourcePolicyQuery",
          "title": "Policies query for specifying the search context"
        }
      },
      "title": "Roles Search",
      "type": "object"
    },
    "restSearchUserRequest": {
      "properties": {
        "CountOnly": {
          "title": "Return counts only, no actual results",
          "type": "boolean"
        },
        "GroupBy": {
          "description": "Group by ...",
          "format": "int32",
          "type": "integer"
        },
        "Limit": {
          "format": "int64",
          "title": "Limit number of results",
          "type": "string"
        },
        "Offset": {
          "format": "int64",
          "title": "Start listing at a given position",
          "type": "string"
        },
        "Operation": {
          "$ref": "#/definitions/serviceOperationType",
          "title": "Combine single queries with AND or OR logic"
        },
        "Queries": {
          "items": {
            "$ref": "#/definitions/idmUserSingleQuery"
          },
          "title": "Atomic queries that will be combined using the Operation Type (AND or OR)",
          "type": "array"
        },
        "ResourcePolicyQuery": {
          "$ref": "#/definitions/restResourcePolicyQuery",
          "title": "Policies queries to filter the search context"
        }
      },
      "title": "Users Search",
      "type": "object"
    },
    "restSearchWorkspaceRequest": {
      "properties": {
        "CountOnly": {
          "title": "Return counts only, no actual results",
          "type": "boolean"
        },
        "GroupBy": {
          "format": "int32",
          "title": "Group results",
          "type": "integer"
        },
        "Limit": {
          "format": "int64",
          "title": "Limit the number of results",
          "type": "string"
        },
        "Offset": {
          "format": "int64",
          "title": "Start listing at a given position",
          "type": "string"
        },
        "Operation": {
          "$ref": "#/definitions/serviceOperationType",
          "title": "Single queries will be combined using this operation AND or OR logic"
        },
        "Queries": {
          "items": {
            "$ref": "#/definitions/idmWorkspaceSingleQuery"
          },
          "title": "Atomic queries that will be combined using the OperationType (AND or OR)",
          "type": "array"
        },
        "ResourcePolicyQuery": {
          "$ref": "#/definitions/restResourcePolicyQuery",
          "title": "Policies queries to filter the search context"
        }
      },
      "title": "Rest request for searching workspaces",
      "type": "object"
    },
    "restServiceCollection": {
      "properties": {
        "Services": {
          "items": {
            "$ref": "#/definitions/ctlService"
          },
          "type": "array"
        },
        "Total": {
          "format": "int32",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "restSettingsAccess": {
      "properties": {
        "Description": {
          "type": "string"
        },
        "Label": {
          "type": "string"
        },
        "Policies": {
          "items": {
            "$ref": "#/definitions/restSettingsAccessRestPolicy"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "restSettingsAccessRestPolicy": {
      "properties": {
        "Action": {
          "type": "string"
        },
        "Resource": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "restSettingsEntry": {
      "properties": {
        "ALIAS": {
          "type": "string"
        },
        "Accesses": {
          "additionalProperties": {
            "$ref": "#/definitions/restSettingsAccess"
          },
          "type": "object"
        },
        "DESCRIPTION": {
          "type": "string"
        },
        "Feature": {
          "type": "string"
        },
        "Key": {
          "type": "string"
        },
        "LABEL": {
          "type": "string"
        },
        "MANAGER": {
          "type": "string"
        },
        "METADATA": {
          "$ref": "#/definitions/restSettingsEntryMeta"
        }
      },
      "type": "object"
    },
    "restSettingsEntryMeta": {
      "properties": {
        "advanced": {
          "type": "boolean"
        },
        "component": {
          "type": "string"
        },
        "icon_class": {
          "type": "string"
        },
        "indexed": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "props": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "restSettingsMenuResponse": {
      "properties": {
        "Sections": {
          "items": {
            "$ref": "#/definitions/restSettingsSection"
          },
          "type": "array"
        },
        "__metadata__": {
          "$ref": "#/definitions/restSettingsEntryMeta"
        }
      },
      "type": "object"
    },
    "restSettingsSection": {
      "properties": {
        "CHILDREN": {
          "items": {
            "$ref": "#/definitions/restSettingsEntry"
          },
          "type": "array"
        },
        "DESCRIPTION": {
          "type": "string"
        },
        "Key": {
          "type": "string"
        },
        "LABEL": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "restShareLink": {
      "properties": {
        "AccessEnd": {
          "format": "int64",
          "title": "Timestamp after which the share is disabled",
          "type": "string"
        },
        "AccessStart": {
          "format": "int64",
          "title": "Timestamp of start date for enabling the share (not implemented yet)",
          "type": "string"
        },
        "CurrentDownloads": {
          "format": "int64",
          "title": "Current number of downloads",
          "type": "string"
        },
        "Description": {
          "title": "Description of the Link (max 1000 chars)",
          "type": "string"
        },
        "Label": {
          "title": "Label of the Link (max 500 chars)",
          "type": "string"
        },
        "LinkHash": {
          "title": "Unique Hash for accessing the link",
          "type": "string"
        },
        "LinkUrl": {
          "title": "Full URL for accessing the link",
          "type": "string"
        },
        "MaxDownloads": {
          "format": "int64",
          "title": "Maximum number of downloads until expiration",
          "type": "string"
        },
        "PasswordRequired": {
          "title": "Whether a password is required or not to access the link",
          "type": "boolean"
        },
        "Permissions": {
          "items": {
            "$ref": "#/definitions/restShareLinkAccessType"
          },
          "title": "Specific permissions for public links",
          "type": "array"
        },
        "Policies": {
          "items": {
            "$ref": "#/definitions/serviceResourcePolicy"
          },
          "title": "Security policies",
          "type": "array"
        },
        "PoliciesContextEditable": {
          "title": "Whether policies are currently editable or not",
          "type": "boolean"
        },
        "RestrictToTargetUsers": {
          "title": "RestrictToTargetUsers enable users restriction",
          "type": "boolean"
        },
        "RootNodes": {
          "items": {
            "$ref": "#/definitions/treeNode"
          },
          "title": "Nodes in the tree that serve as root to this link",
          "type": "array"
        },
        "TargetUsers": {
          "additionalProperties": {
            "$ref": "#/definitions/restShareLinkTargetUser"
          },
          "title": "TargetUsers can be used to restrict access",
          "type": "object"
        },
        "UserLogin": {
          "title": "Temporary user Login used to login automatically when accessing this link",
          "type": "string"
        },
        "UserUuid": {
          "title": "Temporary user Uuid used to login automatically when accessing this link",
          "type": "string"
        },
        "Uuid": {
          "title": "Internal identifier of the link",
          "type": "string"
        },
        "ViewTemplateName": {
          "title": "Display Template for loading the public link",
          "type": "string"
        }
      },
      "title": "Model for representing a public link",
      "type": "object"
    },
    "restShareLinkAccessType": {
      "default": "NoAccess",
      "enum": [
        "NoAccess",
        "Preview",
        "Download",
        "Upload"
      ],
      "title": "Known values for link permissions",
      "type": "string"
    },
    "restShareLinkTargetUser": {
      "properties": {
        "Display": {
          "type": "string"
        },
        "DownloadCount": {
          "format": "int32",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "restSubscriptionsCollection": {
      "properties": {
        "subscriptions": {
          "items": {
            "$ref": "#/definitions/activitySubscription"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "restTemplate": {
      "properties": {
        "Editable": {
          "title": "Whether this template can be edited or not",
          "type": "boolean"
        },
        "Label": {
          "title": "Human friendly label",
          "type": "string"
        },
        "Node": {
          "$ref": "#/definitions/restTemplateNode",
          "title": "Template node, can be a file or a tree of folders"
        },
        "Policies": {
          "items": {
            "$ref": "#/definitions/serviceResourcePolicy"
          },
          "title": "Associated policies",
          "type": "array"
        },
        "UUID": {
          "title": "Unique identifier for this template",
          "type": "string"
        }
      },
      "title": "A template can be used to create files or tree from scratch",
      "type": "object"
    },
    "restTemplateNode": {
      "properties": {
        "Children": {
          "additionalProperties": {
            "$ref": "#/definitions/treeNode"
          },
          "title": "One or more children",
          "type": "object"
        },
        "Node": {
          "$ref": "#/definitions/treeNode",
          "title": "Whether it's a file or a folder"
        }
      },
      "title": "A template node is representing a file or a folder",
      "type": "object"
    },
    "restUpdateSharePoliciesRequest": {
      "properties": {
        "Policies": {
          "items": {
            "$ref": "#/definitions/serviceResourcePolicy"
          },
          "title": "List of policies to update",
          "type": "array"
        },
        "Uuid": {
          "title": "Cell or Link UUID",
          "type": "string"
        }
      },
      "type": "object"
    },
    "restUpdateSharePoliciesResponse": {
      "properties": {
        "Policies": {
          "items": {
            "$ref": "#/definitions/serviceResourcePolicy"
          },
          "type": "array"
        },
        "PoliciesContextEditable": {
          "type": "boolean"
        },
        "Success": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "restUserBookmarksRequest": {
      "properties": {
        "All": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "restUserJobResponse": {
      "properties": {
        "JobUuid": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "restUserJobsCollection": {
      "properties": {
        "Jobs": {
          "items": {
            "$ref": "#/definitions/jobsJob"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "restUserMetaCollection": {
      "properties": {
        "Metadatas": {
          "items": {
            "$ref": "#/definitions/idmUserMeta"
          },
          "type": "array"
        }
      },
      "title": "Collection of UserMeta",
      "type": "object"
    },
    "restUserMetaNamespaceCollection": {
      "properties": {
        "Namespaces": {
          "items": {
            "$ref": "#/definitions/idmUserMetaNamespace"
          },
          "title": "List of user meta Namespaces",
          "type": "array"
        }
      },
      "title": "Collection of Meta Namespaces",
      "type": "object"
    },
    "restUserStateResponse": {
      "properties": {
        "Workspaces": {
          "items": {
            "$ref": "#/definitions/idmWorkspace"
          },
          "type": "array"
        },
        "WorkspacesAccesses": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "restUsersCollection": {
      "properties": {
        "Groups": {
          "items": {
            "$ref": "#/definitions/idmUser"
          },
          "title": "List of Groups",
          "type": "array"
        },
        "Total": {
          "format": "int32",
          "title": "Total number of results",
          "type": "integer"
        },
        "Users": {
          "items": {
            "$ref": "#/definitions/idmUser"
          },
          "title": "List of Users",
          "type": "array"
        }
      },
      "title": "Users Collection",
      "type": "object"
    },
    "restVersioningPolicyCollection": {
      "properties": {
        "Policies": {
          "items": {
            "$ref": "#/definitions/treeVersioningPolicy"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "restWorkspaceCollection": {
      "properties": {
        "Total": {
          "format": "int32",
          "title": "Total number of results",
          "type": "integer"
        },
        "Workspaces": {
          "items": {
            "$ref": "#/definitions/idmWorkspace"
          },
          "title": "List of workspaces",
          "type": "array"
        }
      },
      "title": "Rest response for workspace search",
      "type": "object"
    },
    "rpcStatus": {
      "properties": {
        "code": {
          "format": "int32",
          "type": "integer"
        },
        "details": {
          "items": {
            "$ref": "#/definitions/protobufAny"
          },
          "type": "array"
        },
        "message": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "serviceOperationType": {
      "default": "OR",
      "enum": [
        "OR",
        "AND"
      ],
      "type": "string"
    },
    "serviceQuery": {
      "properties": {
        "Limit": {
          "format": "int64",
          "type": "string"
        },
        "Offset": {
          "format": "int64",
          "type": "string"
        },
        "Operation": {
          "$ref": "#/definitions/serviceOperationType"
        },
        "ResourcePolicyQuery": {
          "$ref": "#/definitions/serviceResourcePolicyQuery"
        },
        "SortDesc": {
          "type": "boolean"
        },
        "SortField": {
          "type": "string"
        },
        "SubQueries": {
          "items": {
            "$ref": "#/definitions/protobufAny"
          },
          "type": "array"
        },
        "groupBy": {
          "format": "int32",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "serviceResourcePolicy": {
      "properties": {
        "Action": {
          "$ref": "#/definitions/serviceResourcePolicyAction"
        },
        "Effect": {
          "$ref": "#/definitions/serviceResourcePolicyPolicyEffect"
        },
        "JsonConditions": {
          "type": "string"
        },
        "Resource": {
          "type": "string"
        },
        "Subject": {
          "type": "string"
        },
        "id": {
          "format": "int64",
          "type": "string"
        }
      },
      "type": "object"
    },
    "serviceResourcePolicyAction": {
      "default": "ANY",
      "enum": [
        "ANY",
        "OWNER",
        "READ",
        "WRITE",
        "EDIT_RULES"
      ],
      "type": "string"
    },
    "serviceResourcePolicyPolicyEffect": {
      "default": "deny",
      "enum": [
        "deny",
        "allow"
      ],
      "type": "string"
    },
    "serviceResourcePolicyQuery": {
      "properties": {
        "Any": {
          "type": "boolean"
        },
        "Empty": {
          "type": "boolean"
        },
        "Subjects": {
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "treeChangeLog": {
      "properties": {
        "Data": {
          "format": "byte",
          "title": "Arbitrary additional data",
          "type": "string"
        },
        "Description": {
          "title": "Human-readable description of what happened",
          "type": "string"
        },
        "Event": {
          "$ref": "#/definitions/treeNodeChangeEvent",
          "title": "Event that triggered this change"
        },
        "Location": {
          "$ref": "#/definitions/treeNode",
          "title": "Actual location of the stored version"
        },
        "MTime": {
          "format": "int64",
          "title": "Unix Timestamp",
          "type": "string"
        },
        "OwnerUuid": {
          "title": "Who performed this action",
          "type": "string"
        },
        "Size": {
          "format": "int64",
          "title": "Content Size at that moment",
          "type": "string"
        },
        "Uuid": {
          "title": "Unique commit ID",
          "type": "string"
        }
      },
      "type": "object"
    },
    "treeGeoPoint": {
      "properties": {
        "Lat": {
          "format": "double",
          "type": "number"
        },
        "Lon": {
          "format": "double",
          "type": "number"
        }
      },
      "type": "object"
    },
    "treeGeoQuery": {
      "properties": {
        "BottomRight": {
          "$ref": "#/definitions/treeGeoPoint"
        },
        "Center": {
          "$ref": "#/definitions/treeGeoPoint",
          "title": "Either use a center point and a distance"
        },
        "Distance": {
          "description": "Example formats supported:\n\"5in\" \"5inch\" \"7yd\" \"7yards\" \"9ft\" \"9feet\" \"11km\" \"11kilometers\"\n\"3nm\" \"3nauticalmiles\" \"13mm\" \"13millimeters\" \"15cm\" \"15centimeters\"\n\"17mi\" \"17miles\" \"19m\" \"19meters\"\nIf the unit cannot be determined, the entire string is parsed and the\nunit of meters is assumed.",
          "type": "string"
        },
        "TopLeft": {
          "$ref": "#/definitions/treeGeoPoint",
          "title": "Or use a bounding box with TopLeft and BottomRight points"
        }
      },
      "type": "object"
    },
    "treeListNodesRequest": {
      "properties": {
        "Ancestors": {
          "title": "Send back a list of parent nodes, until the root, including the original node",
          "type": "boolean"
        },
        "FilterType": {
          "$ref": "#/definitions/treeNodeType",
          "title": "Filter by node type (LEAF / COLLECTION)"
        },
        "Limit": {
          "format": "int64",
          "title": "Limit the number of results",
          "type": "string"
        },
        "Node": {
          "$ref": "#/definitions/treeNode",
          "title": "Main node used as a parent"
        },
        "Offset": {
          "format": "int64",
          "title": "Start listing at a given position",
          "type": "string"
        },
        "Recursive": {
          "title": "Send back all children of the node",
          "type": "boolean"
        },
        "SortDirDesc": {
          "title": "Sort descending (otherwise ascending)",
          "type": "boolean"
        },
        "SortField": {
          "title": "Remote Sort on specific field",
          "type": "string"
        },
        "StatFlags": {
          "items": {
            "format": "int64",
            "type": "integer"
          },
          "title": "Generic Details Flags",
          "type": "array"
        },
        "WithCommits": {
          "title": "Sends the list of commits for a given node (Deprecated)",
          "type": "boolean"
        },
        "WithVersions": {
          "title": "Sends the list of versions for a given node",
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "treeNode": {
      "properties": {
        "AppearsIn": {
          "items": {
            "$ref": "#/definitions/treeWorkspaceRelativePath"
          },
          "title": "Can be used for output when node is appearing in multiple workspaces",
          "type": "array"
        },
        "Commits": {
          "items": {
            "$ref": "#/definitions/treeChangeLog"
          },
          "title": "List of successive commits",
          "type": "array"
        },
        "Etag": {
          "title": "Hash of the content if node is a LEAF, Uuid or",
          "type": "string"
        },
        "MTime": {
          "format": "int64",
          "title": "Last modification Timestamp",
          "type": "string"
        },
        "MetaStore": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "------------------------------------\nThen a free K =\u003e V representation of any kind of metadata\n------------------------------------",
          "type": "object"
        },
        "Mode": {
          "format": "int32",
          "title": "Permission mode, like 0777",
          "type": "integer"
        },
        "Path": {
          "type": "string"
        },
        "Size": {
          "format": "int64",
          "title": "Size of the file, or cumulated size of folder",
          "type": "string"
        },
        "Type": {
          "$ref": "#/definitions/treeNodeType"
        },
        "Uuid": {
          "title": "------------------------------------\nCore identification of the node\n------------------------------------",
          "type": "string"
        }
      },
      "type": "object"
    },
    "treeNodeChangeEvent": {
      "properties": {
        "Metadata": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "Optimistic": {
          "type": "boolean"
        },
        "Silent": {
          "type": "boolean"
        },
        "Source": {
          "$ref": "#/definitions/treeNode"
        },
        "Target": {
          "$ref": "#/definitions/treeNode"
        },
        "Type": {
          "$ref": "#/definitions/treeNodeChangeEventEventType"
        }
      },
      "type": "object"
    },
    "treeNodeChangeEventEventType": {
      "default": "CREATE",
      "enum": [
        "CREATE",
        "READ",
        "UPDATE_PATH",
        "UPDATE_CONTENT",
        "UPDATE_META",
        "UPDATE_USER_META",
        "DELETE"
      ],
      "type": "string"
    },
    "treeNodeType": {
      "default": "UNKNOWN",
      "enum": [
        "UNKNOWN",
        "LEAF",
        "COLLECTION"
      ],
      "title": "==========================================================\n* Standard Messages\n==========================================================",
      "type": "string"
    },
    "treeQuery": {
      "properties": {
        "Content": {
          "title": "Search in textual content (if search engine has this feature enabled)",
          "type": "string"
        },
        "DurationDate": {
          "title": "Compute MinDate/MaxDate with a Golang duration with a leading comparator (\u003e or \u003c)\nDuration may contain \"s\" second, \"m\" minute, \"d\" day.\nExample: \"\u003e10m\" for files modified before 10minutes ago",
          "type": "string"
        },
        "ETag": {
          "title": "Look for a specific ETag value, may only be useful to lookup for files with __temporary__ ETag",
          "type": "string"
        },
        "Extension": {
          "title": "Search files by their extension, use pipe symbol | if you wish to allow many extensions.\nExample png|pdf|jpg",
          "type": "string"
        },
        "FileName": {
          "title": "Lookup by file basename",
          "type": "string"
        },
        "FileNameOrContent": {
          "title": "Search in either filename or content (if search engine has this feature enabled)",
          "type": "string"
        },
        "FreeString": {
          "description": "Bleve-like search query to search for a specific metadata value.\nWhen querying nodes, this will redirect this query to the Search Engine. When filtering an input, this will load an in-memory bleve engine to evaluate the node.\n\nBleve query string format is a space separated list of `[+-]key:value`, where node meta keys must be prepended with \"Meta.\"\nFor Example, for tags: `+Meta.usermeta-tags:myvalue`",
          "type": "string"
        },
        "GeoQuery": {
          "$ref": "#/definitions/treeGeoQuery",
          "title": "Search geographically"
        },
        "MaxDate": {
          "format": "int64",
          "title": "Range for modification date - node was modified before this date",
          "type": "string"
        },
        "MaxSize": {
          "format": "int64",
          "title": "Range for file size - size is smaller than",
          "type": "string"
        },
        "MinDate": {
          "format": "int64",
          "title": "Range for modification date - node was modified after this date",
          "type": "string"
        },
        "MinSize": {
          "format": "int64",
          "title": "Range for file size - size bigger than",
          "type": "string"
        },
        "Not": {
          "title": "Negate this query",
          "type": "boolean"
        },
        "PathDepth": {
          "format": "int32",
          "title": "Restrict recursive listing to a given level of the tree starting from root.\nSpecial value \"-1\" should list only one level in the folder defined by PathPrefix",
          "type": "integer"
        },
        "PathPrefix": {
          "items": {
            "type": "string"
          },
          "title": "Recursive listing of nodes below a given path. Combine with the PathDepth parameter to limit request results",
          "type": "array"
        },
        "Paths": {
          "items": {
            "type": "string"
          },
          "title": "List of nodes paths, exactly matching",
          "type": "array"
        },
        "Type": {
          "$ref": "#/definitions/treeNodeType",
          "title": "Limit to a given node type (file or folder)"
        },
        "UUIDs": {
          "items": {
            "type": "string"
          },
          "title": "Preset list of specific node defined by their UUIDs",
          "type": "array"
        }
      },
      "title": "Search Queries",
      "type": "object"
    },
    "treeReadNodeRequest": {
      "properties": {
        "Node": {
          "$ref": "#/definitions/treeNode",
          "title": "Input node"
        },
        "ObjectStats": {
          "title": "Used internally for the router ReadNode request, stat the datasource instead of index",
          "type": "boolean"
        },
        "StatFlags": {
          "items": {
            "format": "int64",
            "type": "integer"
          },
          "title": "Generic Details Flags",
          "type": "array"
        },
        "WithCommits": {
          "title": "Gather commit information - This is Deprecated",
          "type": "boolean"
        },
        "WithExtendedStats": {
          "title": "Get extended stats - For folders, computes ChildrenCount - Depreacted, use StatFlags instead",
          "type": "boolean"
        }
      },
      "title": "Request / Responses Messages",
      "type": "object"
    },
    "treeReadNodeResponse": {
      "properties": {
        "Node": {
          "$ref": "#/definitions/treeNode"
        },
        "Success": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "treeSearchFacet": {
      "properties": {
        "Count": {
          "format": "int32",
          "title": "Segment results count",
          "type": "integer"
        },
        "End": {
          "format": "int32",
          "type": "integer"
        },
        "FieldName": {
          "title": "Facet field name",
          "type": "string"
        },
        "Label": {
          "title": "Segment Label",
          "type": "string"
        },
        "Max": {
          "format": "int64",
          "type": "string"
        },
        "Min": {
          "format": "int64",
          "title": "For NumericRange facets, min/max values",
          "type": "string"
        },
        "Start": {
          "format": "int32",
          "title": "For DateRange facets, start/end values",
          "type": "integer"
        },
        "Term": {
          "title": "For string facets, term value",
          "type": "string"
        }
      },
      "type": "object"
    },
    "treeSearchRequest": {
      "properties": {
        "Details": {
          "title": "Load node details",
          "type": "boolean"
        },
        "From": {
          "format": "int32",
          "title": "Start at given position",
          "type": "integer"
        },
        "Query": {
          "$ref": "#/definitions/treeQuery",
          "title": "The query object"
        },
        "Size": {
          "format": "int32",
          "title": "Limit the number of results",
          "type": "integer"
        },
        "SortDirDesc": {
          "title": "Sort direction (asc by default)",
          "type": "boolean"
        },
        "SortField": {
          "title": "Sort result using a specific field",
          "type": "string"
        },
        "StatFlags": {
          "items": {
            "format": "int64",
            "type": "integer"
          },
          "title": "Generic Details Flags",
          "type": "array"
        }
      },
      "type": "object"
    },
    "treeVersioningKeepPeriod": {
      "properties": {
        "IntervalStart": {
          "type": "string"
        },
        "MaxNumber": {
          "format": "int32",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "treeVersioningNodeDeletedStrategy": {
      "default": "KeepAll",
      "enum": [
        "KeepAll",
        "KeepLast",
        "KeepNone"
      ],
      "type": "string"
    },
    "treeVersioningPolicy": {
      "properties": {
        "Description": {
          "type": "string"
        },
        "IgnoreFilesGreaterThan": {
          "format": "int64",
          "type": "string"
        },
        "KeepPeriods": {
          "items": {
            "$ref": "#/definitions/treeVersioningKeepPeriod"
          },
          "type": "array"
        },
        "MaxSizePerFile": {
          "format": "int64",
          "type": "string"
        },
        "MaxTotalSize": {
          "format": "int64",
          "type": "string"
        },
        "Name": {
          "type": "string"
        },
        "NodeDeletedStrategy": {
          "$ref": "#/definitions/treeVersioningNodeDeletedStrategy"
        },
        "Uuid": {
          "type": "string"
        },
        "VersionsDataSourceBucket": {
          "type": "string"
        },
        "VersionsDataSourceName": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "treeWorkspaceRelativePath": {
      "properties": {
        "Path": {
          "title": "Relative Path inside workspace",
          "type": "string"
        },
        "WsLabel": {
          "title": "Workspace Label",
          "type": "string"
        },
        "WsScope": {
          "title": "Workspace Scope",
          "type": "string"
        },
        "WsSlug": {
          "title": "Workspace slug",
          "type": "string"
        },
        "WsUuid": {
          "title": "Workspace Id",
          "type": "string"
        }
      },
      "title": "Used in AppearsIn to signal a node is\nappearing in multiple workspaces in the current context",
      "type": "object"
    },
    "updateApplyUpdateResponse": {
      "properties": {
        "Message": {
          "type": "string"
        },
        "Success": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "updatePackage": {
      "properties": {
        "BinaryArch": {
          "title": "GOARCH value used at build time",
          "type": "string"
        },
        "BinaryChecksum": {
          "title": "Checksum of the binary to verify its integrity",
          "type": "string"
        },
        "BinaryHashType": {
          "title": "Hash type used for the signature",
          "type": "string"
        },
        "BinaryOS": {
          "title": "GOOS value used at build time",
          "type": "string"
        },
        "BinarySignature": {
          "title": "Signature of the binary",
          "type": "string"
        },
        "BinarySize": {
          "format": "int64",
          "title": "Size of the binary to download",
          "type": "string"
        },
        "BinaryURL": {
          "title": "Https URL where to download the binary",
          "type": "string"
        },
        "ChangeLog": {
          "title": "List or public URL of change logs",
          "type": "string"
        },
        "Description": {
          "title": "Long human-readable description (markdown)",
          "type": "string"
        },
        "IsPatch": {
          "title": "Not used : if binary is a patch",
          "type": "boolean"
        },
        "Label": {
          "title": "Short human-readable description",
          "type": "string"
        },
        "License": {
          "title": "License of this package",
          "type": "string"
        },
        "PackageName": {
          "title": "Name of the application",
          "type": "string"
        },
        "PatchAlgorithm": {
          "title": "Not used : if a patch, how to patch (bsdiff support)",
          "type": "string"
        },
        "ReleaseDate": {
          "format": "int32",
          "title": "Release date of the binary",
          "type": "integer"
        },
        "ServiceName": {
          "title": "Not used : at a point we may deliver services only updates",
          "type": "string"
        },
        "Status": {
          "$ref": "#/definitions/PackagePackageStatus"
        },
        "Version": {
          "title": "Version of this new binary",
          "type": "string"
        }
      },
      "type": "object"
    },
    "updateUpdateRequest": {
      "properties": {
        "Channel": {
          "title": "Channel name",
          "type": "string"
        },
        "CurrentVersion": {
          "title": "Current version of the application",
          "type": "string"
        },
        "GOARCH": {
          "title": "Current GOARCH",
          "type": "string"
        },
        "GOOS": {
          "title": "Current GOOS",
          "type": "string"
        },
        "LicenseInfo": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "For enterprise version, info about the current license",
          "type": "object"
        },
        "PackageName": {
          "title": "Name of the currently running application",
          "type": "string"
        },
        "ServiceName": {
          "title": "Not Used : specific service to get updates for",
          "type": "string"
        }
      },
      "type": "object"
    },
    "updateUpdateResponse": {
      "properties": {
        "AvailableBinaries": {
          "items": {
            "$ref": "#/definitions/updatePackage"
          },
          "title": "List of available binaries",
          "type": "array"
        },
        "Channel": {
          "type": "string"
        }
      },
      "type": "object"
    }
  },
  "externalDocs": {
    "description": "More about Pydio Cells Apis",
    "url": "https://pydio.com"
  },
  "info": {
    "contact": {
      "name": "Pydio",
      "url": "https://pydio.com"
    },
    "title": "Pydio Cells Rest API",
    "version": "4.0"
  },
  "paths": {
    "/acl": {
      "post": {
        "operationId": "SearchAcls",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/restSearchACLRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restACLCollection"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Search Acls",
        "tags": [
          "ACLService"
        ]
      },
      "put": {
        "operationId": "PutAcl",
        "parameters": [
          {
            "description": "ACL are the basic flags that can be put anywhere in the tree to provide some specific rights to a given role.\nThe context of how they apply can be fine-tuned by workspace.",
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/idmACL"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/idmACL"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Store an ACL",
        "tags": [
          "ACLService"
        ]
      }
    },
    "/acl/bulk/delete": {
      "post": {
        "operationId": "DeleteAcl",
        "parameters": [
          {
            "description": "ACL are the basic flags that can be put anywhere in the tree to provide some specific rights to a given role.\nThe context of how they apply can be fine-tuned by workspace.",
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/idmACL"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restDeleteResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Delete one or more ACLs",
        "tags": [
          "ACLService"
        ]
      }
    },
    "/activity/stream": {
      "post": {
        "operationId": "Stream",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/activityStreamActivitiesRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/activityObject"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Load the the feeds of the currently logged user",
        "tags": [
          "ActivityService"
        ]
      }
    },
    "/activity/subscribe": {
      "post": {
        "operationId": "Subscribe",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/activitySubscription"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/activitySubscription"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Manage subscriptions to other users/nodes feeds",
        "tags": [
          "ActivityService"
        ]
      }
    },
    "/activity/subscriptions": {
      "post": {
        "operationId": "SearchSubscriptions",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/activitySearchSubscriptionsRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restSubscriptionsCollection"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Load subscriptions to other users/nodes feeds",
        "tags": [
          "ActivityService"
        ]
      }
    },
    "/auth/reset-password": {
      "post": {
        "operationId": "ResetPassword",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/restResetPasswordRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restResetPasswordResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Finish up the reset password process by providing the unique token",
        "tags": [
          "TokenService"
        ]
      }
    },
    "/auth/reset-password-token/{UserLogin}": {
      "put": {
        "operationId": "ResetPasswordToken",
        "parameters": [
          {
            "description": "Start a ResetPassword workflow for this user",
            "in": "path",
            "name": "UserLogin",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "properties": {
                "Create": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restResetPasswordTokenResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Generate a unique token for the reset password process",
        "tags": [
          "TokenService"
        ]
      }
    },
    "/auth/token/document": {
      "post": {
        "operationId": "GenerateDocumentAccessToken",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/restDocumentAccessTokenRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restDocumentAccessTokenResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Generate a temporary access token for a specific document for the current user",
        "tags": [
          "TokenService"
        ]
      }
    },
    "/auth/token/revoke": {
      "post": {
        "operationId": "Revoke",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/restRevokeRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restRevokeResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Revoke a JWT token",
        "tags": [
          "TokenService"
        ]
      }
    },
    "/config/buckets": {
      "post": {
        "operationId": "ListStorageBuckets",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/restListStorageBucketsRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restNodesCollection"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "List Buckets on a given object storage",
        "tags": [
          "ConfigService"
        ]
      }
    },
    "/config/buckets/{BucketName}": {
      "put": {
        "operationId": "CreateStorageBucket",
        "parameters": [
          {
            "in": "path",
            "name": "BucketName",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "properties": {
                "DataSource": {
                  "$ref": "#/definitions/objectDataSource"
                }
              },
              "title": "RestCreateStorageBucketRequest",
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restCreateStorageBucketResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "List Buckets on a given object storage",
        "tags": [
          "ConfigService"
        ]
      }
    },
    "/config/ctl": {
      "get": {
        "operationId": "ListServices",
        "parameters": [
          {
            "default": "ANY",
            "description": "Filter services by a given status (ANY, STOPPED, STOPPING, RUNNING)",
            "enum": [
              "ANY",
              "STOPPED",
              "STARTING",
              "STOPPING",
              "STARTED"
            ],
            "in": "query",
            "name": "StatusFilter",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restServiceCollection"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "List all services and their status",
        "tags": [
          "ConfigService"
        ]
      },
      "post": {
        "operationId": "ControlService",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/restControlServiceRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ctlService"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "[Not Implemented]  Start/Stop a service",
        "tags": [
          "ConfigService"
        ]
      }
    },
    "/config/datasource": {
      "get": {
        "operationId": "ListDataSources",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restDataSourceCollection"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "List all defined datasources",
        "tags": [
          "ConfigService"
        ]
      }
    },
    "/config/datasource/{Name}": {
      "delete": {
        "operationId": "DeleteDataSource",
        "parameters": [
          {
            "description": "Name of the data source (max length 34)",
            "in": "path",
            "name": "Name",
            "required": true,
            "type": "string"
          },
          {
            "description": "Whether this data source is disabled or running",
            "in": "query",
            "name": "Disabled",
            "required": false,
            "type": "boolean"
          },
          {
            "default": "LOCAL",
            "description": "Type of underlying storage (LOCAL, S3, AZURE, GCS)",
            "enum": [
              "LOCAL",
              "S3",
              "SMB",
              "CELLS",
              "AZURE",
              "GCS",
              "B2",
              "MANTA",
              "SIA"
            ],
            "in": "query",
            "name": "StorageType",
            "required": false,
            "type": "string"
          },
          {
            "description": "Corresponding objects service name (underlying s3 service)",
            "in": "query",
            "name": "ObjectsServiceName",
            "required": false,
            "type": "string"
          },
          {
            "description": "Corresponding objects service host",
            "in": "query",
            "name": "ObjectsHost",
            "required": false,
            "type": "string"
          },
          {
            "description": "Corresponding objects service port",
            "format": "int32",
            "in": "query",
            "name": "ObjectsPort",
            "required": false,
            "type": "integer"
          },
          {
            "description": "Corresponding objects service connection type",
            "in": "query",
            "name": "ObjectsSecure",
            "required": false,
            "type": "boolean"
          },
          {
            "description": "Corresponding objects service bucket",
            "in": "query",
            "name": "ObjectsBucket",
            "required": false,
            "type": "string"
          },
          {
            "description": "Corresponding objects service base folder inside the bucket",
            "in": "query",
            "name": "ObjectsBaseFolder",
            "required": false,
            "type": "string"
          },
          {
            "description": "Corresponding objects service api key",
            "in": "query",
            "name": "ApiKey",
            "required": false,
            "type": "string"
          },
          {
            "description": "Corresponding objects service api secret",
            "in": "query",
            "name": "ApiSecret",
            "required": false,
            "type": "string"
          },
          {
            "description": "Peer address of the data source",
            "in": "query",
            "name": "PeerAddress",
            "required": false,
            "type": "string"
          },
          {
            "description": "Not implemented, whether to watch for underlying changes on the FS",
            "in": "query",
            "name": "Watch",
            "required": false,
            "type": "boolean"
          },
          {
            "description": "Store data in flat format (object-storage like)",
            "in": "query",
            "name": "FlatStorage",
            "required": false,
            "type": "boolean"
          },
          {
            "description": "Do not trigger resync at start",
            "in": "query",
            "name": "SkipSyncOnRestart",
            "required": false,
            "type": "boolean"
          },
          {
            "default": "CLEAR",
            "description": "Type of encryption applied before sending data to storage",
            "enum": [
              "CLEAR",
              "MASTER",
              "USER",
              "USER_PWD"
            ],
            "in": "query",
            "name": "EncryptionMode",
            "required": false,
            "type": "string"
          },
          {
            "description": "Encryption key used for encrypting data",
            "in": "query",
            "name": "EncryptionKey",
            "required": false,
            "type": "string"
          },
          {
            "description": "Versioning policy describes how files are kept in the versioning queue",
            "in": "query",
            "name": "VersioningPolicyName",
            "required": false,
            "type": "string"
          },
          {
            "description": "Data Source creation date",
            "format": "int32",
            "in": "query",
            "name": "CreationDate",
            "required": false,
            "type": "integer"
          },
          {
            "description": "Data Source last synchronization date",
            "format": "int32",
            "in": "query",
            "name": "LastSynchronizationDate",
            "required": false,
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restDeleteDataSourceResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Delete a datasource",
        "tags": [
          "ConfigService"
        ]
      },
      "get": {
        "operationId": "GetDataSource",
        "parameters": [
          {
            "description": "Name of the data source (max length 34)",
            "in": "path",
            "name": "Name",
            "required": true,
            "type": "string"
          },
          {
            "description": "Whether this data source is disabled or running",
            "in": "query",
            "name": "Disabled",
            "required": false,
            "type": "boolean"
          },
          {
            "default": "LOCAL",
            "description": "Type of underlying storage (LOCAL, S3, AZURE, GCS)",
            "enum": [
              "LOCAL",
              "S3",
              "SMB",
              "CELLS",
              "AZURE",
              "GCS",
              "B2",
              "MANTA",
              "SIA"
            ],
            "in": "query",
            "name": "StorageType",
            "required": false,
            "type": "string"
          },
          {
            "description": "Corresponding objects service name (underlying s3 service)",
            "in": "query",
            "name": "ObjectsServiceName",
            "required": false,
            "type": "string"
          },
          {
            "description": "Corresponding objects service host",
            "in": "query",
            "name": "ObjectsHost",
            "required": false,
            "type": "string"
          },
          {
            "description": "Corresponding objects service port",
            "format": "int32",
            "in": "query",
            "name": "ObjectsPort",
            "required": false,
            "type": "integer"
          },
          {
            "description": "Corresponding objects service connection type",
            "in": "query",
            "name": "ObjectsSecure",
            "required": false,
            "type": "boolean"
          },
          {
            "description": "Corresponding objects service bucket",
            "in": "query",
            "name": "ObjectsBucket",
            "required": false,
            "type": "string"
          },
          {
            "description": "Corresponding objects service base folder inside the bucket",
            "in": "query",
            "name": "ObjectsBaseFolder",
            "required": false,
            "type": "string"
          },
          {
            "description": "Corresponding objects service api key",
            "in": "query",
            "name": "ApiKey",
            "required": false,
            "type": "string"
          },
          {
            "description": "Corresponding objects service api secret",
            "in": "query",
            "name": "ApiSecret",
            "required": false,
            "type": "string"
          },
          {
            "description": "Peer address of the data source",
            "in": "query",
            "name": "PeerAddress",
            "required": false,
            "type": "string"
          },
          {
            "description": "Not implemented, whether to watch for underlying changes on the FS",
            "in": "query",
            "name": "Watch",
            "required": false,
            "type": "boolean"
          },
          {
            "description": "Store data in flat format (object-storage like)",
            "in": "query",
            "name": "FlatStorage",
            "required": false,
            "type": "boolean"
          },
          {
            "description": "Do not trigger resync at start",
            "in": "query",
            "name": "SkipSyncOnRestart",
            "required": false,
            "type": "boolean"
          },
          {
            "default": "CLEAR",
            "description": "Type of encryption applied before sending data to storage",
            "enum": [
              "CLEAR",
              "MASTER",
              "USER",
              "USER_PWD"
            ],
            "in": "query",
            "name": "EncryptionMode",
            "required": false,
            "type": "string"
          },
          {
            "description": "Encryption key used for encrypting data",
            "in": "query",
            "name": "EncryptionKey",
            "required": false,
            "type": "string"
          },
          {
            "description": "Versioning policy describes how files are kept in the versioning queue",
            "in": "query",
            "name": "VersioningPolicyName",
            "required": false,
            "type": "string"
          },
          {
            "description": "Data Source creation date",
            "format": "int32",
            "in": "query",
            "name": "CreationDate",
            "required": false,
            "type": "integer"
          },
          {
            "description": "Data Source last synchronization date",
            "format": "int32",
            "in": "query",
            "name": "LastSynchronizationDate",
            "required": false,
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/objectDataSource"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Load datasource information",
        "tags": [
          "ConfigService"
        ]
      },
      "post": {
        "operationId": "PutDataSource",
        "parameters": [
          {
            "description": "Name of the data source (max length 34)",
            "in": "path",
            "name": "Name",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "properties": {
                "ApiKey": {
                  "title": "Corresponding objects service api key",
                  "type": "string"
                },
                "ApiSecret": {
                  "title": "Corresponding objects service api secret",
                  "type": "string"
                },
                "CreationDate": {
                  "format": "int32",
                  "title": "Data Source creation date",
                  "type": "integer"
                },
                "Disabled": {
                  "title": "Whether this data source is disabled or running",
                  "type": "boolean"
                },
                "EncryptionKey": {
                  "title": "Encryption key used for encrypting data",
                  "type": "string"
                },
                "EncryptionMode": {
                  "$ref": "#/definitions/objectEncryptionMode",
                  "title": "Type of encryption applied before sending data to storage"
                },
                "FlatStorage": {
                  "title": "Store data in flat format (object-storage like)",
                  "type": "boolean"
                },
                "LastSynchronizationDate": {
                  "format": "int32",
                  "title": "Data Source last synchronization date",
                  "type": "integer"
                },
                "ObjectsBaseFolder": {
                  "title": "Corresponding objects service base folder inside the bucket",
                  "type": "string"
                },
                "ObjectsBucket": {
                  "title": "Corresponding objects service bucket",
                  "type": "string"
                },
                "ObjectsHost": {
                  "title": "Corresponding objects service host",
                  "type": "string"
                },
                "ObjectsPort": {
                  "format": "int32",
                  "title": "Corresponding objects service port",
                  "type": "integer"
                },
                "ObjectsSecure": {
                  "title": "Corresponding objects service connection type",
                  "type": "boolean"
                },
                "ObjectsServiceName": {
                  "title": "Corresponding objects service name (underlying s3 service)",
                  "type": "string"
                },
                "PeerAddress": {
                  "title": "Peer address of the data source",
                  "type": "string"
                },
                "SkipSyncOnRestart": {
                  "title": "Do not trigger resync at start",
                  "type": "boolean"
                },
                "StorageConfiguration": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "title": "List of key values describing storage configuration",
                  "type": "object"
                },
                "StorageType": {
                  "$ref": "#/definitions/objectStorageType",
                  "title": "Type of underlying storage (LOCAL, S3, AZURE, GCS)"
                },
                "VersioningPolicyName": {
                  "title": "Versioning policy describes how files are kept in the versioning queue",
                  "type": "string"
                },
                "Watch": {
                  "title": "Not implemented, whether to watch for underlying changes on the FS",
                  "type": "boolean"
                }
              },
              "title": "DataSource Object description",
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/objectDataSource"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Create or update a datasource",
        "tags": [
          "ConfigService"
        ]
      }
    },
    "/config/discovery": {
      "get": {
        "operationId": "EndpointsDiscovery",
        "parameters": [
          {
            "description": "Filter result to a specific endpoint type",
            "in": "query",
            "name": "EndpointType",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restDiscoveryResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Publish available endpoints",
        "tags": [
          "ConfigService"
        ]
      }
    },
    "/config/discovery/forms/{ServiceName}": {
      "get": {
        "operationId": "ConfigFormsDiscovery",
        "parameters": [
          {
            "description": "Retrieve a configuration form for a given service",
            "in": "path",
            "name": "ServiceName",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restDiscoveryResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Publish Forms definition for building screens in frontend",
        "tags": [
          "ConfigService"
        ]
      }
    },
    "/config/discovery/openapi": {
      "get": {
        "operationId": "OpenApiDiscovery",
        "parameters": [
          {
            "description": "Filter result to a specific endpoint type",
            "in": "query",
            "name": "EndpointType",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restOpenApiResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Publish available REST APIs",
        "tags": [
          "ConfigService"
        ]
      }
    },
    "/config/encryption/create": {
      "post": {
        "operationId": "CreateEncryptionKey",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/encryptionAdminCreateKeyRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/encryptionAdminCreateKeyResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Create a new master key",
        "tags": [
          "ConfigService"
        ]
      }
    },
    "/config/encryption/delete": {
      "post": {
        "operationId": "DeleteEncryptionKey",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/encryptionAdminDeleteKeyRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/encryptionAdminDeleteKeyResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Delete an existing master key",
        "tags": [
          "ConfigService"
        ]
      }
    },
    "/config/encryption/export": {
      "post": {
        "operationId": "ExportEncryptionKey",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/encryptionAdminExportKeyRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/encryptionAdminExportKeyResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Export a master key for backup purpose, protected with a password",
        "tags": [
          "ConfigService"
        ]
      }
    },
    "/config/encryption/import": {
      "put": {
        "operationId": "ImportEncryptionKey",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/encryptionAdminImportKeyRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/encryptionAdminImportKeyResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Import a previously exported master key, requires the password created at export time",
        "tags": [
          "ConfigService"
        ]
      }
    },
    "/config/encryption/list": {
      "post": {
        "operationId": "ListEncryptionKeys",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/encryptionAdminListKeysRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/encryptionAdminListKeysResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "List registered master keys",
        "tags": [
          "ConfigService"
        ]
      }
    },
    "/config/peers": {
      "get": {
        "operationId": "ListPeersAddresses",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restListPeersAddressesResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "List all detected peers (servers on which the app is running)",
        "tags": [
          "ConfigService"
        ]
      }
    },
    "/config/peers/{PeerAddress}": {
      "post": {
        "operationId": "ListPeerFolders",
        "parameters": [
          {
            "description": "Restrict listing to a given peer",
            "in": "path",
            "name": "PeerAddress",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "properties": {
                "Path": {
                  "title": "Path to the parent folder for listing",
                  "type": "string"
                }
              },
              "title": "RestListPeerFoldersRequest",
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restNodesCollection"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "List folders on a peer, starting from root",
        "tags": [
          "ConfigService"
        ]
      },
      "put": {
        "operationId": "CreatePeerFolder",
        "parameters": [
          {
            "description": "Restrict listing to a given peer",
            "in": "path",
            "name": "PeerAddress",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "properties": {
                "Path": {
                  "title": "Path to the folder to be created",
                  "type": "string"
                }
              },
              "title": "RestCreatePeerFolderRequest",
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restCreatePeerFolderResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Create a folder on a given path for a given peer (filesystem)",
        "tags": [
          "ConfigService"
        ]
      }
    },
    "/config/processes": {
      "post": {
        "operationId": "ListProcesses",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/restListProcessesRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restListProcessesResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "List running Processes, with option PeerId or ServiceName filter",
        "tags": [
          "ConfigService"
        ]
      }
    },
    "/config/registry": {
      "post": {
        "operationId": "ListRegistry",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/registryListRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/registryListResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "tags": [
          "ConfigService"
        ]
      }
    },
    "/config/scheduler/actions": {
      "get": {
        "operationId": "SchedulerActionsDiscovery",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restSchedulerActionsResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Publish scheduler registered actions",
        "tags": [
          "ConfigService"
        ]
      }
    },
    "/config/scheduler/actions/{ActionName}": {
      "get": {
        "operationId": "SchedulerActionFormDiscovery",
        "parameters": [
          {
            "description": "Name of the action to load",
            "in": "path",
            "name": "ActionName",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restSchedulerActionFormResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Publish scheduler action XML form for building screens in frontend",
        "tags": [
          "ConfigService"
        ]
      }
    },
    "/config/sites/{Filter}": {
      "get": {
        "operationId": "ListSites",
        "parameters": [
          {
            "in": "path",
            "name": "Filter",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restListSitesResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "List configured sites",
        "tags": [
          "ConfigService"
        ]
      }
    },
    "/config/versioning": {
      "get": {
        "operationId": "ListVersioningPolicies",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restVersioningPolicyCollection"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "List all defined versioning policies",
        "tags": [
          "ConfigService"
        ]
      }
    },
    "/config/versioning/{Uuid}": {
      "get": {
        "operationId": "GetVersioningPolicy",
        "parameters": [
          {
            "in": "path",
            "name": "Uuid",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "Name",
            "required": false,
            "type": "string"
          },
          {
            "in": "query",
            "name": "Description",
            "required": false,
            "type": "string"
          },
          {
            "in": "query",
            "name": "VersionsDataSourceName",
            "required": false,
            "type": "string"
          },
          {
            "in": "query",
            "name": "VersionsDataSourceBucket",
            "required": false,
            "type": "string"
          },
          {
            "format": "int64",
            "in": "query",
            "name": "MaxTotalSize",
            "required": false,
            "type": "string"
          },
          {
            "format": "int64",
            "in": "query",
            "name": "MaxSizePerFile",
            "required": false,
            "type": "string"
          },
          {
            "format": "int64",
            "in": "query",
            "name": "IgnoreFilesGreaterThan",
            "required": false,
            "type": "string"
          },
          {
            "default": "KeepAll",
            "enum": [
              "KeepAll",
              "KeepLast",
              "KeepNone"
            ],
            "in": "query",
            "name": "NodeDeletedStrategy",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/treeVersioningPolicy"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Load a given versioning policy",
        "tags": [
          "ConfigService"
        ]
      }
    },
    "/config/virtualnodes": {
      "get": {
        "operationId": "ListVirtualNodes",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restNodesCollection"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "List all defined virtual nodes",
        "tags": [
          "ConfigService"
        ]
      }
    },
    "/config/{FullPath}": {
      "get": {
        "operationId": "GetConfig",
        "parameters": [
          {
            "description": "Full slash-separated path to the config key",
            "in": "path",
            "name": "FullPath",
            "required": true,
            "type": "string"
          },
          {
            "description": "JSON-encoded data to store",
            "in": "query",
            "name": "Data",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restConfiguration"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Generic config Get using a full path in the config tree",
        "tags": [
          "ConfigService"
        ]
      },
      "put": {
        "operationId": "PutConfig",
        "parameters": [
          {
            "description": "Full slash-separated path to the config key",
            "in": "path",
            "name": "FullPath",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "properties": {
                "Data": {
                  "title": "JSON-encoded data to store",
                  "type": "string"
                }
              },
              "title": "Configuration message. Data is an Json representation of any value",
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restConfiguration"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Generic config Put, using a full path in the config tree",
        "tags": [
          "ConfigService"
        ]
      }
    },
    "/frontend/binaries/{BinaryType}/{Uuid}": {
      "get": {
        "operationId": "FrontServeBinary",
        "parameters": [
          {
            "description": "Currently supported values are USER and GLOBAL",
            "in": "path",
            "name": "BinaryType",
            "required": true,
            "type": "string"
          },
          {
            "description": "Id of the binary",
            "in": "path",
            "name": "Uuid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restFrontBinaryResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Serve frontend binaries directly (avatars / logos / bg images)",
        "tags": [
          "FrontendService"
        ]
      },
      "post": {
        "operationId": "FrontPutBinary",
        "parameters": [
          {
            "description": "Currently supported values are USER and GLOBAL",
            "in": "path",
            "name": "BinaryType",
            "required": true,
            "type": "string"
          },
          {
            "description": "Id of the binary",
            "in": "path",
            "name": "Uuid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restFrontBinaryResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Upload frontend binaries (avatars / logos / bg images)",
        "tags": [
          "FrontendService"
        ]
      }
    },
    "/frontend/bootconf": {
      "get": {
        "operationId": "FrontBootConf",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restFrontBootConfResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Add some data to the initial set of parameters loaded by the frontend",
        "tags": [
          "FrontendService"
        ]
      }
    },
    "/frontend/enroll": {
      "post": {
        "operationId": "FrontEnrollAuth",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/restFrontEnrollAuthRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restFrontEnrollAuthResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Generic endpoint that can be implemented by 2FA systems for enrollment",
        "tags": [
          "FrontendService"
        ]
      }
    },
    "/frontend/messages/{Lang}": {
      "get": {
        "operationId": "FrontMessages",
        "parameters": [
          {
            "in": "path",
            "name": "Lang",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restFrontMessagesResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Serve list of I18n messages",
        "tags": [
          "FrontendService"
        ]
      }
    },
    "/frontend/plugins/{Lang}": {
      "get": {
        "operationId": "FrontPlugins",
        "parameters": [
          {
            "in": "path",
            "name": "Lang",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restFrontPluginsResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Serve list of I18n messages",
        "tags": [
          "FrontendService"
        ]
      }
    },
    "/frontend/session": {
      "post": {
        "operationId": "FrontSession",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/restFrontSessionRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restFrontSessionResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Handle JWT",
        "tags": [
          "FrontendService"
        ]
      }
    },
    "/frontend/settings-menu": {
      "get": {
        "operationId": "SettingsMenu",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restSettingsMenuResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Sends a tree of nodes to be used a menu in the Settings panel",
        "tags": [
          "FrontendService"
        ]
      }
    },
    "/frontend/state": {
      "get": {
        "operationId": "FrontState",
        "parameters": [
          {
            "in": "query",
            "name": "XPath",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restFrontStateResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Send XML state registry",
        "tags": [
          "FrontendService"
        ]
      }
    },
    "/graph/recommend": {
      "post": {
        "operationId": "Recommend",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/restRecommendRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restRecommendResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "tags": [
          "GraphService"
        ]
      }
    },
    "/graph/relation/{UserId}": {
      "get": {
        "operationId": "Relation",
        "parameters": [
          {
            "in": "path",
            "name": "UserId",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restRelationResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Compute relation of context user with another user",
        "tags": [
          "GraphService"
        ]
      }
    },
    "/graph/state/{Segment}": {
      "get": {
        "operationId": "UserState",
        "parameters": [
          {
            "in": "path",
            "name": "Segment",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restUserStateResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Compute accessible workspaces for a given user",
        "tags": [
          "GraphService"
        ]
      }
    },
    "/install": {
      "get": {
        "operationId": "GetInstall",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/installGetDefaultsResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Loads default values for install form",
        "tags": [
          "InstallService"
        ]
      },
      "post": {
        "operationId": "PostInstall",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/installInstallRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/installInstallResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Post values to be saved for install",
        "tags": [
          "InstallService"
        ]
      }
    },
    "/install/agreement": {
      "get": {
        "operationId": "GetAgreement",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/installGetAgreementResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Load a textual agreement for using the software",
        "tags": [
          "InstallService"
        ]
      }
    },
    "/install/check": {
      "post": {
        "operationId": "PerformInstallCheck",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/installPerformCheckRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/installPerformCheckResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Perform a check during install (like a valid DB connection)",
        "tags": [
          "InstallService"
        ]
      }
    },
    "/install/events": {
      "get": {
        "operationId": "InstallEvents",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/installInstallEventsResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "tags": [
          "InstallService"
        ]
      }
    },
    "/jobs/tasks/delete": {
      "post": {
        "operationId": "UserDeleteTasks",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/jobsDeleteTasksRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/jobsDeleteTasksResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Send a control command to clean tasks on a given job",
        "tags": [
          "JobsService"
        ]
      }
    },
    "/jobs/tasks/logs": {
      "post": {
        "operationId": "ListTasksLogs",
        "parameters": [
          {
            "description": "ListLogRequest launches a parameterised query in the log repository and streams the results.",
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/logListLogRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restLogMessageCollection"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Technical Logs, in Json or CSV format",
        "tags": [
          "JobsService"
        ]
      }
    },
    "/jobs/user": {
      "post": {
        "operationId": "UserListJobs",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/jobsListJobsRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restUserJobsCollection"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "List jobs associated with current user",
        "tags": [
          "JobsService"
        ]
      },
      "put": {
        "operationId": "UserControlJob",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/jobsCtrlCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/jobsCtrlCommandResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Send Control Commands to one or many jobs / tasks",
        "tags": [
          "JobsService"
        ]
      }
    },
    "/jobs/user/{JobName}": {
      "put": {
        "operationId": "UserCreateJob",
        "parameters": [
          {
            "description": "Name of the job to create in the user space",
            "in": "path",
            "name": "JobName",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "properties": {
                "JsonParameters": {
                  "title": "Json-encoded parameters for this job",
                  "type": "string"
                }
              },
              "title": "RestUserJobRequest",
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restUserJobResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Create a predefined job to be run directly",
        "tags": [
          "JobsService"
        ]
      }
    },
    "/log/sys": {
      "post": {
        "operationId": "Syslog",
        "parameters": [
          {
            "description": "ListLogRequest launches a parameterised query in the log repository and streams the results.",
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/logListLogRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restLogMessageCollection"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Technical Logs, in Json or CSV format",
        "tags": [
          "LogService"
        ]
      }
    },
    "/mailer/send": {
      "post": {
        "operationId": "Send",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/mailerMail"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/mailerSendMailResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Send an email to a user or any email address",
        "tags": [
          "MailerService"
        ]
      }
    },
    "/meta/bulk/get": {
      "post": {
        "operationId": "GetBulkMeta",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/restGetBulkMetaRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restBulkMetaResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "List meta for a list of nodes, or a full directory using /path/* syntax",
        "tags": [
          "MetaService"
        ]
      }
    },
    "/meta/delete/{NodePath}": {
      "post": {
        "operationId": "DeleteMeta",
        "parameters": [
          {
            "description": "Path to the requested node",
            "in": "path",
            "name": "NodePath",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "properties": {
                "Namespace": {
                  "items": {
                    "type": "string"
                  },
                  "title": "List of namespaces to load",
                  "type": "array"
                }
              },
              "title": "RestMetaNamespaceRequest",
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/treeNode"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Delete metadata of a given node",
        "tags": [
          "MetaService"
        ]
      }
    },
    "/meta/get/{NodePath}": {
      "post": {
        "operationId": "GetMeta",
        "parameters": [
          {
            "description": "Path to the requested node",
            "in": "path",
            "name": "NodePath",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "properties": {
                "Namespace": {
                  "items": {
                    "type": "string"
                  },
                  "title": "List of namespaces to load",
                  "type": "array"
                }
              },
              "title": "RestMetaNamespaceRequest",
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/treeNode"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Load metadata for a given node",
        "tags": [
          "MetaService"
        ]
      }
    },
    "/meta/set/{NodePath}": {
      "post": {
        "operationId": "SetMeta",
        "parameters": [
          {
            "in": "path",
            "name": "NodePath",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "properties": {
                "Metadatas": {
                  "items": {
                    "$ref": "#/definitions/restMetadata"
                  },
                  "type": "array"
                }
              },
              "title": "RestMetaCollection",
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/treeNode"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Update metadata for a given node",
        "tags": [
          "MetaService"
        ]
      }
    },
    "/policy": {
      "post": {
        "operationId": "ListPolicies",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/idmListPolicyGroupsRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/idmListPolicyGroupsResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "List all defined security policies",
        "tags": [
          "PolicyService"
        ]
      }
    },
    "/role": {
      "post": {
        "operationId": "SearchRoles",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/restSearchRoleRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restRolesCollection"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Search Roles",
        "tags": [
          "RoleService"
        ]
      }
    },
    "/role/{Uuid}": {
      "delete": {
        "operationId": "DeleteRole",
        "parameters": [
          {
            "description": "Unique identifier of this role",
            "in": "path",
            "name": "Uuid",
            "required": true,
            "type": "string"
          },
          {
            "description": "Label of this role",
            "in": "query",
            "name": "Label",
            "required": false,
            "type": "string"
          },
          {
            "description": "Whether this role represents a user team or not",
            "in": "query",
            "name": "IsTeam",
            "required": false,
            "type": "boolean"
          },
          {
            "description": "Whether this role is attached to a Group object",
            "in": "query",
            "name": "GroupRole",
            "required": false,
            "type": "boolean"
          },
          {
            "description": "Whether this role is attached to a User object",
            "in": "query",
            "name": "UserRole",
            "required": false,
            "type": "boolean"
          },
          {
            "description": "Last modification date of the role",
            "format": "int32",
            "in": "query",
            "name": "LastUpdated",
            "required": false,
            "type": "integer"
          },
          {
            "collectionFormat": "multi",
            "description": "List of profiles (standard, shared, admin) on which the role will be automatically applied",
            "in": "query",
            "items": {
              "type": "string"
            },
            "name": "AutoApplies",
            "required": false,
            "type": "array"
          },
          {
            "description": "Whether the policies resolve into an editable state",
            "in": "query",
            "name": "PoliciesContextEditable",
            "required": false,
            "type": "boolean"
          },
          {
            "description": "Is used in a stack of roles, this one will always be applied last.",
            "in": "query",
            "name": "ForceOverride",
            "required": false,
            "type": "boolean"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/idmRole"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Delete a Role by ID",
        "tags": [
          "RoleService"
        ]
      },
      "get": {
        "operationId": "GetRole",
        "parameters": [
          {
            "description": "Unique identifier of this role",
            "in": "path",
            "name": "Uuid",
            "required": true,
            "type": "string"
          },
          {
            "description": "Label of this role",
            "in": "query",
            "name": "Label",
            "required": false,
            "type": "string"
          },
          {
            "description": "Whether this role represents a user team or not",
            "in": "query",
            "name": "IsTeam",
            "required": false,
            "type": "boolean"
          },
          {
            "description": "Whether this role is attached to a Group object",
            "in": "query",
            "name": "GroupRole",
            "required": false,
            "type": "boolean"
          },
          {
            "description": "Whether this role is attached to a User object",
            "in": "query",
            "name": "UserRole",
            "required": false,
            "type": "boolean"
          },
          {
            "description": "Last modification date of the role",
            "format": "int32",
            "in": "query",
            "name": "LastUpdated",
            "required": false,
            "type": "integer"
          },
          {
            "collectionFormat": "multi",
            "description": "List of profiles (standard, shared, admin) on which the role will be automatically applied",
            "in": "query",
            "items": {
              "type": "string"
            },
            "name": "AutoApplies",
            "required": false,
            "type": "array"
          },
          {
            "description": "Whether the policies resolve into an editable state",
            "in": "query",
            "name": "PoliciesContextEditable",
            "required": false,
            "type": "boolean"
          },
          {
            "description": "Is used in a stack of roles, this one will always be applied last.",
            "in": "query",
            "name": "ForceOverride",
            "required": false,
            "type": "boolean"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/idmRole"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Get a Role by ID",
        "tags": [
          "RoleService"
        ]
      },
      "put": {
        "operationId": "SetRole",
        "parameters": [
          {
            "description": "Unique identifier of this role",
            "in": "path",
            "name": "Uuid",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "description": "Role represents a generic set of permissions that can be applied to any users or groups.",
              "properties": {
                "AutoApplies": {
                  "items": {
                    "type": "string"
                  },
                  "title": "List of profiles (standard, shared, admin) on which the role will be automatically applied",
                  "type": "array"
                },
                "ForceOverride": {
                  "description": "Is used in a stack of roles, this one will always be applied last.",
                  "type": "boolean"
                },
                "GroupRole": {
                  "title": "Whether this role is attached to a Group object",
                  "type": "boolean"
                },
                "IsTeam": {
                  "title": "Whether this role represents a user team or not",
                  "type": "boolean"
                },
                "Label": {
                  "title": "Label of this role",
                  "type": "string"
                },
                "LastUpdated": {
                  "format": "int32",
                  "title": "Last modification date of the role",
                  "type": "integer"
                },
                "Policies": {
                  "items": {
                    "$ref": "#/definitions/serviceResourcePolicy"
                  },
                  "title": "List of policies for securing this role access",
                  "type": "array"
                },
                "PoliciesContextEditable": {
                  "title": "Whether the policies resolve into an editable state",
                  "type": "boolean"
                },
                "UserRole": {
                  "title": "Whether this role is attached to a User object",
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/idmRole"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Create or update a Role",
        "tags": [
          "RoleService"
        ]
      }
    },
    "/search/nodes": {
      "post": {
        "operationId": "Nodes",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/treeSearchRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restSearchResults"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Search indexed nodes (files/folders) on various aspects",
        "tags": [
          "SearchService"
        ]
      }
    },
    "/share/cell": {
      "put": {
        "operationId": "PutCell",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/restPutCellRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restCell"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Put or Create a share room",
        "tags": [
          "ShareService"
        ]
      }
    },
    "/share/cell/{Uuid}": {
      "delete": {
        "operationId": "DeleteCell",
        "parameters": [
          {
            "description": "Cell Uuid",
            "in": "path",
            "name": "Uuid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restDeleteCellResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Delete a share room",
        "tags": [
          "ShareService"
        ]
      },
      "get": {
        "operationId": "GetCell",
        "parameters": [
          {
            "description": "Cell Uuid",
            "in": "path",
            "name": "Uuid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restCell"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Load a share room",
        "tags": [
          "ShareService"
        ]
      }
    },
    "/share/link": {
      "put": {
        "operationId": "PutShareLink",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/restPutShareLinkRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restShareLink"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Put or Create a share room",
        "tags": [
          "ShareService"
        ]
      }
    },
    "/share/link/{Uuid}": {
      "delete": {
        "operationId": "DeleteShareLink",
        "parameters": [
          {
            "description": "Id of Link to delete",
            "in": "path",
            "name": "Uuid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restDeleteShareLinkResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Delete Share Link",
        "tags": [
          "ShareService"
        ]
      },
      "get": {
        "operationId": "GetShareLink",
        "parameters": [
          {
            "description": "Link Uuid",
            "in": "path",
            "name": "Uuid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restShareLink"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Load a share link with all infos",
        "tags": [
          "ShareService"
        ]
      }
    },
    "/share/policies": {
      "put": {
        "operationId": "UpdateSharePolicies",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/restUpdateSharePoliciesRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restUpdateSharePoliciesResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Updates policies associated to the underlying workspace for a Cell or a ShareLink",
        "tags": [
          "ShareService"
        ]
      }
    },
    "/share/resources": {
      "post": {
        "operationId": "ListSharedResources",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/restListSharedResourcesRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restListSharedResourcesResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "List Shared Resources for current user or all users",
        "tags": [
          "ShareService"
        ]
      }
    },
    "/templates": {
      "get": {
        "operationId": "ListTemplates",
        "parameters": [
          {
            "in": "query",
            "name": "TemplateType",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restListTemplatesResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "List available templates",
        "tags": [
          "TemplatesService"
        ]
      }
    },
    "/tree/admin/list": {
      "post": {
        "operationId": "ListAdminTree",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/treeListNodesRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restNodesCollection"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "List files and folders starting at the root (first level lists the datasources)",
        "tags": [
          "AdminTreeService"
        ]
      }
    },
    "/tree/admin/stat": {
      "post": {
        "operationId": "StatAdminTree",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/treeReadNodeRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/treeReadNodeResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Read a node information inside the admin tree",
        "tags": [
          "AdminTreeService"
        ]
      }
    },
    "/tree/create": {
      "post": {
        "operationId": "CreateNodes",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/restCreateNodesRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restNodesCollection"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Create dirs or empty files inside the tree",
        "tags": [
          "TreeService"
        ]
      }
    },
    "/tree/delete": {
      "post": {
        "operationId": "DeleteNodes",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/restDeleteNodesRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restDeleteNodesResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Handle nodes deletion",
        "tags": [
          "TreeService"
        ]
      }
    },
    "/tree/restore": {
      "post": {
        "operationId": "RestoreNodes",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/restRestoreNodesRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restRestoreNodesResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Handle nodes restoration from recycle bin",
        "tags": [
          "TreeService"
        ]
      }
    },
    "/tree/selection": {
      "post": {
        "operationId": "CreateSelection",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/restCreateSelectionRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restCreateSelectionResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Create a temporary selection for further action (namely download)",
        "tags": [
          "TreeService"
        ]
      }
    },
    "/tree/stat/{Node}": {
      "get": {
        "operationId": "HeadNode",
        "parameters": [
          {
            "description": "The node to state",
            "in": "path",
            "name": "Node",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restHeadNodeResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Return node meta without the node content itself",
        "tags": [
          "TreeService"
        ]
      }
    },
    "/tree/stats": {
      "post": {
        "operationId": "BulkStatNodes",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/restGetBulkMetaRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restBulkMetaResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "List meta for a list of nodes, or a full directory using /path/* syntax",
        "tags": [
          "TreeService"
        ]
      }
    },
    "/update": {
      "post": {
        "operationId": "UpdateRequired",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/updateUpdateRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/updateUpdateResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Check the remote server to see if there are available binaries",
        "tags": [
          "UpdateService"
        ]
      }
    },
    "/update/{TargetVersion}": {
      "patch": {
        "operationId": "ApplyUpdate",
        "parameters": [
          {
            "description": "Version of the target binary",
            "in": "path",
            "name": "TargetVersion",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "properties": {
                "PackageName": {
                  "title": "Name of the package if it's not the same as the current binary",
                  "type": "string"
                }
              },
              "title": "UpdateApplyUpdateRequest",
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/updateApplyUpdateResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Apply an update to a given version",
        "tags": [
          "UpdateService"
        ]
      }
    },
    "/user": {
      "post": {
        "operationId": "SearchUsers",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/restSearchUserRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restUsersCollection"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "List/Search users",
        "tags": [
          "UserService"
        ]
      }
    },
    "/user-meta/bookmarks": {
      "post": {
        "operationId": "UserBookmarks",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/restUserBookmarksRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restBulkMetaResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Special API for Bookmarks, will load userMeta and the associated nodes, and return\nas a node list",
        "tags": [
          "UserMetaService"
        ]
      }
    },
    "/user-meta/namespace": {
      "get": {
        "operationId": "ListUserMetaNamespace",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restUserMetaNamespaceCollection"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "List defined meta namespaces",
        "tags": [
          "UserMetaService"
        ]
      },
      "put": {
        "operationId": "UpdateUserMetaNamespace",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/idmUpdateUserMetaNamespaceRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/idmUpdateUserMetaNamespaceResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Admin: update namespaces",
        "tags": [
          "UserMetaService"
        ]
      }
    },
    "/user-meta/search": {
      "post": {
        "operationId": "SearchUserMeta",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/idmSearchUserMetaRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restUserMetaCollection"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Search a list of meta by node Id or by User id and by namespace",
        "tags": [
          "UserMetaService"
        ]
      }
    },
    "/user-meta/tags/{Namespace}": {
      "get": {
        "operationId": "ListUserMetaTags",
        "parameters": [
          {
            "description": "List user meta tags for this namespace",
            "in": "path",
            "name": "Namespace",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restListUserMetaTagsResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "List Tags for a given namespace",
        "tags": [
          "UserMetaService"
        ]
      },
      "post": {
        "operationId": "PutUserMetaTag",
        "parameters": [
          {
            "description": "Add a tag value for this namespace",
            "in": "path",
            "name": "Namespace",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "properties": {
                "Tag": {
                  "title": "New tag value",
                  "type": "string"
                }
              },
              "title": "RestPutUserMetaTagRequest",
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restPutUserMetaTagResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Add a new value to Tags for a given namespace",
        "tags": [
          "UserMetaService"
        ]
      }
    },
    "/user-meta/tags/{Namespace}/{Tags}": {
      "delete": {
        "operationId": "DeleteUserMetaTags",
        "parameters": [
          {
            "description": "Delete tags from this namespace",
            "in": "path",
            "name": "Namespace",
            "required": true,
            "type": "string"
          },
          {
            "description": "Delete this tag",
            "in": "path",
            "name": "Tags",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restDeleteUserMetaTagsResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Delete one or all tags for a given namespace (use * for all tags)",
        "tags": [
          "UserMetaService"
        ]
      }
    },
    "/user-meta/update": {
      "put": {
        "operationId": "UpdateUserMeta",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/idmUpdateUserMetaRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/idmUpdateUserMetaResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Update/delete user meta",
        "tags": [
          "UserMetaService"
        ]
      }
    },
    "/user/roles/{Login}": {
      "put": {
        "operationId": "PutRoles",
        "parameters": [
          {
            "description": "User login is used to connect, field is empty for groups",
            "in": "path",
            "name": "Login",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "properties": {
                "Attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "title": "A free list of attributes",
                  "type": "object"
                },
                "GroupLabel": {
                  "title": "Label of the group, field is empty for users",
                  "type": "string"
                },
                "GroupPath": {
                  "title": "Path to the parent group",
                  "type": "string"
                },
                "IsGroup": {
                  "title": "Whether this object is a group or a user",
                  "type": "boolean"
                },
                "LastConnected": {
                  "format": "int32",
                  "title": "Last successful connection timestamp",
                  "type": "integer"
                },
                "OldPassword": {
                  "title": "OldPassword must be set when a user updates her own password",
                  "type": "string"
                },
                "Password": {
                  "title": "Password can be passed to be updated (but never read back), field is empty for groups",
                  "type": "string"
                },
                "Policies": {
                  "items": {
                    "$ref": "#/definitions/serviceResourcePolicy"
                  },
                  "title": "Policies securing access to this user",
                  "type": "array"
                },
                "PoliciesContextEditable": {
                  "description": "Context-resolved to quickly check if user is editable or not.",
                  "type": "boolean"
                },
                "Roles": {
                  "items": {
                    "$ref": "#/definitions/idmRole"
                  },
                  "title": "List of roles applied to this user or group",
                  "type": "array"
                },
                "Uuid": {
                  "title": "User unique identifier",
                  "type": "string"
                }
              },
              "title": "User can represent either a User or a Group",
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/idmUser"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Just save a user roles, without other datas",
        "tags": [
          "UserService"
        ]
      }
    },
    "/user/{Login}": {
      "delete": {
        "operationId": "DeleteUser",
        "parameters": [
          {
            "description": "User login is used to connect, field is empty for groups",
            "in": "path",
            "name": "Login",
            "required": true,
            "type": "string"
          },
          {
            "description": "User unique identifier",
            "in": "query",
            "name": "Uuid",
            "required": false,
            "type": "string"
          },
          {
            "description": "Path to the parent group",
            "in": "query",
            "name": "GroupPath",
            "required": false,
            "type": "string"
          },
          {
            "description": "Password can be passed to be updated (but never read back), field is empty for groups",
            "in": "query",
            "name": "Password",
            "required": false,
            "type": "string"
          },
          {
            "description": "OldPassword must be set when a user updates her own password",
            "in": "query",
            "name": "OldPassword",
            "required": false,
            "type": "string"
          },
          {
            "description": "Whether this object is a group or a user",
            "in": "query",
            "name": "IsGroup",
            "required": false,
            "type": "boolean"
          },
          {
            "description": "Label of the group, field is empty for users",
            "in": "query",
            "name": "GroupLabel",
            "required": false,
            "type": "string"
          },
          {
            "description": "Last successful connection timestamp",
            "format": "int32",
            "in": "query",
            "name": "LastConnected",
            "required": false,
            "type": "integer"
          },
          {
            "description": "Context-resolved to quickly check if user is editable or not.",
            "in": "query",
            "name": "PoliciesContextEditable",
            "required": false,
            "type": "boolean"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restDeleteResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Delete a user",
        "tags": [
          "UserService"
        ]
      },
      "get": {
        "operationId": "GetUser",
        "parameters": [
          {
            "description": "User login is used to connect, field is empty for groups",
            "in": "path",
            "name": "Login",
            "required": true,
            "type": "string"
          },
          {
            "description": "User unique identifier",
            "in": "query",
            "name": "Uuid",
            "required": false,
            "type": "string"
          },
          {
            "description": "Path to the parent group",
            "in": "query",
            "name": "GroupPath",
            "required": false,
            "type": "string"
          },
          {
            "description": "Password can be passed to be updated (but never read back), field is empty for groups",
            "in": "query",
            "name": "Password",
            "required": false,
            "type": "string"
          },
          {
            "description": "OldPassword must be set when a user updates her own password",
            "in": "query",
            "name": "OldPassword",
            "required": false,
            "type": "string"
          },
          {
            "description": "Whether this object is a group or a user",
            "in": "query",
            "name": "IsGroup",
            "required": false,
            "type": "boolean"
          },
          {
            "description": "Label of the group, field is empty for users",
            "in": "query",
            "name": "GroupLabel",
            "required": false,
            "type": "string"
          },
          {
            "description": "Last successful connection timestamp",
            "format": "int32",
            "in": "query",
            "name": "LastConnected",
            "required": false,
            "type": "integer"
          },
          {
            "description": "Context-resolved to quickly check if user is editable or not.",
            "in": "query",
            "name": "PoliciesContextEditable",
            "required": false,
            "type": "boolean"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/idmUser"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Get a user by login",
        "tags": [
          "UserService"
        ]
      },
      "put": {
        "operationId": "PutUser",
        "parameters": [
          {
            "description": "User login is used to connect, field is empty for groups",
            "in": "path",
            "name": "Login",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "properties": {
                "Attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "title": "A free list of attributes",
                  "type": "object"
                },
                "GroupLabel": {
                  "title": "Label of the group, field is empty for users",
                  "type": "string"
                },
                "GroupPath": {
                  "title": "Path to the parent group",
                  "type": "string"
                },
                "IsGroup": {
                  "title": "Whether this object is a group or a user",
                  "type": "boolean"
                },
                "LastConnected": {
                  "format": "int32",
                  "title": "Last successful connection timestamp",
                  "type": "integer"
                },
                "OldPassword": {
                  "title": "OldPassword must be set when a user updates her own password",
                  "type": "string"
                },
                "Password": {
                  "title": "Password can be passed to be updated (but never read back), field is empty for groups",
                  "type": "string"
                },
                "Policies": {
                  "items": {
                    "$ref": "#/definitions/serviceResourcePolicy"
                  },
                  "title": "Policies securing access to this user",
                  "type": "array"
                },
                "PoliciesContextEditable": {
                  "description": "Context-resolved to quickly check if user is editable or not.",
                  "type": "boolean"
                },
                "Roles": {
                  "items": {
                    "$ref": "#/definitions/idmRole"
                  },
                  "title": "List of roles applied to this user or group",
                  "type": "array"
                },
                "Uuid": {
                  "title": "User unique identifier",
                  "type": "string"
                }
              },
              "title": "User can represent either a User or a Group",
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/idmUser"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Create or update a user",
        "tags": [
          "UserService"
        ]
      }
    },
    "/workspace": {
      "post": {
        "operationId": "SearchWorkspaces",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/restSearchWorkspaceRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restWorkspaceCollection"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Search workspaces on certain keys",
        "tags": [
          "WorkspaceService"
        ]
      }
    },
    "/workspace/{Slug}": {
      "delete": {
        "operationId": "DeleteWorkspace",
        "parameters": [
          {
            "description": "Slug is an url-compatible form of the workspace label, or can be freely modified (max length 500)",
            "in": "path",
            "name": "Slug",
            "required": true,
            "type": "string"
          },
          {
            "description": "Unique identifier of the workspace",
            "in": "query",
            "name": "UUID",
            "required": false,
            "type": "string"
          },
          {
            "description": "Label of the workspace (max length 500)",
            "in": "query",
            "name": "Label",
            "required": false,
            "type": "string"
          },
          {
            "description": "Description of the workspace (max length 1000)",
            "in": "query",
            "name": "Description",
            "required": false,
            "type": "string"
          },
          {
            "default": "ANY",
            "description": "Scope can be ADMIN, ROOM (=CELL) or LINK",
            "enum": [
              "ANY",
              "ADMIN",
              "ROOM",
              "LINK"
            ],
            "in": "query",
            "name": "Scope",
            "required": false,
            "type": "string"
          },
          {
            "description": "Last modification time",
            "format": "int32",
            "in": "query",
            "name": "LastUpdated",
            "required": false,
            "type": "integer"
          },
          {
            "description": "JSON-encoded list of attributes",
            "in": "query",
            "name": "Attributes",
            "required": false,
            "type": "string"
          },
          {
            "collectionFormat": "multi",
            "description": "Quick list of the RootNodes uuids",
            "in": "query",
            "items": {
              "type": "string"
            },
            "name": "RootUUIDs",
            "required": false,
            "type": "array"
          },
          {
            "description": "Context-resolved to quickly check if workspace is editable or not",
            "in": "query",
            "name": "PoliciesContextEditable",
            "required": false,
            "type": "boolean"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/restDeleteResponse"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Delete an existing workspace",
        "tags": [
          "WorkspaceService"
        ]
      },
      "put": {
        "operationId": "PutWorkspace",
        "parameters": [
          {
            "description": "Slug is an url-compatible form of the workspace label, or can be freely modified (max length 500)",
            "in": "path",
            "name": "Slug",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "description": "A Workspace is composed of a set of nodes UUIDs and is used to provide accesses to the tree via ACLs.",
              "properties": {
                "Attributes": {
                  "title": "JSON-encoded list of attributes",
                  "type": "string"
                },
                "Description": {
                  "title": "Description of the workspace (max length 1000)",
                  "type": "string"
                },
                "Label": {
                  "title": "Label of the workspace (max length 500)",
                  "type": "string"
                },
                "LastUpdated": {
                  "format": "int32",
                  "title": "Last modification time",
                  "type": "integer"
                },
                "Policies": {
                  "items": {
                    "$ref": "#/definitions/serviceResourcePolicy"
                  },
                  "title": "Policies for securing access",
                  "type": "array"
                },
                "PoliciesContextEditable": {
                  "title": "Context-resolved to quickly check if workspace is editable or not",
                  "type": "boolean"
                },
                "RootNodes": {
                  "additionalProperties": {
                    "$ref": "#/definitions/treeNode"
                  },
                  "title": "List of the Root Nodes in the tree that compose this workspace",
                  "type": "object"
                },
                "RootUUIDs": {
                  "items": {
                    "type": "string"
                  },
                  "title": "Quick list of the RootNodes uuids",
                  "type": "array"
                },
                "Scope": {
                  "$ref": "#/definitions/idmWorkspaceScope",
                  "title": "Scope can be ADMIN, ROOM (=CELL) or LINK"
                },
                "UUID": {
                  "title": "Unique identifier of the workspace",
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/idmWorkspace"
            }
          },
          "401": {
            "description": "User is not authenticated",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "403": {
            "description": "User has no permission to access this particular resource",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "404": {
            "description": "Resource does not exist in the system",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          },
          "500": {
            "description": "An internal error occurred in the backend",
            "schema": {
              "$ref": "#/definitions/restError"
            }
          }
        },
        "summary": "Create or update a workspace",
        "tags": [
          "WorkspaceService"
        ]
      }
    }
  },
  "produces": [
    "application/json"
  ],
  "schemes": [
    "http",
    "https",
    "wss"
  ],
  "swagger": "2.0",
  "tags": [
    {
      "name": "ConfigService"
    },
    {
      "name": "RoleService"
    },
    {
      "name": "UserService"
    },
    {
      "name": "ACLService"
    },
    {
      "name": "PolicyService"
    },
    {
      "name": "WorkspaceService"
    },
    {
      "name": "ActivityService"
    },
    {
      "name": "LogService"
    },
    {
      "name": "TokenService"
    },
    {
      "name": "MailerService"
    },
    {
      "name": "SearchService"
    },
    {
      "name": "TreeService"
    },
    {
      "name": "TemplatesService"
    },
    {
      "name": "MetaService"
    },
    {
      "name": "UserMetaService"
    },
    {
      "name": "JobsService"
    },
    {
      "name": "AdminTreeService"
    },
    {
      "name": "GraphService"
    },
    {
      "name": "ShareService"
    },
    {
      "name": "InstallService"
    },
    {
      "name": "UpdateService"
    },
    {
      "name": "FrontendService"
    }
  ]
}