https://github.com/libertempo/api
API de l'application web Libertempo
https://github.com/libertempo/api
api beginner-friendly conges leave libre
Last synced: 5 months ago
JSON representation
API de l'application web Libertempo
- Host: GitHub
- URL: https://github.com/libertempo/api
- Owner: libertempo
- License: agpl-3.0
- Created: 2017-02-27T19:26:07.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2022-03-29T22:31:28.000Z (about 4 years ago)
- Last Synced: 2025-09-18T07:50:08.401Z (9 months ago)
- Topics: api, beginner-friendly, conges, leave, libre
- Language: PHP
- Size: 8.14 MB
- Stars: 1
- Watchers: 2
- Forks: 2
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# libertempo-api
[](https://bettercodehub.com/)
[](https://www.codacy.com/app/libertempo/api)
[](https://www.codacy.com/app/libertempo/api)
[](https://travis-ci.org/libertempo/api)
## Panthéon
[](https://sourcerer.io/fame/prytoegrian/libertempo/api/links/0)[](https://sourcerer.io/fame/prytoegrian/libertempo/api/links/1)[](https://sourcerer.io/fame/prytoegrian/libertempo/api/links/2)[](https://sourcerer.io/fame/prytoegrian/libertempo/api/links/3)[](https://sourcerer.io/fame/prytoegrian/libertempo/api/links/4)[](https://sourcerer.io/fame/prytoegrian/libertempo/api/links/5)[](https://sourcerer.io/fame/prytoegrian/libertempo/api/links/6)[](https://sourcerer.io/fame/prytoegrian/libertempo/api/links/7)
API Libertempo
---
# Initialisation
L'installation sous sa forme la plus simple se résume à faire :
```sh
git clone git@github.com:libertempo/api.git
cd api
make install
ln -sf `pwd`/Tools/Scripts/post-checkout .git/hooks/post-checkout
```
L'API Libertempo doit être installée comme un domaine à part, autrement dit :
- api.libertempo.tld
- api.libertempo.mon-entreprise.tld
Et non pas comme un sous-répertoire de votre domaine existant :
- mon-entreprise.tld/libertempo/api
- libertempo.mon-entreprise.tld/api
C'est préférable pour l'isolation des systèmes (donc la sécurité), en plus d'être plus simple à gérer côté applicatif (plus de certitudes, donc moins de bugs).
Les échanges se font en JSON et nous suivons les codes HTTP standards.
# Requête
En tant qu'architecture REST, les échanges sont *sans-état*, ce qui signifie que le serveur ne stocke pas d'information pour se *souvenir* d'un client et n'induit rien. Cela implique que le client doit fournir toutes les informations nécessaires à la réalisation d'une action, passant tout d'abord par une *connexion*, puis la transmission à chaque requête du *token* reçu suite à cette connexion.
Les headers basiques, à transmettre pour toute requête, sont :
```
Content-Type: application/json
Accept: application/json
```
## Première requête
Afin de vérifier que l'installation de l'API s'est bien déroulée, nous avons mis en place une route sans authentification :
```
GET /hello_world
```
## Authentification
L'authentification s'appuie sur la méthode [Basic Access](https://en.wikipedia.org/wiki/Basic_access_authentication) :
```
GET /authentification
Authorization: Basic {base64(login:mot_de_passe)}
```
Si l'utilisateur existe et a le droit de se connecter, l'API enverra le token d'identification, dont la durée de validité est de 30min (repoussée à chaque échange).
## Échanges authentifiés
Une fois connecté, tous les échanges devront avoir le header :
```
Token: {token}
```
## Requêtes avec données
Lors d'un ordre avec données (POST | PUT), le corps de la requête doit ressembler à :
```JSON
{
"propriété1": "valeur1",
"propriétéN": "valeurN"
}
```
# Réponse
Les réponses de l'API se font sous la spécification jsend. Autrement dit :
```JSON
{
"code": "codeHTTP",
"status": "typeDeReponse",
"message": "messageCorrespondantAuCode",
"data": "donnéesDeRéponse"
}
```
# Routes disponibles
Voir [Swagger](https://app.swaggerhub.com/apis/Libertempo/api) pour une documentation exhaustive.
# Versions
L'API suit `semver`, ce qui signifie qu'une route ne sera enlevée ou que ses spécifications ne seront changées que si la version passe `vM.0.0`. Autrement, il n'y aura pas de [cassages de compatibilité](https://github.com/Prytoegrian/check-break#what-is-a-compatibility-break-) .