Exemples d'utilisation de l'API

Cette fonctionnalité n'est accessible que si vous avez souscrit à l'option API. N'hésitez pas à contacter votre commercial si vous souhaitez activer cette option.

________________________________________________________________________________________

Voici quelques exemples d'utilisation de l'API de LockSelf en Python 3.

Pour ces exemples nous utiliserons les variables suivantes :

  • [URLAPI] : Correspond à l'url de l'API que vous souhaitez utiliser (Plus d'informations sur l'article Qu'est-ce que l'API LockSelf ?)
  • [XLSTOKEN] : Affiché à la création d'un utilisateur API sous le nom "X-Ls-Token"
  • [AUTHTOKEN] : Affiché à la création d'un utilisateur API sous le nom "X-Auth-Token Key".

Exemple 1 - LockPass (GET)

Récupération de la liste des identifiants d'une catégorie :

import requests
url = "https://[URLAPI]/api-key/credentials?categoryId=1234&limit=10"
payload={}
headers = {
'X-Ls-Token': '[XLSTOKEN]',
'X-Auth-Token': '[AUTHTOKEN]'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)

Dans cet exemple nous demandons les 10 premiers identifiants de la catégorie dont l'ID est 1234.

Les autres paramètres de cette méthode sont consultables sur la documentation technique de l'API.

Vous recevrez en retour de l'API une réponse sous la forme suivante :

{
  "page": "1",
  "limit": "10",
  "pages": "2",
  "total": "13",
  "items": [
    {
      "id": 1337,
      "name": "Test",
      "domain": "google.fr",
      "userId": 0,
      "categoryId": "42",
      "creationDate": "2020-05-27 14:51:28",
      "modificationDate": "2020-05-28 14:51:28",
      "isOwner": true,
      "view": 1
    }
  ]
}

Vous pourrez alors récupérer l'ID de l'identifiant qui vous intéresse pour son déchiffrement à l'API.

Exemple 2 - LockPass (POST)

Création d'un identifiant :

import requests
url = "https://[URLAPI]/api-key/credentials"
payload={'categoryId': 1337,
'description': 'Ma description',
'domain': 'lockself.com',
'isAlert': false,
'name': 'Mon identifiant',
'opt1': '',
'opt2': '',
'opt3': '',
'password': 'M0nP4s$',
'tags': '',
'username': 'login@ndd.com'}
headers = {
'X-Ls-Token': '[XLSTOKEN]',
'X-Auth-Token': '[AUTHTOKEN]'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)

Dans cet exemple nous demandons à l'API la création d'un identifiant en spécifiant toutes les informations nécessaires à sa création.

La description des paramètres de cette méthode sont consultables sur la documentation technique de l'API.

Vous obtiendrez une réponse sous la forme suivante :

{
  "id": 1234,
  "name": "Mon identifiant",
  "domain": "lockself.com",
  "userId": 4321,
  "categoryId": "12",
  "isOwner": true
}

 

Exemple 3 - LockTransfer (POST)

Dépôt d'un fichier dans une boite de dépôt :

import requests
url = "https://[URLAPI]/api-key/depositboxes/file"
payload={'depositBoxId': '1234',
'uuid': '12334-5678-54321-32671',
'chunkIndex': '0',
'totalChunkCount': '1',
'totalSize': '22222',
'description': 'Description de mon fichier'}
files=[
('file',('monImage.jpg', open('/home/perso/monImage.jpg','rb'),'image/jpeg'))
]
headers = {
'X-Ls-Token': '[XLSTOKEN]',
'X-Auth-Token': '[AUTHTOKEN]'
}response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)

Dans cet exemple nous déposons un fichier nommé "monImage.jpg" dans la boite de dépôt ayant l'id 1234.

Nous indiquons:

  • l'uuid que nous avons généré au préalable
  • le chunkIndex qui correspond au numéro du morceau de fichier (max 20Mo par morceau)
  • le totalChunkCount qui correspond au nombre total de morceau qui seront envoyés
  • totalSize qui correspond à la taille totale du fichier.

Vous obtiendrez une réponse sous la forme suivante :

{
  "id": "42",
  "userId": "26",
  "status": 0,
  "isPrivate": "true",
  "token": "26vl42",
  "hash1": "faf11c4cf0bc40233e70da3808a97f1c",
  "hash2": "768753d715912d9fd563c0858f5c0615",
  "hashReport": "43c385881ccba6663afc58b766e2c5c3",
  "name": "June report.",
  "description": "You will find attached the financial reports as requested.",
  "ackNotification": "true",
  "uploadNotification": "true",
  "creationDate": "2020-11-02 12:34:39",
  "expirationDate": "20221102",
  "reportLink": "https://www.example.com/report/deposit-box-report?displayReport=1&hash=e2af8bf73873765c0b90370734c3ceb6&hashReport=5g6ea87a92f21a60dd8848fe1ff02568",
  "creatorEmail": "john.doe@example.com",
  "files": [
    {
      "id": "9",
      "hash": "f0ba55c1-16bc-42e3-84c8-9c8e4db872f5",
      "name": "report-december.pdf",
      "size": "42 Mo",
      "realSize": 44444,
      "uploader": "john.doe@company.com",
      "description": "You will find attached the financial reports as requested.",
      "creationDate": "2020-11-02 10:30:02",
      "_links": {
        "add": {
          "href": "string"
        },
        "delete": {
          "href": "string"
        },
        "download": {
          "href": "string"
        }
      }
    }
  ],
  "users": [
    {
      "id": "9",
      "relationId": "98",
      "email": "john.doe@example.com",
      "canModify": "true",
      "isInternal": "false",
      "_links": {
        "add": {
          "href": "string"
        },
        "modify": {
          "href": "string"
        },
        "delete": {
          "href": "string"
        }
      }
    }
  ],
  "externalUsers": [
    {
      "ownerFirstName": "string",
      "ownerLastName": "string",
      "email": "string"
    }
  ],
  "_links": {
    "self": {
      "href": "string"
    },
    "add": {
      "href": "string"
    },
    "modify": {
      "href": "string"
    },
    "delete": {
      "href": "string"
    }
  }
}

 

Exemple 4 - LockPass (GET + POST)

Récupération de la liste de tous les identifiants et ajout de tags correspondants au login et à la description de chaque mot de passe.



import requests
import json

base_url = "https://[URLAPI]/api-key"
payload={}
headers = {
'X-Ls-Token': '[XLSTOKEN]',
'X-Auth-Token': '[AUTHTOKEN]'
}

def add_tag(idPwd, newTag):
url = base_url + "/credentials/tags"
payload = {"id": idPwd,
"tag": newTag}
response = requests.request("POST", url, headers=headers, data=payload) # Ajout d'un nouveau tag
print("Ajout du tag: " + newTag)

def parse_description(idPwd, description):
desc_tab = description.split(" ") # On decoupe la description en un tableau
for desc_word in desc_tab:
if len(desc_word) > 2: # On exclue les mots de 2 char ou moins
add_tag(idPwd, desc_word)

url = base_url + "/categories"
response = requests.request("GET", url, headers=headers, data=payload) # Recuperation de la liste des categories
ret_cat = json.loads(response.text)

idPwd_array = []
for id_cat in ret_cat['ids']: # Parsing de l'id de chaque categorie
url = base_url + "/credentials?categoryId="+str(id_cat)
response = requests.request("GET", url, headers=headers, data=payload) # Recuperation de la liste des mdp de chaque categorie
ret_pwd = json.loads(response.text)

if ret_pwd['total'] > 0: # Si des mdp sont present dans la categorie
for pwds in ret_pwd['_embedded']['items']: # Parsing des mdp de la categorie pour recuperer leur id
id_pwd_toDecrypt = str(pwds['id'])
idPwd_array.append(id_pwd_toDecrypt)



for id_pwd in idPwd_array:
url = base_url + "/credentials/decrypt/" + id_pwd
response = requests.request("GET", url, headers=headers, data=payload) # Dechiffrement du mot de passe
decrypted_id = json.loads(response.text)
print("\nAction pour l'identifiant nommé: " + decrypted_id["name"])
add_tag(id_pwd, decrypted_id['username'])
if decrypted_id['description'] != "": # Si le champ description de l'identifiant n'est pas vide
parse_description(id_pwd, decrypted_id['description'])



Pour plus de détails, vous pouvez consulter la documentation technique de l'API. Elle vous permettra de connaitre les différents paramètres à envoyer pour chaque méthode ainsi que les différents retours possibles.

Mise à jour