> For the complete documentation index, see [llms.txt](https://altec-atls.gitbook.io/api-legacy/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://altec-atls.gitbook.io/api-legacy/authentification/connexion.md).

# Connexion

{% hint style="warning" %}
**API Legacy — dépréciée mais toujours fonctionnelle.** Pour toute nouvelle intégration, utilisez l'équivalent de l'API v1 : [Connexion (v1)](https://altec-atls.gitbook.io/altec-atls-api/authentification/connexion). Les réponses de cette route incluent les headers `Deprecation` et `Link` (RFC 9745) pointant vers ce successeur.
{% endhint %}

L'opération de connexion est effectuée à l'aide d'une Clé Client unique. \
Une connexion réussie produit un jeton d'accès, qui doit être utilisé pour toutes les opérations lancées par l'utilisateur et un jeton d'actualisation qui doit être utilisé après l'expiration du jeton d'accès afin d' obtenir un nouveau jeton d'accès.

<mark style="color:green;">`POST`</mark> `/login`

**Headers**

| Name         | Value              |
| ------------ | ------------------ |
| Content-Type | `application/json` |

**Body**

<table><thead><tr><th width="229">Name</th><th width="152">Type</th><th>Description</th></tr></thead><tbody><tr><td>clientKey</td><td>string</td><td>Clé Client unique fournie par Altec A3Tech</td></tr></tbody></table>

**Request**

{% tabs %}
{% tab title="curl" %}

```bash
curl -X POST https://ovh-backend.altec-ts.fr/api/login \
-H "Content-Type: application/json" \
-d '{
  "clientKey": "your_client_key"
}'
```

{% endtab %}

{% tab title="js" %}

```javascript
const url = 'https://ovh-backend.altec-ts.fr/api/login';
const data = {
  clientKey: 'your_client_key'
};
const headers = {
  'Content-Type': 'application/json',
};

// Effectuer la requête POST avec fetch
fetch(url, {
  method: 'POST',
  headers,
  body: JSON.stringify(data)
})
  .then(response => {
    if (!response.ok) {
      // Gérer les réponses non 2xx
      return response.json().then(errData => {
        console.log("status:", response.status);
        console.log("message:", errData.error || "An error has occurred");
      });
    }
    return response.json();
  })
  .then(data => {
    const { accessToken, refreshToken } = data;
    if (!accessToken || !refreshToken) {
      console.log('NOK');
      return;
    }
    console.log('OK');
    console.log('accessToken:', accessToken);
    console.log('refreshToken:', refreshToken);
  })
  .catch(error => {
    if (error.name === 'AbortError') {
      console.log("message: No response received from server");
    } else {
      console.log('error.message:', error.message);
    }
  });
```

{% endtab %}

{% tab title="node" %}

```javascript
const axios = require("axios");

// Définir les données et les en-têtes
const url = 'https://ovh-backend.altec-ts.fr/api/login';
const data = {
  clientKey: 'your_client_key'
};
const headers = {
  'Content-Type': 'application/json',
};

// Effectuer la requête POST
axios.post(url, data, { headers })
  .then(response => {
    const { accessToken, refreshToken } = response.data;
    if(!accessToken || !refreshToken){
      console.log('NOK');
      return;
    }
    console.log('OK');
    console.log('accessToken:', accessToken);
    console.log('refreshToken:', refreshToken);
  })
  .catch(error => {
    if (error.response) {
      // Server responded with a status code outside the 2xx range
      console.log("status:", error.response.status);
      console.log("message:", error.response.data.error || "An error has occurred");
    } else if (error.request) {
      // Request was made but no response received
      console.log("message: No response received from server");
    } else {
      // Something happened in setting up the request
      console.log('error.message:', error.message);
    }
  });
```

{% endtab %}

{% tab title="python" %}

```python
import requests

# URL de l'API
url = "https://ovh-backend.altec-ts.fr/api/login"

# Données pour la requête
data = {
    "clientKey": "your_client_key",
}

# En-têtes de la requête
headers = {
    "Content-Type": "application/json"
}

# Effectuer la requête POST
response = requests.post(url, json=data, headers=headers)

# Afficher la réponse
if response.status_code == 200:
    response_json = response.json()
    accessToken = response_json.get("accessToken")
    refreshToken = response_json.get("refreshToken")
    if accessToken and refreshToken:
        print("OK")
        print("accessToken:", accessToken)
        print("refreshToken:", refreshToken)
    else:
        print("NOK")
else:
    print(f"Erreur {response.status_code} :", response.text)
```

{% endtab %}

{% tab title="php" %}

```php
<?php
// URL de l'API
$url = "https://ovh-backend.altec-ts.fr/api/login";

// Données à envoyer
$data = [
    "clientKey" => "your_client_key"
];

// Encodage des données en JSON
$jsonData = json_encode($data);

// Initialisation de cURL
$ch = curl_init($url);

// Configuration des options cURL
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Content-Type: application/json",
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Exécution de la requête
$response = curl_exec($ch);

// Vérification des erreurs
if (curl_errno($ch)) {
    echo "Erreur cURL : " . curl_error($ch) . "\n";
} else {
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    if ($httpCode == 200) {
        if (isset($responseData['accessToken']) && isset($responseData['refreshToken'])) {
            echo "OK\n";
            echo "accessToken: " . $responseData['accessToken'] . "\n";
            echo "refreshToken: " . $responseData['refreshToken'] . "\n";
        }
        else {
            echo "NOK\n";
        }
    } else {
        echo "Erreur HTTP {$httpCode} : " . $response . "\n";
    }
}

// Fermeture de la session cURL
curl_close($ch);
?>
```

{% endtab %}
{% endtabs %}

**Response**

{% tabs %}
{% tab title="200" %}
OK

```json
{
    "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cC[...]A1OTAyfQ.O0XeF_LIm9JGP",
    "refreshToken": "ZF9jbGllbnRfa2V5IjoiMSIs4[...]3Cb3iDmHJUb7NkWoKdjX0w"
}
```

{% endtab %}

{% tab title="401" %}
Le client n'est pas autorisé à effectuer cette opération

```json
{
    "error": "client-key-not-found"
}
```

{% endtab %}

{% tab title="422" %}
Paramètres entrants invalides

```json
{
    "error": "invalid-params"
}
```

{% endtab %}

{% tab title="500" %}
Une erreur inattendue s'est produite sur le serveur.

```json
{
    "error": "unknown"
}
```

{% endtab %}
{% endtabs %}
