# Documentation de l'API SENAR

Cette documentation fournit des informations techniques à destination des développeurs travaillant avec les données de Senar. Elle comprend des instructions pour :&#x20;

* Authentifier l’accès à l’API
* Ajouter des utilisateurs et leur attribuer des collections
* Accéder aux données utilisateurs et d’activité
* Enregistrer des webhooks pour recevoir des notifications en temps réel.

Chaque section inclut des exemples de *endpoints* et de réponses JSON, pour vous aider à bien démarrer.

***

## 1. Authentification

**Méthode :** POST

Vous devez être authentifié pour accéder aux données Senar. Pour obtenir un login et un mot de passe, veuillez contacter le support.

**Endpoint**

`https://studio.senar.io/api/auth/login`&#x20;

**Requête**

```json5
{
    "username": "xxx@xxx.com",
    "password": "*********"
}
```

**Réponse**

```json5
{
    "Token": "eedx..."
}
```

Le token obtenu sera utilisé dans les requêtes pour vous authentifier. Ajoutez-le à l'en-tête `Authorization` en utilisant le schéma Bearer.&#x20;

**Exemple**

`Authorization: Bearer <eedx...>`

***

## 2. Ajouter un utilisateur et lui attribuer une collection

**Méthode :** POST

Utilisez ce *endpoint* pour ajouter un nouvel utilisateur et lui assigner une collection spécifique.

**Endpoint**

`https://studio.senar.io/integration/data/user_assign`

**Requête**

```json5
{
  "email": "new.user@example.com",
  "firstName": "New",
  "lastName": "User",
  "password": "Password8",
  "organization": "NewOrg Inc.",
  "collectionId": 42
}
```

**Réponse**

<pre class="language-json5"><code class="lang-json5">{
  "succeed": true,
  "email": "new.user@example.com",
  "collectionId": 42,
  "isNewUser": true
<strong>}
</strong></code></pre>

**Remarques :**

* &#x20;Ce *endpoint* nécessite une authentification (voir section 1).
* `CollectionId` doit faire référence à une collection valide, dont l’utilisateur authentifié doit être propriétaire.
* Pour trouver l’ID d’une collection, ouvrez-la dans Senar Studio et copiez le nombre à la fin de l’URL. Exemple : `https://studio.senar.io/Collections/Edit/42`\
  &#x20;→ `42`&#x20;
* Pour assigner plusieurs collections, répétez la requête en changeant le champ `collectionId`.
* Le champ `password` doit respecter les critères de sécurité imposés par Senar : minimum 6 caractères, composé de lettres et d'au moins un chiffre.
* L’API ne permet pas de modifier ou supprimer les informations d’un utilisateur ; pour cela, utilisez Senar Studio.

***

## 3. Récupérer les utilisateurs

**Méthode :** GET

Les utilisateurs s'inscrivent via un formulaire disponible dans l'application Senar. Cet endpoint retourne tous les utilisateurs associés au compte authentifié.

**Endpoint**

&#x20;`https://studio.senar.io/integration/data/users`&#x20;

**Réponse**

```json
[{
    "id": "765fc7cf-312b-469d-8508-0e943a6447c7",
    "firstName": "Jon",
    "lastName": "Doe",
    "email": "jon.doe@my.mail",
    "language": "en",
    "accountName": "ACME",
    "countryName": "USA",
    "creationDate": "2022-09-07T06:25:23.9014976",
    "profile": "Instructor"
}]
```

***

## 4. Récupérer les données d’activité

**Méthode :** GET

Une activité représente les données collectées lorsqu'un utilisateur termine un scénario.

**Endpoint**

`https://studio.senar.io/integration/data/activities`

**Réponse**

```json
[{
    "id": 80119,
    "collectionId": 41,
    "userId": "b68bfbd8-8f26-427b-a3c9-2d4cec36648b",
    "traineeId": "b5e3bbbc-0c22-417a-8087-6554afe26400",
    "firstName": "Natalia",
    "lastName": "Brown",
    "company": "Daria",
    "trainingDate": "2021-03-09T17:37:11.186836",
    "scenarioId": "S01",
    "scenarioName": "Scenario 1",
    "totalPoints": 2900,
    "totalSec": 622,
    "totalTries": 1,
    "simulatorId": 18,
    "tilts": 0,
    "totalMaxPoints": 3400,
    "abandons": 1,
    "collectionTitle": "Rigging",
    "simulatorTitle": "Lifting Hardware and Sling Inspection",
    "userFirstName": "Jon",
    "userLastName": "Doe",
    "userEmail": "jon.doe@my.mail",
    "userCostCenter": "East",
    "userAccountName": "ACME",
    "traineeEmail": "guest-b45@senar.io",
    "traineeProfile": "Guest"
}]
```

***

## 5. Enregistrer un webhook

**Méthode :** POST

Utilisez les webhooks pour recevoir des notifications en temps réel lorsqu’un nouvel utilisateur ou une nouvelle activité est enregistré(e).&#x20;

La réponse renvoie un identifiant que vous pouvez plus tard utiliser pour vous désabonner si besoin.

**Endpoint**

`https://studio.senar.io/integration/data/webhook_register`

**Requête**

```json5
{
  "hookUrl": "",
  "method": "activity",  // or "user"
  "provider": "zapier"
}
```

**Réponse**

```json5
{
    "id": "<webhook_id>"
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://support.senar.io/senar-aide-en-ligne/api-senar/documentation-de-lapi-senar.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
