Skip to content

Commit

Permalink
Merge pull request #16 from MyUnisoft/navigation-enhancement
Browse files Browse the repository at this point in the history
navigation enhancement
  • Loading branch information
fraxken authored Jul 19, 2022
2 parents bb16567 + 32e832d commit 74abdf3
Show file tree
Hide file tree
Showing 27 changed files with 708 additions and 601 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ Les utilisateurs sont attachés au schéma (ce sont les comptes ayant un accès

Vous n'avez rien à faire pour activer la clé, ce sont les équipes MyUnisoft qui s'occupent de la générer et de l'activer (càd la rendre valide vis à vis de l'API partenaires).

> À noter qu'il peut parfois y avoir un certain délai entre la génération de la clé et son activation.
> **Note** Il peut y avoir un certain délai entre la génération de la clé et son activation.
La clé ne sera pas reconnue par notre API tant que la clé n'a pas été activée et par conséquent vous n'aurez pas l'autorisation de consommer notre API bien que vous ayez en votre possession une clé fournie par MyUnisoft.

# Authentification 🔐
Expand Down
6 changes: 5 additions & 1 deletion docs/EDI.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Documentation (Guide) sur la récupération d'un fichier de déclaration EDI.

> ⚠️ Attention l'accès à cet endpoint n'est pas automatique (si vous en avez besoin, merci de demander aux équipes MyUnisoft de vous autoriser l'accès).
> **Warning**: L'accès à cet endpoint n'est pas automatique (si vous en avez besoin, merci de demander aux équipes MyUnisoft de vous autoriser l'accès).
## API

Expand Down Expand Up @@ -38,3 +38,7 @@ Il existe aussi deux autres erreurs possibles (avec statusCode 400);

- `ACCOUNTING-FOLDER-NOT-FOUND` (L'id du dossier de production ne correspond à rien sur MyUnisoft).
- `MISSING-ACCOUNTING-FOLDER-ID` (L'id du dossier de production est manquant, possible dans le cadre d'un 🔹 Accès cabinet)

---

⬅️ [README](../README.md)
4 changes: 4 additions & 0 deletions docs/analytique.md
Original file line number Diff line number Diff line change
Expand Up @@ -734,3 +734,7 @@ $ curl --location --request GET 'https://api.myunisoft.fr/api/v1/analytics/line_
```

Le retour sera là aussi identique à la définition `AnalyticRepartition` présent dans le chapitre précédent.

---

⬅️ [README](../README.md)
88 changes: 47 additions & 41 deletions docs/auth/cabinet.md
Original file line number Diff line number Diff line change
@@ -1,41 +1,47 @@
# 🔹 Authentification avec accès cabinet

Notre service authentification possède un endpoint spécifique qui permet la génération d'un API Token spécialement conçu pour une utilisation avec accès cabinet. La durée de vie du token est de dix minutes.

## Génération de la clé (API Token)

La route (racine) pour la requête http est POST **/api/authenticate/firm**.

Le body (JSON) de la requête pour l’authentification:
```json
{
"mail": "{{mail}}",
"password": "{{password}}"
}
```

Les champs “**password**” et “**mail**” doivent être complétés avec le compte qui vous a été fourni. À noter qu'un champ supplémentaire "**firm**" peut être renseigné (si votre compte permet l'accès à plusieurs cabinets/entités MyUnisoft).

> 👀 Le champ **firm** peut contenir l'ID numérique de l'entité/schéma ou bien le nom de celui-ci (sur MyUnisoft). Nous appelons "entité" un cabinet ou un groupement de cabinets.
---

Vous devriez recevoir un status code `200` avec un JSON contenant la clé API Token.
```json
{
"api_token": "{{API_TOKEN}}",
"expiresIn": "2021-04-12 11:54:46",
"firm": {
"id": 80,
"label": "TESTS PARTENAIRES"
}
}
```

## Bonus: récupérer l'id de l'entité/schéma MyUnisoft

Dans l'interface MyUnisoft il est possible de récupérer l'id de l'entité par le biais du menu `Tenue` > `Liens dynamiques`. Il suffira de récupérer le "numéro du schéma".

![](../images/liens_dynamique.PNG)

Si vous n'avez pas vous-même accès un collaborateur de l'entité pourra toujours vous fournir l'information (N'hésitez pas non plus à demander à notre équipe).
# 🔹 Authentification avec accès cabinet

Notre service authentification possède un endpoint spécifique qui permet la génération d'un API Token spécialement conçu pour une utilisation avec accès cabinet. La durée de vie du token est de quatre heures.

## Génération de la clé (API Token)

La route (racine) pour la requête http est POST **/api/authenticate/firm**.

Le body (JSON) de la requête pour l’authentification:
```json
{
"mail": "{{mail}}",
"password": "{{password}}"
}
```

Les champs “**password**” et “**mail**” doivent être complétés avec le compte qui vous a été fourni. À noter qu'un champ supplémentaire "**firm**" peut être renseigné (si votre compte permet l'accès à plusieurs cabinets/entités MyUnisoft).

> 👀 Le champ **firm** peut contenir l'ID numérique de l'entité/schéma ou bien le nom de celui-ci (sur MyUnisoft). Nous appelons "entité" un cabinet ou un groupement de cabinets.
---

Vous devriez recevoir un status code `200` avec un JSON contenant la clé API Token.
```json
{
"api_token": "{{API_TOKEN}}",
"expiresIn": "2021-04-12 11:54:46",
"firm": {
"id": 80,
"label": "TESTS PARTENAIRES"
}
}
```

## Bonus: récupérer l'id de l'entité/schéma MyUnisoft

Dans l'interface MyUnisoft il est possible de récupérer l'id de l'entité par le biais du menu `Tenue` > `Liens dynamiques`. Il suffira de récupérer le "numéro du schéma".

![](../images/liens_dynamique.PNG)

Si vous n'avez pas vous-même accès un collaborateur de l'entité pourra toujours vous fournir l'information (N'hésitez pas non plus à demander à notre équipe).

---

⬅️ [README](../../README.md) |
➡️ [Utilisation des routes avec un 🔹 Accès cabinet](../endpoints/cabinet.md)

66 changes: 36 additions & 30 deletions docs/auth/societe.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,36 @@
# 🔸 Authentification avec accès société

Pour commencer, il est nécessaire de récupérer **un jeton Utilisateur**. Nous vous invitons à suivre [le guide suivant](./user.md) pour en récupérer un.

## Génération de la clé (API Token)

Il suffit de requêter la route `/api/v1/key/create` avec la méthode **POST**:
```bash
$ curl --location --request POST 'https://app.myunisoft.fr/api/v1/key/create' \
--header 'Authorization: Bearer {{ TOKEN }}' \
--header 'X-Third-Party-Secret: {{ X-Third-Party-Secret }}' \
--header 'Content-Type: application/json' \
--data-raw '{
"target": 1855
}
'
```

- **target**: l’id de la société qui sera lié à l’API token. Il est possible de récupérer l’id d’une société par le biais de l’application MyUnisoft (l’id sera présent dans l’URL).

Si tout se passe comme prévu vous devriez recevoir un payload comme suit avec un status code `200`.

<p align="center">
<img src="../images/societe_auth_key.png" height="300">
</p>

La clé value est un jeton [JWT](https://jwt.io/) que vous allez devoir utiliser pour requêter les routes exposées par l’API. Nous parlerons “d’API Token” quand il est question de l’utilisation de celui-ci (A ne pas confondre avec le jeton Utilisateur).

À noter qu’une fois votre API token généré il n’est plus nécessaire de refaire les étapes ci-dessus (sauf si le token a entre-temps été revoqué).

# 🔸 Authentification avec accès société

Pour commencer, il est nécessaire de récupérer **un jeton Utilisateur**. Nous vous invitons à suivre [le guide suivant](./user.md) pour en récupérer un.

> **Note**: Le jeton utilisateur ne sera nécessaire que pour la génération de la clé API.
## Génération de la clé (API Token)

Il suffit de requêter la route `/api/v1/key/create` avec la méthode **POST**:
```bash
$ curl --location --request POST 'https://app.myunisoft.fr/api/v1/key/create' \
--header 'Authorization: Bearer {{ TOKEN }}' \
--header 'X-Third-Party-Secret: {{ X-Third-Party-Secret }}' \
--header 'Content-Type: application/json' \
--data-raw '{
"target": 1855
}
'
```

- **target**: l’id de la société (dossier de production) qui sera lié à l’API token. Il est possible de récupérer l’id d’une société par le biais de l’application MyUnisoft (l’id sera présent dans l’URL).

Si tout se passe comme prévu vous devriez recevoir un payload comme suit avec un status code `200`.

<p align="center">
<img src="../images/societe_auth_key.png" height="300">
</p>

La clé value est un jeton [JWT](https://jwt.io/) que vous allez devoir utiliser pour requêter les routes exposées par l’API. Nous parlerons “d’API Token” quand il est question de l’utilisation de celui-ci (A ne pas confondre avec le jeton Utilisateur).

> **Note**: une fois votre API token généré il n’est plus nécessaire de refaire les étapes ci-dessus (sauf si le token a entre-temps été **revoqué**).
---

⬅️ [README](../../README.md) |
➡️ [Utilisation des routes avec un 🔸 Accès société](../endpoints/societe.md)
78 changes: 41 additions & 37 deletions docs/auth/user.md
Original file line number Diff line number Diff line change
@@ -1,37 +1,41 @@
# Authentification utilisateur

Pour pouvoir créer un jeton (API Token) il est nécessaire de s'authentifier auprès de notre service authentification. Un compte vous sera créé au sein d'un schéma dédié aux tests avec nos différents partenaires.

## Récupération d’un jeton sur le Service auth

Les routes de l’API partenaires commençant par **/key** demandent toutes une en-tête http **Authorization** avec un **Bearer token** (l'access token). Nous parlerons de ce token comme étant le “**User token**”.

La route (racine) pour la requête http est POST **/api/authenticate**. Le body (JSON) de la requête pour l’authentification:
```json
{
"mail": "{{mail}}",
"password": "{{password}}"
}
```

Les champs “**password**” et “**mail**” doivent être complétés avec le compte qui vous a été fourni.

> Si vous utilisez Postman, faites attention à désactiver l'utilisation des cookies.
![](../images/user_cookie.png)

---

Vous devriez recevoir un status code `200` avec un JSON contenant la fameuse clé JWT “**access_token**”.
```json
{
"status": "authenticated",
"policy": "OAuth2",
"firmId": 1,
"details": {
"expire_in": "2021-04-13 10:41:01",
"access_token": "{{ACCESS_TOKEN}}",
"refresh_token": "{{REFRESH_TOKEN}}",
"token_type": "bearer"
}
}
```
# Authentification utilisateur

Pour pouvoir créer un jeton (API Token) il est nécessaire de s'authentifier auprès de notre service authentification. Un compte vous sera créé au sein d'un schéma dédié aux tests avec nos différents partenaires.

## Récupération d’un jeton sur le Service auth

Les routes de l’API partenaires commençant par **/key** demandent toutes une en-tête http **Authorization** avec un **Bearer token** (l'access token). Nous parlerons de ce token comme étant le “**User token**”.

La route (racine) pour la requête http est POST **/api/authenticate**. Le body (JSON) de la requête pour l’authentification:
```json
{
"mail": "{{mail}}",
"password": "{{password}}"
}
```

Les champs “**password**” et “**mail**” doivent être complétés avec le compte qui vous a été fourni.

> Si vous utilisez Postman, faites attention à désactiver l'utilisation des cookies.
![](../images/user_cookie.png)

---

Vous devriez recevoir un status code `200` avec un JSON contenant la fameuse clé JWT “**access_token**”.
```json
{
"status": "authenticated",
"policy": "OAuth2",
"firmId": 1,
"details": {
"expire_in": "2021-04-13 10:41:01",
"access_token": "{{ACCESS_TOKEN}}",
"refresh_token": "{{REFRESH_TOKEN}}",
"token_type": "bearer"
}
}
```

---

⬅️ [🔸 Authentification avec accès société](./societe.md)
4 changes: 4 additions & 0 deletions docs/complementary_info.md
Original file line number Diff line number Diff line change
Expand Up @@ -174,3 +174,7 @@ interface AmountTypePaid {
}
```
</details>

---

⬅️ [README](../README.md)
54 changes: 29 additions & 25 deletions docs/connector.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,29 @@
# Connecteurs

Les connecteurs sont des abstractions qui permettent d'interconnecter MyUnisoft avec d'autres solutions (par le biais d'implémentations techniques diverses et variées selon les contraintes et besoins de chacun).

L'API partenaires offre la possibilité à nos partenaires (ainsi que les cabinets utilisant déjà la solution) de s'interconnecter eux-mêmes avec MyUnisoft par le biais d'une API Gateway qui s'occupera de dispatcher les demandes à nos micros-services internes (pour récupérer ou envoyer des informations d'une société ou d'un cabinet entier).

Le gestionnaire (comptable et autres) d'un dossier aura plus tard la possibilité de gérer lui-même les outils qu'il souhaitera utiliser (dans le cadre d'un accès par société). Les différents connecteurs sont disponibles dans `Paramètres` > `Tenue` > `Connecteur (Silea, RCA...)`

![](./images/connector_tab.PNG)

Lors d'un clic sur un des connecteurs un pop-up s'ouvrira. Elle va permettre de générer une clé (API Token) que le comptable pourra renseigner dans votre solution.

![](./images/connector_tab_evoliz.PNG)

## Exemple avec Evoliz

Pour mieux comprendre je vous invite à [visionner la vidéo de notre partenaire Evoliz](https://vimeo.com/432178505/b1a518283f) sûr comment connecter MyUnisoft avec leur solution.

## Pourquoi

Il pourrait être tentant d'essayer de s'interconnecter à MyUnisoft en exploitant directement nos API comme le ferait nos frontaux. Mais laissez-nous vous expliquer pourquoi ce serait une terrible erreur:

- Le modèle d'authentification est conçu pour un Utilisateur (une personne physique). Établir une utilisation non identifiée et non autorisée aura probablement comme conséquence de compromettre la sécurité des comptes que vous exploitez.
- Vous n'avez aucune garantie que les endpoints HTTP seront demain toujours accessible et identique (Il vous sera donc impossible de vous plaindre à MyUnisoft en cas d'impact).
- Ce ne sont pas les mêmes garanties en termes de sécurité, monitoring et support.
# Connecteurs

Les connecteurs sont des abstractions qui permettent d'interconnecter MyUnisoft avec d'autres solutions (par le biais d'implémentations techniques diverses et variées selon les contraintes et besoins de chacun).

L'API partenaires offre la possibilité à nos partenaires (ainsi que les cabinets utilisant déjà la solution) de s'interconnecter eux-mêmes avec MyUnisoft par le biais d'une API Gateway qui s'occupera de dispatcher les demandes à nos micros-services internes (pour récupérer ou envoyer des informations d'une société ou d'un cabinet entier).

Le gestionnaire (comptable et autres) d'un dossier aura plus tard la possibilité de gérer lui-même les outils qu'il souhaitera utiliser (dans le cadre d'un accès par société). Les différents connecteurs sont disponibles dans `Paramètres` > `Tenue` > `Connecteur (Silea, RCA...)`

![](./images/connector_tab.PNG)

Lors d'un clic sur un des connecteurs un pop-up s'ouvrira. Elle va permettre de générer une clé (API Token) que le comptable pourra renseigner dans votre solution.

![](./images/connector_tab_evoliz.PNG)

## Exemple avec Evoliz

Pour mieux comprendre je vous invite à [visionner la vidéo de notre partenaire Evoliz](https://vimeo.com/432178505/b1a518283f) sûr comment connecter MyUnisoft avec leur solution.

## Pourquoi

Il pourrait être tentant d'essayer de s'interconnecter à MyUnisoft en exploitant directement nos API comme le ferait nos frontaux. Mais laissez-nous vous expliquer pourquoi ce serait une terrible erreur:

- Le modèle d'authentification est conçu pour un Utilisateur (une personne physique). Établir une utilisation non identifiée et non autorisée aura probablement comme conséquence de compromettre la sécurité des comptes que vous exploitez.
- Vous n'avez aucune garantie que les endpoints HTTP seront demain toujours accessible et identique (Il vous sera donc impossible de vous plaindre à MyUnisoft en cas d'impact).
- Ce ne sont pas les mêmes garanties en termes de sécurité, monitoring et support.

---

⬅️ [README](../README.md)
4 changes: 4 additions & 0 deletions docs/dashboard.md
Original file line number Diff line number Diff line change
Expand Up @@ -238,3 +238,7 @@ Dans le cas contraire le JSON retourné ressemble à ceci:
"last_update":"2021-06-02T11:17:37"
}
```

---

⬅️ [README](../README.md)
4 changes: 4 additions & 0 deletions docs/dossier_accessible.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,7 @@ Retour JSON de l'API:
"56"
]
```

---

⬅️ [README](../README.md)
Loading

0 comments on commit 74abdf3

Please sign in to comment.