NetExplorer - API REST

Ce document présente les fonctionnalités exposées par l'API NetExplorer.
Celle-ci est basée sur l'architecture REST, reposant sur le protocole HTTP, permettant ainsi aux développeurs de tirer pleinement parti de leur plateforme de stockage NetExplorer, et mettre au point une solution logicielle répondant aux besoins de leur entreprise.

L'API est accessible en ajoutant /api à l'adresse de votre plateforme.
Par exemple, pour une plateforme accessible par l'adresse https://exemple.fr/, l'authentification d'un utilisateur se fera via l'url suivante: https://exemple.fr/api/auth


En-têtes HTTP utilisés pour les requêtes:

As Id de l'utilisateur pour une requête "en tant que", si disponible (dépend de l'utilisateur connecté, et des méthodes appelées).
Content-Length Taille en octet du contenu envoyé, si applicable.
Content-Type application/json (défaut) ou text/xml
Détermine le format du contenu envoyé par le client au serveur (si la requête nécéssite l'envoi de données).
Token Contient le token d'authentification de l'utilisateur.
Il s'obtient après avoir authentifié l'utilisateur. Certaines méthodes, dont celles liés à l'authentification, ne nécéssiteront pas de token.

Info Consultez la section Authentification & gestion des comptes pour savoir comment obtenir un token.

Attention ! Comme expliqué plus haut, le token est nécéssaire quelque soit la requête, sauf exceptions.


En-têtes HTTP utilisés pour les réponses:

Content-Length Taille en octet du contenu retourné.
Content-Type application/json
Détermine le format du contenu qui est retourné par le serveur.

Info Les codes HTTP standards sont à prendre en compte lorsque le serveur répond aux requêtes. Par exemple, un code de retour 401 Unauthorized signifie que le token d'authentification n'a pas été fourni ou que celui-ci n'est plus valide et qu'un nouveau doit être demandé.

Note Les structures présentées ci-dessous sont affichées sous la forme d'un objet JSON. Il s'agit du seul format proposé par l'API.
Pour l'exploiter correctement, certains points sont à savoir:

  • Les dates sont toujours au format ISO 8601.
  • Les identifiants uniques des utilisateurs/groupes sont des chaines de caractères (string) et non pas des entiers numériques (int).
  • Les tailles des fichiers/dossiers sont toujours indiquées en octets, et doivent être considérées comme des long.

Structure d'un dossier


{ "id": 2, "parent_id": 1, // Identifiant unique du dossier parent "name": "Documents", "creation": "2013-12-28T10:45:32+00:00", "modification": "2013-12-28T10:45:32+00:00", "can_read": true, "can_download": true, "can_write": true, "can_edit": true, "can_delete": true, "can_share": true, // Autorise le partage (cf. Gestion des partages) "owner": "Jean DUPOND", "owner_id": "3", // Informations présentes en mode détails uniquement "can_admin_rights": false, // Est-ce que l'utilisateur peut administrer les droits de ce dossier "can_admin_alerts": false, // Est-ce que l'utilisateur peut administrer les alertes de ce dossier "self_alert": null, // Est-ce que l'utilisateur a une alerte sur le dossier "nb_participants": 4, // Nombre de participants invités sur le dossier. Valeur présente uniquement si > 0 "nb_annotations": 1, // Valeur présente uniquement si > 0 "nb_unread_annotations": 1, // Valeur présente uniquement si > 0 "size": 100, // Taille en octets "nb_folders": 2, // Nombre total de sous-dossiers (totalité de l'arborescence) "nb_files": 2, // Nombre total de fichiers (totalité de l'arborescence) "quota": 0, // 0 : illimité, -1 dossier parent, sinon un nombre d'octets "purge_frequency": 0, // 0 : désactivé, sinon un nombre de jours "path": "/1/4/22/", // Chemin d'accès au dossier, composé des identifiants uniques des dossiers parents // Contenu du dossier "content": { "folders": [ { "id": 2, "name": "Dossier", ... "owner": "Jean DUPOND" } ], "files": [ { "id" : 3, "name": "Fichier", ... } ] } }

Structure d'un fichier


{ "id": 3, "parent_id": 1, // Identifiant unique du dossier parent "name": "fichier.txt", "size": 1024, "creation": "2013-12-28T10:45:32+00:00", "modification": "2013-12-28T10:45:32+00:00", "can_download": true, "can_write": true, "can_edit": true, "can_delete": true, "can_share": true, "owner": "Jean DUPOND", "owner_id": "3", "hash": "d41d8cd98f00b204e9800998ecf8427e", "lock": { // Structure d'un verrou ou null si le fichier n'est pas locké } // Informations présentes en mode détails uniquement "nb_versions": 2, // Valeur présente uniquement si > 1 "nb_annotations": 1, // Valeur présente uniquement si > 0 "nb_unread_annotations": 1, // Valeur présente uniquement si > 0 // Informations présentes en mode détails + meta "meta": null, // Si aucune méta n'est présente sur le fichier // -- OU -- "meta": { // Si des metas sont présentes sur le fichier "author": "Luc KAPLAN", "creator": "LibreOffice", // Logiciel à l'origine du document "date": "Sun Sep 1 00:00:00 2013", "keywords": "Document test", "pages": 42, // Nombre total de pages dans le document "producer": "GhostScript", // Logiciel ayant produit le fichier final "subject": "Test DOC LibreOffice", "title": "Test" }, // Informations présente uniquement si une miniature est disponible pour le fichier "thumb_token": "2uYPfBWitiof+E/ubQj1jYRsmKNRqbvGDmHIiowNcBVmzic5zxkXTBY1KUiI/QNTHAtwBtEi5ZnPIWqYrSmPz8pPYz+YW0lQNDXiIoxsf+8KOaDJt+XcTP8/kaBpB8RejZEcQsgrQEZCFh5W2SOXbMs0Y8uVRJUAfDiTWfg=", // Token d'accès à la miniature "file_type": "image", // Indique si le fichier est une image (jpg,bmp,gif,png,psd,ai ou tiff), ou un document. // Token de téléchargement "download_token": "RQ2gNV8XFOenlJkCRE0ZC8Sw1b+we9VP8W5BrpKq+lc0r/stQd9nOHiXEFOOIecB8/xncI93kdADZj2GQt7Y+aiIfvOpy1olKY81tOSJDFV16QFSWzPYZSsUlFvo0eK8tp1+M2AHjBn0LJz9/xZdVpDkJ/xp74XJ7EdwIuLKNbw=293eaa53512dcfe545458349a19530ae", "path": "/1/4/22/" // Chemin d'accès au dossier, composé des identifiants uniques des dossiers parents }

Structure d'un élément de la corbeille


{ "id": 11567, "owner": "Bob Jensen", "owner_id": "22", "deletion": "2012-12-28T13:42:38+00:00", // Date de suppression "modification": "2012-10-10T18:10:39+00:00", "is_file": true, // fichier ou dossier ? "name": "fichier.txt", "size": 0, // Ces informations ne sont fournies qur pour un élément de type dossier "nb_folders": 2, "nb_files": 14 }

Structure d'une annotation


{ "id": 7, "target_id": 14, // Identifiant unique du fichier ou du dossier "target_type": "file", // Le type peut être "file" ou "folder" "owner": "Bob Jensen", "owner_id": "22", "date": "2013-12-28T10:45:32+00:00", "text": "Mon annotation", "conversation": null // Si cette annotation est une réponse liée à une autre annotation, l'id de l'annotation principale sera indiquée ici }

Structure d'un verrou


Attention ! La présence d'un verrou ne veut pas dire que l'accès au fichier est impossible !
En effet, l'utilisateur peut très bien être propriétaire du verrou et a donc le droit de lire et écrire dans le fichier.
De même, un utilisateur étranger au verrou peut avoir un accès en lecture au fichier (en fonction de la configuration de la plateforme).


{ "file": 433, "owner": "Lea Jackson", "owner_id": "47", "locked": false, // Indique si le fichier est verouillé "writeable": true, // Même si le fichier est verouillé, peut-on écrire dedans ? "readable": true // Même si le fichier est verouillé, peut-on le lire ? }

Structure d'un partage


{ "id": 56629, "folder_id": 36948, // Identifiant unique du dossier "target_id": "4673", // Identifiant unique de l'utilisateur avec lequel on partage "target": "albert.dupont", "browse": true, // Droit de naviguer dans le dossier "read": true, // Droit de d'afficher et de lire les fichiers du dossier "download": true, // Droit de de télécharger les fichiers du dossier "write": false, // Droit d'ajouter des fichiers dans le dossier "edit": false, // Droit de modifier le contenu d'un fichier du dossier "delete": false, // Droit de supprimer le dossier ou un fichier contenu dans le dossier "expiration_date": null, // Date d'expiration du partage "owner": "jean.paul", // Propriétaire du partage = utilisateur interne à l'origine du partage "owner_id": "4650", "notify": true, // Les notifications de mises à jour sont elles actives pour l'utilisateur ? "target_email": null, // Email de l'utilisateur avec qui on a partagé (si existant) "external": true, // Partage avec un utilisateur interne ou un utilisateur externe (= partage par lien) ? "auth_key": "NLvI6zv4Ds[ ... ]ee91ea3e38" // Clé d'authentification pour l'accès au dossier (cf. Authentification par clé) }

Structure d'un droit


{ "id": 30, "folder_id": 28, "target_id": "7", "target": "James Turner", "target_isgroup": false, "browse": true, // Droit de naviguer dans le dossier "read": true, // Droit de d'afficher et de lire les fichiers du dossier "download": true, // Droit de de télécharger les fichiers du dossier "write": false, // Droit d'ajouter des fichiers dans le dossier "edit": false, // Droit de modifier le contenu d'un fichier du dossier "delete": false, // Droit de supprimer le dossier ou un fichier contenu dans le dossier "share": false // Droit de partager un dossier }

Structure d'une alerte


{ "id": 30, "folder_id": 28, "target_id": "7", "target": "James Turner", "target_isgroup": false, "active": true, // Indique si l'alerte est active "email": 10, // Id de l'email rattaché à l'alerte "expiration_date": null, // Date d'expiration de l'alerte (utilisé dans les partages) "owner": null, // Login du propriétaire de l'alerte = personne ayant appliqué l'alerte "owner_id": null // Identifiant du propriétaire de l'alerte = personne ayant appliqué l'alerte }

Structure d'un utilisateur


{ "id": "1", "lastname": "Smith", "firstname": "John", "login": "smithj", // Identifiant de connexion de l'utilisateur "email": "john.smith@netexplorer.fr, email.secondaire@monmail.com", // Une ou plusieurs adresses, séparées par des virgules (,) // Répertoires d'accueil = tous les répertoires racines (répertoires où l'utilisateur a accès et dont le dossier parent est inacessible). // TOUJOURS se baser sur roots pour construire une arborescence. "roots": [ 1, 22228, 28421 ], "organization": "NetExplorer", "phone": "05.01.02.03.04, 06.52.52.52.52", // Un ou plusieurs numéros, séparées par des virgules (,) "active": true, "language": "fr", "quota": 10, // Valeur en octet ou null pour illimité "expire": "2013-01-08T00:00:00+00:00", "ldap": false, "can_edit_options": false, // Est-ce que l'utilisateur peut modifier ses options ? (PUT /account) "can_admin": false, // Est-ce que l'utilisateur est administrateur global ? "can_admin_users": false, // Est-ce que l'utilisateur est délégué utilisateur d'un groupe ? "groups": [ // Liste de groupes, sans les membres { "id": "1", "login": "Groupe BSNET", "ldap": false }, ... ] }

Structure d'un groupe


{ "id": "1", // Identifiant unique du groupe "login": "Groupe BSNET", "ldap": false, "members": [ // Liste de membres { "id": "1", "lastname": "Smith", ... }, ... ] }

Structure d'une option


{ "target_id": "45", "target": "Manuel STUART", "target_isgroup": false, "ips": null, // tableau contenant la liste des adresses IP autorisées, ou null si aucun filtrage n'a lieu sur les IP. ATTENTION : un tableau vide interdit TOUTES les IPs, il n'est donc plus possible à l'utilisateur de se connecter. "days": // Jours de la semaine autorisés [ "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday" ], "hour_start": null, // Heure de début, null ou au format "HH:MM:SS" "hour_end": null, // Heure de fin, null ou au format "HH:MM:SS" "can_netsync": true, // Permet ou non l'utilisation de NetSync "inherited": true // Précise si l'option est appliquée directement à l'utilisateur, ou si elle est héritée depuis l'un de ses groupes, ou depuis le groupe racine "Tout le monde" si aucun groupe ne contient d'option spécifique (afin de prendre en compte les options par défaut) }

Structure d'un délégué


{ "id": 1, "user": "jsmith", "user_id": "4", // Identifiant unique de l'utilisateur délégué "group_id": "5", // Groupe dont il sera le délégué "users": true, // Permet au délégué de créer des utilisateurs au sein du groupe et de les gérer "security": true, // Permet de gérer les droits pour le groupe délégué ou ses utilisateurs "alerts": true // Comme pour les droits mais appliqué aux alertes }

Structure d'un email


{ "id": "1", "object": "Sujet de mon email", "content": "Contenu de mon mail (HTML)", "type": "EM_TE_DEFAUT", // Type de l'email EM_TE_DEFAUT : email par défaut, EM_TE_ALERT : alerte email personnalisée, EM_TE_SENDED : email envoyé manuellement, EM_TE_TOSEND : email à envoyer (permet de sauvegarder un email par exemple) // Champs applicables uniquement aux alertes de type EM_TE_ALERT, EM_TE_SENDED et EM_TE_TOSEND "owner": "Jean DUPOND", "owner_id": 3, // Champs applicables uniquement aux alertes de type EM_TE_SENDED et EM_TE_TOSEND "from": "mail@domain.com", "to": "mail@domain.com,mail@domain.com", "bcc": "mail@domain.com,mail@domain.com", "last_send": "2013-12-28T10:45:32+00:00" // Date du dernier envoi, peut être null si l'email n'a jamais été envoyé }

Structure d'un lien de téléchargement direct


{ "id": 1, "key": "123456", "file_id": 30, "file": "MonFichier.bin", "file_size": 1024, "is_valid": true, // Indique si le lien direct est valide (téléchargeable) ou non (date de validité OK + nombre de téléchargemants OK) "expiration_date": "2012-12-21T00:00:00+00:00", "password_protected": null, // Ou clé du mot de passe en string (indique si le lien direct est protégé par mot de passe, ou donne une clé permettant d'identifier les mots de passes identiques) "remaining_downloads": 5, // Informations présentes uniquement si une miniature est disponible pour le fichier "thumb_token": "2uYPfBWitiof+E/ubQj1jYRsmKNRqbvGDmHIiowNcBVmzic5zxkXTBY1KUiI/QNTHAtwBtEi5ZnPIWqYrSmPz8pPYz+YW0lQNDXiIoxsf+8KOaDJt+XcTP8/kaBpB8RejZEcQsgrQEZCFh5W2SOXbMs0Y8uVRJUAfDiTWfg=", // token d'accès à la miniature "file_type": "image", // indique si le fichier est une image (jpeg,bmp,gif,png,psd,ai ou tiff), ou un document. // Les informations ci-dessous ne sont présentes que pour les propriétaires du lien direct ou les administrateurs "owner": "Jack DALTON", "owner_id": "3", "nb_downloads": 0, "max_downloads": 5, "notify": true // Recevoir un accusé de réception au téléchargement du fichier (l'accusé est envoyé au "owner" du lien) }

Structure d'un lien d'envoi direct


{ "id": 1, "key": "123456", "folder_id": 30, "is_valid": true, // Indique si le lien d'envoi direct est valide ou non (date de validité OK + dossier de destination OK) "expiration_date": "2012-12-21T00:00:00+00:00", // Les informations ci-dessous ne sont présentes que pour les propriétaires du lien d'envoi direct ou les administrateurs "owner": "Erica JONES", "owner_id": "3", "folder": "Dossier Dépôt" // Nom du dossier }

Structure d'un évènement du journal


{ "id": "33837", "user_id": "2", "user": "Bob Jensen", "date": "2013-09-17T11:31:30+00:00", "message": "", "ip": "192.168.0.31", "user_agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0", "type": "ADMLLOG_DELETE", "statut": "ADMLLOG_OK", "object_id": 11007, "object": "Documents/test", "object_type": "Dossier" }

/auth

Connecte un utilisateur et récupère son token d'authentification.

Info Cette fonction ne nécéssite pas de token.

Contenu à envoyer
{ // Méthode 1 - Identifiant + Mot de passe "user": "smithj", "password": "0123456789ABCDEFFEDCBA98765432100123456789" // -- OU -- // Méthode 2 - Authentification par auth_key "auth_key": "NLvI6zv4DsWYcUyP8m3sUHDbagKXV[ ... ]/RSVnPc96574102f5be8b5cfd54dee91ea3e38" }
Contenu retourné
{ "token": "0123456789ABCDEFFEDCBA9876543210", // Token à conserver "auth_key": "NLvI6zv4DsWYcUyP8m3sUHDbagKXV[ ... ]/RSVnPc96574102f5be8b5cfd54dee91ea3e38" }

Si la auth_key est activée pour le groupe de l'utilisateur (voir configuration NetExplorer), celle-ci est retournée. Dans le cas contraire ce champ vaut null.
Cette clé peut servir à authentifier un utilisateur sur l'interface web via l'adresse : https://www.domaine.com/login/<auth_key>, où <auth_key> est à remplacer par la auth_key, url-encodée 2 fois.

/auth

Déconnecte un utilisateur et invalide son token.

/account

Récupère les informations du compte de l'utilisateur connecté.
Contenu retourné Retourne un objet user représentant l'utilisateur cible.

/account

Modifie les informations du compte de l'utilisateur connecté. Attention : méthode non disponible pour un compte externe à NetExplorer (ex : compte Active Directory).
Contenu à envoyer

Afin d'alléger le traitement et réduire les risques d'erreurs, vous pouvez ne préciser que les propriétés qui vous interesse.
Les propriétés non précisées ne seront pas modifiées.

{ // Pour changer le mot de passe, l'utilisateur doit fournir l'ancien mot de passe "old_password": "0123456789ABCDEFFEDCBA98765432100123456789", "new_password": "0123456789ABCDEFFEDCBA98765432100123456789", "lastname": "Smith", "firstname": "John", "email": "smithj@domain.com", "phone": "+33 5.01.02.03.04", "organization": "NetExplorer", "language": "en" }
Contenu retourné Retourne un objet user représentant l'utilisateur cible.

/reset_password

Réinitialise le mot de passe d'un utilisateur et envoie le nouveau mot de passe par email (fonction "mot de passe oublié").

Info Cette fonction ne nécéssite pas de token.

Contenu à envoyer
{ // Identifiant de connexion ou adresse email du compte. // Note : si une adresse email est partagée entre plusieurs comptes, elle ne peut être utilisée pour réinitialiser le mot de passe. "login_or_email": "smithj" }

/folder/(folderId)

Récupère les informations d'un dossier (et ses sous dossiers si depth précisé).
Paramètres
folderId Identifiant du dossier à récupérer.
Paramètres GET
depth Profondeur d'exploration du dossier. Par défaut, vaut 0 et ne renvoie que les informations du dossier cible. Définir à -1 pour explorer toute l'arborescence à partir de ce dossier.
full Permet d'obtenir toutes les informations sur le dossier. Par défaut vaut false et peut être défini à true pour obtenir plus d'informations (nombre de versions, nombre de annotations lus/non lus).
recursive Retourne tous les sous dossiers de manière récursive, sans arborescence structurée (dans ce cas la profondeur depth vaut 0).
Contenu retourné Retourne un objet folder représentant le dossier demandé.

/folder/[folderId]

Recherche dans le contenu d'un dossier.
Paramètres
folderId Identifiant du dossier à récupérer. Par défaut, la recherche commence à partir du dossier 1.
Paramètres GET
depth Profondeur d'exploration du dossier. Par défaut, vaut 0 et ne renvoie que les informations du dossier cible. Définir à -1 pour explorer toute l'arborescence à partir de ce dossier.
full Permet d'obtenir toutes les informations sur le dossier. Par défaut vaut 0 et peut être défini à 1 pour obtenir plus d'informations (nombre de versions, nombre de annotations lus/non lus).
recursive Retourne tous les sous dossiers de manière récursive, sans arborescence structurée (dans ce cas la profondeur depth vaut 0). Peut valoir 1 ou 0.
search_label Mot clé de recherche (il est important de préciser où rechercher en précisant les 3 paramètres ci-dessous).
in_name Rechercher dans le nom des fichiers et dossiers. Peut valoir 1 ou 0.
in_annotations Rechercher dans les annotations. Peut valoir 1 ou 0.
in_content Rechercher dans le contenu des fichiers indéxés. Peut valoir 1 ou 0.
creation_start Rechercher les fichiers créés après cette date.
creation_end Rechercher les fichiers créés avant cette date.
modification_start Rechercher les fichiers modifiés après cette date.
modification_end Rechercher les fichiers modifiés avant cette date.
size_start Rechercher les fichiers dont la taille est supérieur à cette taille.
size_end Rechercher les fichiers dont la taille est inférieure à cette taille.
Contenu retourné Retourne un objet folder représentant le dossier demandé.

/folder

Crée un nouveau dossier.
Paramètres GET
full Permet d'obtenir toutes les informations sur le dossier dans la réponse. Peut valoir 1 ou 0.
copy Identifiant du dossier source à dupliquer. Si ce paramètre est spécifié, un nouveau dossier est créé en copiant celui passé en paramètre.
Note La copie est récursive.
Contenu à envoyer
{ "name": "Documents", "parent_id": 20 // Identifiant unique du dossier parent }
Contenu retourné Retourne un objet folder représentant le dossier nouvellement créé.

/folder/(folderId)

Modifie les informations sur un dossier existant.
Paramètres
folderId Identifiant du dossier cible.
Paramètres GET
full Permet d'obtenir toutes les informations sur le dossier dans la réponse.
recursive Si cette variable est précisée à true, les paramètres concernés sont appliqués en récursif.
Contenu à envoyer

Afin d'alléger le traitement et réduire les risques d'erreurs, vous pouvez ne préciser que les propriétés qui vous interesse.
Les propriétés non précisées ne seront pas modifiées.

{ "name": "Utilisateurs", // Modifier le dossier parent est équivalent au déplacement de ce dossier dans son nouveau parent. "parent_id": 1, // Ces informations ne sont modifiables que par un administrateur "quota": 200, "purge_frequency": 0 // Ce paramètre peut être appliqué de manière récursive }
Contenu retourné Retourne un objet folder représentant le dossier après que les modifications aient été enregistrées.

/folder/(folderId)

Supprime un dossier.
Paramètres
folderId Identifiant du dossier à supprimer.
Paramètres GET
trash Ce paramètre permet de définir si oui ou non le dossier doit être placé dans la corbeille. Par défaut vaut 1.
Note le comportement de cette option peut être influencé par la configuration globale de votre plateforme.
Contenu retourné

Codes de retour possibles

Code 200 Le dossier est placé dans la corbeille, un élément trash est retourné.
Code 204 Aucun contenu retourné : suppression définitive.

/file/(fileId)

Récupère les informations d'un fichier.
Paramètres
fileId Identifiant unique du fichier recherché.
Paramètres GET
latest Permet de récupérer les informations de la version la plus récente du fichier.
full Permet d'obtenir toutes les informations sur le fichier (sauf les meta-datas, cf. param. suivant).
meta Attention ! Ce paramètre n'est utilisable que si le paramètre full est fourni.
Permet d'obtenir toutes les meta-datas sur le fichier. Si le fichier n'en possède pas ou s'ils n'ont pas pu être traités, la propriété vaudra null.
La présence de la propriété "thumb_token" dans l'objet file indique que le fichier est potentiellement compatible avec le processus d'extraction des metas.
Cependant, pour le moment, seuls les documents y sont éligibles (Les images n'en ont pas encore).
Les détails sur les metas retournées sont disponibles dans la section "Structures de données" -> "Structure d'un fichier"
Contenu retourné Retourne un objet file représentant le fichier demandé.

/file/(fileId)/download

Télécharge un fichier.
Paramètres
fileId Identifiant du fichier à télécharger.
Paramètres GET
latest Mettre à 1 pour récupérer la dernière version du fichier cible, sans tenir compte de la version spécifiée.
En-têtes retournés
Content-Length Taille du fichier téléchargé. Il se peut que la compression du contenu par le serveur s'active lors de l'envoi, auquel cas cet en-tête ne sera pourra ne pas être précisé.
Content-Type Type MIME du fichier téléchargé.
Si le format n'est pas reconnu ou qu'il s'agit d'un fichier binaire, vaudra octet/stream.
Contenu retourné Le contenu retourné est le contenu binaire du fichier si celui-ci existe.

/file/download

Télécharge un fichier via un token de téléchargement de fichier (download_token)
Paramètres GET
token Clé de téléchargement. Se trouve dans les objets fichier en tant que download_token. Le fichier doit être requêté en mode full pour que la clé soit retournée.

Important L'en-tête HTTP Token contenant le token d'autentification de l'utilisateur n'est pas nécéssaire car le download_token contient toutes les informations nécéssaires pour authentifier l'utilisateur et lancer le téléchargement du fichier cible.
Attention ! Celà signifie aussi que quiquonque possède ce lien peut télécharger le fichier en tant que l'utilisateur l'ayant généré.

En-têtes retournés
Content-Length Taille du fichier téléchargé.
Content-Type Type MIME du fichier téléchargé.
Si le format n'est pas reconnu ou qu'il s'agit d'un fichier binaire, vaut octet/stream.
Contenu retourné Le contenu retourné est le contenu binaire du fichier si celui-ci existe.

/file/(fileId)/versions

Liste toutes les versions existantes d'un fichier.
Paramètres
fileId Identifiant du fichier à analyser.
Contenu retourné Retourne la liste des différentes versions du fichier, représentées par une suite d'objets fichier.
[ { "id" : 3, "name": "Fichier", ... /* Cf. fichier */ }, ... ]

/file

Crée un fichier vide. Nécéssaire pour créer un fichier ou mettre à jour son contenu.
Paramètres GET
copy Identifiant du fichier source à dupliquer. Si ce paramètre est spécifié, un nouveau fichier est créé en copiant celui passé en paramètre.
Contenu à envoyer
{ "name": "Nouveau fichier", "parent_id": 10, "hash": "d41d8cd98f00b204e9800998ecf8427e" // Lors de la création, si un fichier du même nom existe déjà, le hash va permettre de faire remonter une version avec le même hash (si applicable) }
Contenu retourné Retourne un objet file représentant le fichier nouvellement créé.

/file/upload

Crée un nouveau fichier avec le contenu spécifié.
En-têtes Cette méthode un peu spéciale attend un contenu ayant pour type MIME multipart/form-data.

Attention ! Sans cet en-tête, le serveur ne traitera pas la requête et le résultat sera imprévisible.
Contenu à envoyer Le contenu attendu est un bloc de données de type multipart/form-data contenant le fichier à uploader.
Ce type d'encodage est généralement utilisé par les navigateurs web pour soumettre les formulaires POST contenant des fichiers à envoyer.

Ce bloc devra être composé:
  1. de la variable folderId précisant l'identifiant de dossier de destination.
  2. de la variable targetFile contenant les informations et le contenu du fichier.
  3. de la variable targetPath, optionnelle, qui permet de définir un chemin complet où créer le fichier sur la plateforme (relatif au folderId).

Il est possible de procéder à un dépôt de fichier découpé en ajoutant les propriétés suivantes:
  1. chunk Représente l'index du bloc courant (en partant de 0).
  2. chunks Nombre total de blocs.
  3. chunksSize Taille du bloc. Doit être la même pour tous les blocs du fichiers (sauf pour le dernier qui peut être plus petit).
  4. fileSize [OPTIONNEL] Taille du fichier final. Permet de préallouer l'espace côté serveur et de faire un vérification rapide de la quantité de données reçues.
  5. report [OPTIONNEL] A la fin de l'envoi de chaque partie, cela permet d'obtenir l'index de la prochaine partie à envoyer, s'il en manque.

Dans ce cas, le targetFile ne contiendra que la portion du fichier.
Contenu retourné Retourne un objet file représentant le fichier nouvellement créé.

Dans le cas d'un envoi découpé :
Les requêtes intermédiaires ne renvoient que le texte "OK" pour valider la réception du bloc.
Dans ce mode, les erreurs > 500 ne sont pas récupérables, alors que les erreurs > 400 peuvent être récupérées et sont probablement dûe à un bug côté client.
Un rapport indiquant la prochaine partie manquante à envoyer peut être récupéré en ajoutant la propriété report. Le json transmit aura la forme suivante:

{ "missing": 14 }

Ce rapport sera automatiquement transmit si la requête courante concerne le dernier bloc mais que le fichier s'avère incomplet.

/file/(fileId)

Modifie les informations d'un fichier existant.
Paramètres
fileId Identifiant du fichier à modifier.
Contenu à envoyer
{ "name": "Fichier avec un autre nom" }
Contenu retourné Retourne un objet file représentant le fichier après que les modifications aient été enregistrées.

/file/(fileId)/upload

Modifie le contenu d'un fichier existant.
Paramètres
fileId Identifiant du fichier à modifier.
En-têtes envoyés
Content-Length Taille du fichier à uploader.
Contenu à envoyer

Il suffit d'envoyer le fichier en brut dans le corps de la requête.

Contenu retourné Retourne un objet file représentant le fichier après que les modifications aient été enregistrées.

/file/(fileId)

Supprime un fichier.
Paramètres
fileId Identifiant du fichier à supprimer.
Paramètres GET
trash Permet de définir si oui ou non le fichier doit être placé dans la corbeille. 1 par défaut.
versions Permet de définit quelles sont les versions qui seront affectées par cette suppression. Il y a 3 valeurs possibles :
  • all signifie que toutes les versions du fichier doivent être supprimées (valeur par défaut).
  • previous signifie que seules les versions antérieures du fichier doivent être supprimées.
  • none signifie qu'aucune autre version du fichier doit être supprimée.
Contenu retourné

Codes de retour possibles

Code 200 Le fichier est placé dans la corbeille, un élément trash est retourné.
Code 204 Aucun contenu retourné : suppression définitive

/trash/(trashId)

Récupère les informations d'un élément de la corbeille.
Paramètres
trashId Identifiant de l'élément.
Contenu retourné Retourne un objet trash représentant l'élément de la corbeille.

/trashes

Lister les éléments de la corbeille.
Paramètres GET
user_id Lister les éléménents de la corbeille d'un utilisateur (applicable uniquement pour les administrateurs).
Contenu retourné

Retourne une liste d'objets trash représentant les éléments présents dans la corbeille, séparés en fichiers/dossiers.

{ "folders": [ { "id": 11568, ... }, ... ], "files": [ { "id": 11567, ... }, ... ] }

/trash/(trashId)

Restaure un élément de la corbeille.
Paramètres
trashId Identifiant de l'élément à restaurer.
Contenu à envoyer

Le corps de la requête est facultatif.

{ "folder_id": 15 // Identifiant du dossier de destination où restaurer l'élément. Par défaut l'élément est restauré à l'emplacement d'origine. }
Contenu retourné Retourne l'objet file ou folder restoré.
{ "id": 29753, "parent_id": 29628, "name": "Nouveau dossier", "creation": "2013-08-20T15:47:23+00:00", "modification": "2013-08-20T15:47:23+00:00", "can_read": true, "can_download": true, "can_write": true, "can_edit": true, "owner": "Jean Edouard", "owner_id": "2" }

/trash/(trashId)

Supprime définitivement un élément de la corbeille.
Paramètres
trashId Identifiant de l'élément à supprimer.

/trashes

Supprime définitivement tous les éléments de la corbeille d'un utilisateur (seul un administrateur peut spécifier la corbeille d'un autre utilisateur que lui même).
Paramètres GET
user_id Identifiant de l'utilisateur dont on veut vider la corbeille (ou "all" pour purger toutes les corbeilles).

/annotation/(annotationId)

Récupère les informations d'une annotation.
Paramètres
annotationId Identifiant de l'annotation.
Contenu retourné Retourne un objet annotation représentant l'annotation.

/annotations/(targetId)/(type)

Liste les annotations apposées sur un fichier ou un dossier.
Paramètres
targetId Identifiant de l'élement cible sur lequel rattacher l'annotation.
type Type de l'élément cible. Peut valoir "folder" si c'est un dossier, ou "file" si c'est un fichier.
Contenu retourné

Retourne une liste d'objets annotation représentant les annotations du fichier ou dossier.

[ { "id": 30, "target_id": 28, .... }, { ... } ]

/annotation

Publie une nouvelle annotation sur l'élement cible (fichier ou dossier).
Contenu à envoyer
{ "target_id": 20, // Identifiant de l'élement cible sur lequel rattacher l'annotation. "target_type": "file", // Type de l'élément cible. Peut valoir "folder" si c'est un dossier, ou "file" si c'est un fichier. "text": "Ceci est le contenu de mon annotation !" }
Contenu retourné Retourne un objet annotation représentant l'annotation publiée.

/annotation/(annotationId)

Modifie le texte d'une annotation.
Paramètres
annotationId Identifiant de l'annotation à modifier.
Contenu à envoyer
{ "text": "Nouveau contenu modifié" }
Contenu retourné Retourne un objet annotation représentant l'annotation après que les modifications aient été enregistrées.

/annotation/(annotationId)

Supprime une annotation.
Paramètres
annotationId Identifiant de l'annotation à supprimer.

/lock/(fileId)

Récupère les informations sur le verrouillage d'un fichier.
Paramètres
fileId Identifiant du fichier à vérifier.
Contenu retourné Retourne un objet lock représentant l'état de verrouillage du fichier cible.

/lock/(fileId)

Verrouille un fichier.
Paramètres
fileId Identifiant du fichier à verrouiller.
Contenu retourné Retourne un objet lock représentant l'état de verrouillage du fichier cible après execution de la requête.

/lock/(fileId)

Déverrouille un fichier.
Paramètres
fileId Identifiant du fichier à déverrouiller.
Paramètres GET
all Si précisé, toutes les versions du fichier cible seront déverrouillées (si l'utilisateur a le droit).

/share/(shareId)

Récupère les informations sur un partage.
Paramètres
shareId Identifiant du partage à récupérer.
Contenu retourné Retourne un objet share représentant le partage demandé.

/shareusers/(folderId)

Récupère les utilisateurs internes avec qui partager le dossier folderId (accès à la liste complète des utilisateurs de la plateforme)
Paramètres
folderId Identifiant du dossier cible du partage.
Paramètres GET
keyword Mot clé pour rechercher un utilisateur. Note : la recherche ne débute qu'à partir d'un mot clé supérieur ou égal à 3 caractères.
Contenu retourné
{ // Uniquement 5 objets sont retournés "other_objects": false, // indique la présence d'autres objets non retournés ou non (par exemple lorsque l'on affiche 5 objets, est ce qu'il y a tous les objets affichés ou certains autres sont masqués ?) "objects": [ { "id": "4660", // identifiant de l'utilisateur "name": "John SMITH", // Nom : prénom + nom ou identifiant "emails": "john@netexplorer.fr" // Adresse(s) email(s) (séparateur virgule) } ] }

/shares/(folderId)

Récupère les partages d'un dossier.
Paramètres
folderId Identifiant du dossier contenant les partages à lister.
Contenu retourné Retourne une liste d'objets share représentant les partages du dossier.

/share

Partage un dossier.
Paramètres GET
alert Si ce paramètre est précisé, l'utilisateur est notifié du partage.
Contenu à envoyer
{ "target_id": "4673", // Identifiant unique de l'utilisateur avec lequel on partage, ou null si c'est un partage public (= utilisateur externe) // Droits applicables : le propriétaire du partage ne peut pas donner plus de droits qu'il n'en a lui même "browse": true, "read": true, "download": true, "write": false, "edit": false, "delete": false, "notify": true, // Les notifications de mises à jour sont elles actives pour l'utilisateur ? "expiration_date": null, // Date d'expiration du partage "target_email": null // Email de l'utilisateur avec qui on a partagé (si partage public) }
Contenu retourné Retourne un objet partage représentant le partage ajouté.
Note : un partage est TOUJOURS appliqué de manière récursive (en fonction de la visibilité du propriétaire du partage).

/share/(shareId)

Modifie les propriétés d'un partage.
Paramètres
shareId Identifiant du partage à modifier.
Paramètres GET
alert Si ce paramètre est précisé, l'utilisateur est (re)notifié du partage.
Contenu à envoyer

Afin d'alléger le traitement et réduire les risques d'erreurs, vous pouvez ne préciser que les propriétés qui vous interesse.
Les propriétés non précisées ne seront pas modifiées.

{ "browse": true, "read": true, "download": true, "write": false, "edit": false, "delete": false, "notify": true, "expiration_date": null }
Contenu retourné Retourne un objet partage représentant le partage après que les modifications aient été enregistrées.
Note : un partage est TOUJOURS modifié de manière récursive (en fonction de la visibilité du propriétaire du partage).

/share/(shareId)

Supprime un partage (récursivement).
Paramètres
shareId Identifiant du partage à supprimer.

/right/(rightId)

Récupère les informations sur un droit.
Paramètres
rightId Identifiant du droit à récupérer.
Contenu retourné Retourne un objet droit représentant le droit demandé.

/rights/(folderId)

Récupère les droits d'un dossier.
Paramètres
folderId Identifiant du dossier contenant les droits à lister.
Contenu retourné Retourne une liste d'objets droit représentant les droits du dossier.

/right

Ajoute un nouveau droit sur un dossier.
Paramètres GET
recursive Si ce paramètre est précisé, le droit est appliqué de manière récursive.
Contenu à envoyer
{ "folder_id": 4, "target_id": "14", "browse": true, "read": true, "download": true, "write": false, "edit": false }
Contenu retourné Retourne un objet droit représentant le droit ajouté.
Note : même si la récursivité a été demandée, les droits sous-jacent ne seront pas retournés.

/right/(rightId)

Modifie les propriétés d'un droit.
Paramètres
rightId Identifiant du droit à modifier.
Paramètres GET
recursive Si ce paramètre est précisé, le droit est appliqué de manière récursive.
Contenu à envoyer

Afin d'alléger le traitement et réduire les risques d'erreurs, vous pouvez ne préciser que les propriétés qui vous interesse.
Les propriétés non précisées ne seront pas modifiées.

{ "browse": true, "read": true, "download": true, "write": false, "edit": false }
Contenu retourné Retourne un objet droit représentant le droit après que les modifications aient été enregistrées.
Si la récursivité a été demandée, les droits sous-jacent ne seront pas retournés.

/rights/(folderId)

Modifie les droits appliqués à un dossier. Si le droit que l'on souhaite modifier n'est pas présent sur le dossier, il sera automatiquement créé. Seuls les droits passés en paramètre sont modifiés.
Paramètres
folderId Identifiant du dossier concerné.
Paramètres GET
recursive Si ce paramètre est précisé, les droits sont appliqués de manière récursive.
Contenu à envoyer

Afin d'alléger le traitement et réduire les risques d'erreurs, vous pouvez ne préciser que les propriétés qui vous interesse.
Les propriétés non précisées ne seront pas modifiées.

[ { "target_id": "14", "browse": true, "read": true, "download": true, "write": false, "edit": false }, { ... } ]
Contenu retourné Retourne une liste d'objets droit.
[ { "id": 30, "folder_id": 28, "target_id": "7", "target": "James Turner", "target_isgroup": false, "browse": true, "read": true, "download": true, "write": false, "edit": false }, { ... } ]

/right/(rightId)

Supprime un droit.
Paramètres
rightId Identifiant du droit à supprimer.
Paramètres GET
recursive Si ce paramètre est précisé, le droit est supprimé de manière récursive.

/alert/(alertId)

Récupère les informations sur une alerte.
Paramètres
alertId Identifiant de l'alerte à récupérer.
Contenu retourné Retourne un objet alerte représentant l'alerte demandée.

/alerts/(folderId)

Récupère les alertes d'un dossier.
Paramètres
folderId Identifiant du dossier contenant les alertes à lister.
Contenu retourné Retourne une liste d'objets alerte représentant les alertes du dossier.

/alert

Crée une alerte email.
Contenu à envoyer
{ "folder_id": 3, "target_id": "14", // Chacun des champs présentés ci-dessous sont optionnels. "active": true, // Activer ou désactiver l'alerte. Par défaut, vaut true. "email": 10 // Id de l'email. L'email par défaut est utilisé si aucun email n'est précisé. }
Contenu retourné Retourne un objet alerte représentant l'alerte précédemment créée.

/alert/(alertId)

Modifie une alerte email.
Paramètres
alertId Identifiant de l'alerte concernée.
Paramètres GET
recursive Si ce paramètre est précisé, l'alerte est appliquée de manière récursive.
Contenu à envoyer

Afin d'alléger le traitement et réduire les risques d'erreurs, vous pouvez ne préciser que les propriétés qui vous interesse.
Les propriétés non précisées ne seront pas modifiées.

{ "active": true, // Activer ou désactiver l'alerte "email": 10 }
Contenu retourné

Retourne un objet alerte représentant l'alerte précédemment modifiée.

/alerts/(folderId)

Modifie les alertes d'un dossier. Si l'alerte que l'on souhaite modifier n'est pas déjà présente sur le dossier, elle sera automatiquement créée. Seuls les alertes passées en paramètre sont modifiées.
Paramètres
folderId Identifiant du dossier concerné.
Paramètres GET
recursive Si ce paramètre est précisé, les alertes sont appliquées de manière récursive.
Contenu à envoyer

Afin d'alléger le traitement et réduire les risques d'erreurs, vous pouvez ne préciser que les propriétés qui vous interesse.
Les propriétés non précisées ne seront pas modifiées.

[ { "target_id": "14", // Chacun des champs présentés ci-dessous sont optionnels. Seuls ceux qui seront présent lors de la requête seront modifiés. "active": true, // Activer ou désactiver l'alerte "email": 10 }, { ... } ]
Contenu retourné Retourne une liste d'objets alerte.
[ { "id": 30, "folder_id": 28, "target_id": 7, "target": "James Turner", "target_isgroup": false, "active": true, // Activer ou désactiver l'alerte "email": 10 // Id de l'email rattaché à l'alerte }, { ... } ]

/alert/(alertId)

Supprime une alerte.
Paramètres
alertId Identifiant de l'alerte à supprimer.
Paramètres GET
recursive Si cet appendice est ajouté à l'URL, l'alerte est supprimée de manière récursive.

/user/(userId)

Récupère les informations d'un utilisateur.
Paramètres
userId Identifiant de l'utilisateur.
Contenu retourné Retourne un objet utilisateur représentant l'utilisateur cible.

/user/(userId)/quota

Récupère le quota d'un utilisateur (quota et espace disque utilisé).
Paramètres
userId Identifiant de l'utilisateur.
Contenu retourné
{ "quota": null, // Quota en octets, ou null si aucun "used": 3892501810 // Espace disque utilisé par l'utilisateur, en octets }

/users

Récupère la liste des utilisateurs.
Paramètres (variables GET)
offset_start Index de départ (par défaut 0).
nb_objects Nombre d'objets maximal à retourner (par défaut 30).
keyword Mot clé pour rechercher un utilisateur.
member_of Retourne uniquement les utilisateurs membres du groupe indiqué. Il s'agit d'une chaine ; ce champ doit correspondre au "login" du groupe.
Contenu retourné Retourne une liste d'objets utilisateur représentant les utilisateurs et des informations sur la collection.
{ "offset_start": 0, // offset de début "nb_objects": 30, // nombre d'objets réellement retournés "nb_total_objects": 500, // nombre d'objets présents au total "objects": [ { "id" : 7, "lastname": "Smith", ... /* Objet Utilisateur */ }, ... ] }

/user

Crée un utilisateur.
Paramètres GET
alert Si true, notifie l'utilisateur par email de la création de son compte en lui indiquant son indentifiant et mot de passe.
Contenu à envoyer

Info Seuls les champs login et password sont obligatoires pour la création d'un utilisateur.

{ "lastname": "Smith", "firstname": "John", "login": "smithj", "password": "123456", "email": "john.smith@netexplorer.fr", "organization": "NetExplorer", "phone": "+33 5.01.02.03.04", "active": true, "language": "fr", // Langue de l'utilisateur (parmis fr, en, es, pt et cn) "quota": 10, "expire": "2014-03-02T15:20:57+00:00", "groups": ["1", "5", "__ldapg_488569"...] // Liste des identifiants uniques des groupes }
Contenu retourné Retourne un objet utilisateur représentant l'utilisateur précédemment créé.

/user/(userId)

Modifie l'utilisateur cible.
Paramètres
userId Identifiant de l'utilisateur à modifier.
Paramètres GET
alert Si true, NetExplorer envoie les identifiants d'accès à l'utilisateur par email (possible uniquement si le mot de passe a été changé lors de la requête).
Contenu à envoyer

Afin d'alléger le traitement et réduire les risques d'erreurs, vous pouvez ne préciser que les propriétés qui vous interesse.
Les propriétés non précisées ne seront pas modifiées.

{ "lastname": "Smith", "firstname": "John", "login": "smithj", "password": "123456", "email": "john.smith@netexplorer.fr", "home": 1, "organization": "NetExplorer", "phone": "+33 5.01.02.03.04", "active": true, "language": "fr", "quota": 10, "expire": "2014-03-02T15:20:57+00:00", // NOTE : si "groups" contient un tableau vide, l'utilisateur ne sera plus membre d'aucun groupe "groups": [ "1" ] }
Contenu retourné Retourne un objet user représentant l'utilisateur précédemment créé ou modifié.

/user/(userId)

Supprime un utilisateur.
Paramètres
userId Identifiant de l'utilisateur à supprimer.

/group/(groupId)

Récupère les informations d'un groupe.
Paramètres
groupId Identifiant du groupe.
Contenu retourné Retourne un objet groupe représentant le groupe cible.

/groups

Récupère la liste des groupes.
Paramètres (variables GET)
offset_start Index de départ (par défaut 0).
nb_objects Nombre d'objets maximal à retourner (par défaut 30).
keyword Mot clé pour rechercher un groupe.
Contenu retourné Retourne une liste d'objets groupe représentant les groupes et des informations sur la collection.
{ "offset_start": 0, // offset de début "nb_objects": 30, // nombre d'objets réellement retournés "nb_total_objects": 500, // nombre d'objets présents au total "objects": [ { "id" : 7, "login": "Smith", ... // Ne retourne pas les membres du groupe, utilisez cette fonction pour cela. }, ... ] }

/group

Crée un groupe.
Contenu à envoyer
{ // Le champs login est obligatoire pour la création d'un groupe "login": "smithj", "members": [ "5", "9", "__ldapu_455896" ] // Liste des id des membres }
Contenu retourné Retourne un objet groupe représentant le groupe précédemment créé.

/group/(groupId)

Modifie le groupe cible.
Paramètres
groupId Identifiant du groupe à modifier.
Contenu à envoyer
{ "login": "smithj", "members": [ "14", "__ldapu_741255", "45" ] }
Contenu retourné Retourne un objet groupe représentant le groupe précédemment modifié.

/group/(groupId)

Supprime un groupe.
Paramètres
groupId Identifiant du groupe à supprimer.

/option/(userId)

Récupère les options d'un utilisateur ou d'un groupe.
Paramètres
userId Identifiant de l'utilisateur ou du groupe.
Contenu retourné Retourne un objet option représentant l'option de l'utilisateur ou du groupe.

/option/(userId)

Modifier les options d'un utilisateur ou d'un groupe.
Paramètres
userId Identifiant de l'utilisateur ou du groupe.
Contenu à envoyer
{ "target_id": "45", "ips": null, // tableau contenant la liste des IPs authorisées, ou null si aucun filtrage n'a lieu sur les IP. ATTENTION : un tableau vide interdit TOUTES les IPs, il n'est donc plus possible à l'utilisateur de se connecter. "days": // jours de la semaine autorisés [ "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday" ], "hour_start": null, "hour_end": null, "can_netsync": true }
Contenu retourné Retourne un objet option représentant l'option modifiée.
Note : dès lors qu'une option est appliquée à un utilisateur, elle rompt l'héritage précédent provenant des groupes de l'utilisateur.

/option/(userId)

Supprime les options d'un utilisateur ou d'un groupe. Dès lors qu'un utilisateur ne dispose plus d'options expressément définies, il retrouve les options appliquées par héritage.
Paramètres
userId Identifiant de l'utilisateur/groupe dont il faut supprimer l'option.

/delegate/(delegateId)

Récupère les informations d'un délégué.
Paramètres
delegateId Identifiant du délégué.
Contenu retourné Retourne un objet délégué représentant le délégué cible.

/delegates/(groupId)

Récupère la liste des délégués.
Paramètres (variables GET)
offset_start Index de départ (par défaut 0).
nb_objects Nombre d'objets maximal à retourner (par défaut 30).
Contenu retourné Retourne une liste d'objets délégué représentant les délégués et des informations sur la collection.
{ "offset_start": 0, // offset de début "nb_objects": 30, // nombre d'objets réellement retournés "nb_total_objects": 5, // nombre d'objets présents au total "objects": [ { "id" : 7, "user_id": "2", ... }, ... ] }

/delegate

Crée un délégué.
Contenu à envoyer
{ "user_id": "3", "group_id": "5", "users": true, "security": true, "alerts": true }
Contenu retourné Retourne un objet délégué représentant le délégué précédemment créé.

/delegate/(delegateId)

Modifie le délégué cible.
Paramètres
delegateId Identifiant du délégué à modifier.
Contenu à envoyer

Afin d'alléger le traitement et réduire les risques d'erreurs, vous pouvez ne préciser que les propriétés qui vous interesse.
Les propriétés non précisées ne seront pas modifiées.

{ // Seuls les champs à modifier doivent être précisés "user_id": "3", "group_id": "5", "users": true, "security": true, "alerts": true }
Contenu retourné Retourne un objet delegate représentant le délégué précédemment modifié.

/delegate/(delegateId)

Supprime un délégué.
Paramètres
delegateId Identifiant du délégué à supprimer.

/email/(emailId)

Récupère les détails d'un email.
Paramètres
emailId Identifiant de l'email.
Contenu retourné Retourne un objet email représentant l'email.

/emails

Récupère la liste d'emails.
Paramètres (variables GET)
offset_start Index de départ (par défaut 0).
nb_objects Nombre d'objets maximal à retourner (par défaut 30).
keyword Mot clé pour rechercher un email.
type Permet de filtrer par type d'email.
Contenu retourné Retourne une liste d'objets email représentant les emails et des informations sur la collection.
{ "offset_start": 0, // offset de début "nb_objects": 30, // nombre d'objets réellement retournés "nb_total_objects": 500, // nombre d'objets présents au total "objects": [ { "id" : 7, "object": "Mail subject", ... }, ... ] }

/email

Crée un email. Seuls les administrateurs et délégués peuvent créer des emails de type EM_TE_ALERT. Le type EM_TE_DEFAUT est un type système ne pouvant être créé.
Contenu à envoyer
{ "object": "Mail subject", "content": "Mail content in HTML", "type": "EM_TE_TOSEND", // Champs applicables uniquement aux alertes de type EM_TE_TOSEND "from": "mail@domain.com", "to": "mail@domain.com,mail@domain.com", // seul ce paramètre parmi les trois est obligatoire "bcc": "mail@domain.com,mail@domain.com" }
Contenu retourné Retourne un objet email représentant l'email précédemment créé.

/email/(emailId)

Modifie l'email cible.
Paramètres
emailId Identifiant de l'email à modifier.
Paramètres GET
send Envoi l'email.
Contenu à envoyer

Afin d'alléger le traitement et réduire les risques d'erreurs, vous pouvez ne préciser que les propriétés qui vous interesse.
Les propriétés non précisées ne seront pas modifiées.

{ "object": "Mail subject", "content": "Mail content in HTML", // Champs applicables uniquement aux alertes de type EM_TE_TOSEND "from": "mail@domain.com", "to": "mail@domain.com,mail@domain.com", // seul ce paramètre parmi les trois est obligatoire "bcc": "mail@domain.com,mail@domain.com" }
Contenu retourné Retourne un objet email représentant l'email précédemment modifié.

/email/(emailId)

Supprime un email.
Paramètres
emailId Identifiant de l'email à supprimer.

/lang

Récupère les labels de langue (forme clé/valeur) de l'utilisateur courant, en fonction de sa langue.

Info Cette fonction ne nécéssite pas de token.

Contenu retourné
{ "CW_CONNECT": "Se connecter", "E_NEW_DIR": "Nouveau dossier", ... }

/publicconfig

Récupère la liste des paramètres de configuration publics sous la forme section/clé/valeur. Méthode accessible pour tous les utilisateurs.

Info Cette fonction ne nécéssite pas de token.

Contenu retourné
{ "features": { "lock_read": true } }

/config

Récupère la liste des paramètres de configuration sous la forme section/clé/valeur.
Contenu retourné
{ "config": { "defaut_language": "fr", "allow_guest": false ... }, ... }

/config

Modifie uniquement les paramètres de configuration passés en paramètre.
Contenu à envoyer
{ "config": { "defaut_language": "fr" ... }, ... }
Contenu retourné Retourne l'ensemble des paramètres de configuration.
{ "config": { "defaut_language": "fr", "allow_guest": false ... }, ... }

/thumb/(dataId)

Récupère la miniature d'un fichier.
Paramètres
dataId Identifiant du fichier cible de la forme hash.size.
Paramètres GET
key Clé d'authentification permettant l'accès à la miniature.
size Taille de la miniature en pixels. L'image obtenue est carrée.
thumbSize doit être compris entre 16 et 150 et doit être un multiple de 5.
Par défaut, la miniature générée est en 50x50.
Contenu retourné Le contenu retourné est une image binaire de type image/png.

http://thumbs.netexplorer.pro/(token)

Récupère la miniature d'un fichier (Formules Zen)
Paramètres
token Ticket de téléchargement de l'aperçu d'un fichier. Valable 24h (de 0h00 à 23h59)
Paramètres GET
s Taille en pixels de l'image au format WxHf où W est la largeur, H la hauteur, et f le flag optionnel indiquant que l'image doit garder les proportions d'origine.
Il est aussi possible de ne spécifier qu'une seule des dimensions, l'autre étant alors automatiquement calculée de manière à préserver le ratio initial. Exemple: 800x600 - Image en 800x600 forcée, 1920x1080f - Image en 1920x1080 maximum, mais la dimension finale dépend de l'image d'origine.

Il existe plusieurs configuration "par défaut", il suffit de remplacer la taille par un flag:
t - Mode spécial pour les miniatures de la partie navigation
s - Petite taille: 180x
n - Taille par défaut: 700x
l - Grande taille: 1000x

Valeur par défaut: t
f Format de l'image retournée. jpg, png ou gif.
o Uniquement pour les documents (pas les images), définit si l'overlay relatif au format de fichier doit être ajouté à l'image.
Peut valoir 1 ou 0.
p Uniquement pour les documents, indique pour quelle page du document la miniature doit être générée.
fit Indique si l'image produite doit respecter les proportions d'origine.
Equivalent du flag f spécifiable dans les dimensions de l'image (paramètre s).
nu Permet d'interdire l'upscaling.
L'image ne pourra jamais être plus grande que sa taille d'origine (sauf si l'option fit est activée).
Contenu retourné Le contenu retourné est une image binaire de type image/png, image/gif ou image/jpg (par défaut).
Si une image identique est déjà en cours de génération, le serveur attend 30 secondes que le processus se termine.
S'il ne se termine pas dans ce laps de temps, un code 423 Locked est retourné.

/zip

Télécharger un zip contenant les données souhaitées.
Paramètres GET
token Token d'accès (récupéré à partir de la méthode POST)
name Nom du ZIP et extension (par défaut : archive.zip)
Contenu retourné Le contenu retourné est un fichier binaire au format application/zip.

/zip/token

Récupère un token de téléchargement ZIP.
Contenu à envoyer

Le JSON doit contenir la liste des id des objets à télécharger en ZIP, précédés de la première lettre de leur type (fichier (f), dossier (d) ou lien direct (dl)), comme présentée ci-dessous :

{ "ids": "f45f12d87" // Pour télécharger le fichier numéro 45, le fichier numéro 12, et le dossier numéro 87 }
Contenu retourné
{ "token": "l0dU9Q2kpq[ ... ]fe3b5b127c" }

Le token est à utiliser avec la méthode précédente.

/log/(logId)

Récupère les informations d'un évènement du journal.
Paramètres
logId Identifiant de l'évènement.
Contenu retourné Retourne un objet évènement du journal représentant l'évènement cible.

/logs

Récupère la liste des évènements présents dans les journaux d'évènements.
Paramètres (variables GET)
offset_start Index de départ (par défaut 0).
nb_objects Nombre d'objets maximal à retourner (par défaut 30).
keyword Mot clé
type Type de l'évènement : CONNECT, INSERT, UPDATE, DELETE, DOWNLOAD, SEND
statut Statut de l'évènement : OK ou ERROR
object_id Identifiant de l'objet
object_type Type de l'objet : utilisateur, groupe, dossier, fichier, annotation, liendirect, email, alerte
user_id Identifiant de l'utilisateur auteur de l'action
date_start Évènements à partir de cette date
date_end Évènements jusqu'à cette date
ip Adresse IP du client
Contenu retourné Retourne une liste d'objets évènement du journal représentant les utilisateurs et des informations sur la collection.
{ "offset_start": 0, // offset de début "nb_objects": 30, // nombre d'objets réellement retournés "nb_total_objects": 500, // nombre d'objets présents au total "objects": [ { "id" : 7, "user_id": "2", ... }, ... ] }

/fzen

Récupère les informations sur le formule Zen.
Contenu retourné
{ "customer": { "client": { "prenom": "John", "nom": "SMITH", "societe": "BSNET", "email": "jsmith@bsnet.fr", "login": "netexplorer", "nomcomplet": "BSNET" }, "zen": { "id": "1", "type_licence": null, "date_validite": "2013-08-24", "espace_disque": "50", "type": "Formule Cloud Business (50 Go, abonnement 1 an)" }, "infos": { "status": "Votre formule arrivera à expiration le 24/08/2013. Renouveler votre formule ? Cliquez-ici." // format HTML } }, "space": { "used": 4224336748, "quota": null, "trash": 61477, "versions": 86839965 }, "slots": { "used": 2, "allowed": 5 } "currentusers": [ { "uset_id": "2", "login": "jsmith", "user_tostring": "John SMITH", "user_agent": "NetSync/1.1.7 (Windows)", "ip": "8.8.8.8", "computer": "PC-COMPTA", "date": "2014-11-05T16:37:47+0000", // ou null si actuellement connecté "geo": { "city": "Colomiers", "country": "France", "loc": "Colomiers, France" }, "env": { "browser": "NetSync 1.1.7", "os": "Windows", "os_type": 1 } }, { "id": "3" ... } ] }
Pour toute question relative à l'API REST, vous pouvez nous contacter :
Par téléphone Au 0825 590 144
Par email -
Par courrier postal
BSNET
10 allée Aristide Maillol
31770 Colomiers
FRANCE