Authentification

L'authentification dans Sinao est possible de deux manière :

  • via un token Bearer, obtenu grâce au login et mot de passe d'un compte utilisateur ;
  • ou grâce à une clé API.

Login via compte utilisateur

La validité du token Bearer est de 24h.
La première étape consiste à envoyer une requête POST sur l'endpoint /login avec l'email et le mot de passe du compte afin de récupérer ce token de connexion. Il sera possible de rafraichir le token si celui-ci expire via l'endpoint /refresh pendant 14 jours.

Une fois ce token récupéré, il doit être transmis dans le header Authorization: Bearer <token> dans toutes les requêtes identifiées.

var formdata = new FormData();

formdata.append("email", "[email protected]");
formdata.append("password", "secret");

var requestOptions = {
		method: 'POST',
		body: formdata,
		redirect: 'follow'
};

fetch("https://api.sinao.app/v1/login", rquestOptions)
		.then(response => response.text())
		.then(result => console.log(result))
		.catch(error => console.log('error', error));

Clé API

La clé API doit être créée sur l'interface de Sinao depuis l'utilisateur administrateur de l'entreprise. Elle n'a pas de limite de validité. Cette clé API est liée uniquement à une seule application à contrario de la token Bearer qui est lié à un compte utilisateur.

Create API Key

Une fois cette clé récupérée, il suffit de l'ajouter en header pour authentifier la requête : Api-Key: <key>

var requestOptions = {
    method: 'GET',
    headers: {
        'Api-Key': 'xxx' // Remplacez 'xxx' par la valeur réelle de votre clé API
    },
    redirect: 'follow'
};

fetch("https://api.sinao.app/v1/me", requestOptions)
    .then(response => response.text())
    .then(result => console.log(result))
    .catch(error => console.log('error', error));

Refresh token

var myHeaders = new Headers();

myHeaders.append("Authorization", "Bearer <token>");

var requestOptions = {
		method: 'GET',
		headers: myHeaders,
		redirect: 'follow'
};

fetch("https://api.sinao.app/v1/refresh", requestOptions)
		.then(response => response.text())
		.then(result => console.log(result))
		.catch(error => console.log('error', error));