2023-07-08 20:19:43 +02:00
# API d'administration
## Authentification
L'ensemble des appels aux APIs HTTP du service `bouncer-admin` sont authentifiées via l'utilisation d'un jeton [JWT ](https://datatracker.ietf.org/doc/html/rfc7519 ) signé par la clé privée du serveur.
Le jeton d'accès doit être transmis avec l'ensemble des appels aux points d'entrée via l'entête HTTP `Authorization` en respectant la forme suivante:
```
Authorization: Bearer < jwt >
```
### Génération d'un jeton d'authentification
La génération d'un jeton d'authentification s'effectue via la commande suivante:
```shell
bouncer auth create-token --subject "< subject > " --role "< role > "
```
Où:
- `"<subject>"` est une chaîne de caractère arbitraire ayant pour objectif d'identifier de manière unique l'utilisateur associé au jeton;
- `"<role>"` peut prendre une des deux valeurs `reader` ou `writer` correspondant aux droits suivants respectifs:
2024-03-29 09:36:36 +01:00
- droit en lecture sur l'ensemble des entités (proxy, layer);
- droit en lecture ET en écriture sur l'ensemble des entités.
2023-07-08 20:19:43 +02:00
## Points d'entrée
### `POST /api/v1/proxies`
Créer un nouveau proxy
#### Exemple de corps de requête
2024-03-29 09:36:36 +01:00
```json
2023-07-08 20:19:43 +02:00
{
2024-03-29 09:36:36 +01:00
"name": "myproxy", // OBLIGATOIRE - Nom du proxy
"to": "https://www.cadoles.com", // OBLIGATOIRE - Site distant ciblé par le proxy
"from": ["*"] // OPTIONNEL - Liste de patrons de filtrage associés au proxy
2023-07-08 20:19:43 +02:00
}
```
#### Exemple de résultat
2024-03-29 09:36:36 +01:00
```json
2023-07-08 20:19:43 +02:00
{
2024-03-29 09:36:36 +01:00
"data": {
"proxy": {
"name": "myproxy",
"weight": 0,
"enabled": false,
"to": "https://www.cadoles.com",
"from": ["*"],
"createdAt": "2018-12-10T13:45:00.000Z",
"updatedAt": "2018-12-10T13:45:00.000Z"
2023-07-08 20:19:43 +02:00
}
2024-03-29 09:36:36 +01:00
}
2023-07-08 20:19:43 +02:00
}
```
#### Source
Voir [`internal/admin/proxy_route.go#createProxy()` ](../../../internal/admin/proxy_route.go#createProxy )
### `GET /api/v1/proxies/{proxyName}`
Récupérer les informations complètes sur un proxy
#### Paramètres
- `{proxyName}` - Nom du proxy
#### Exemple de résultat
2024-03-29 09:36:36 +01:00
```json
2023-07-08 20:19:43 +02:00
{
2024-03-29 09:36:36 +01:00
"data": {
"proxy": {
"name": "myproxy",
"weight": 0,
"enabled": false,
"to": "https://www.cadoles.com",
"from": ["*"],
"createdAt": "2018-12-10T13:45:00.000Z",
"updatedAt": "2018-12-10T13:45:00.000Z"
2023-07-08 20:19:43 +02:00
}
2024-03-29 09:36:36 +01:00
}
2023-07-08 20:19:43 +02:00
}
```
#### Source
Voir [`internal/admin/proxy_route.go#getProxy()` ](../../../internal/admin/proxy_route.go#getProxy )
### `PUT /api/v1/proxies/{proxyName}`
Modifier un proxy
#### Exemple de corps de requête
2024-03-29 09:36:36 +01:00
```json
2023-07-08 20:19:43 +02:00
{
2024-03-29 09:36:36 +01:00
"to": "https://www.cadoles.com", // OPTIONNEL - Site distant ciblé par le proxy
2023-07-08 20:19:43 +02:00
"from": ["mylocalproxydomain:*"], // OPTIONNEL - Liste de patrons de filtrage associés au proxy
2024-03-29 09:36:36 +01:00
"weight": 100, // OPTIONNEL - Poids à associer au proxy
"enabled": true // OPTIONNEL - Activer/désactiver le proxy
2023-07-08 20:19:43 +02:00
}
```
#### Exemple de résultat
2024-03-29 09:36:36 +01:00
```json
2023-07-08 20:19:43 +02:00
{
2024-03-29 09:36:36 +01:00
"data": {
"proxy": {
"name": "myproxy",
"weight": 100,
"enabled": true,
"to": "https://www.cadoles.com",
"from": ["mylocalproxydomain:*"],
"createdAt": "2018-12-10T13:45:00.000Z",
"updatedAt": "2020-10-02T15:09:00.000Z"
2023-07-08 20:19:43 +02:00
}
2024-03-29 09:36:36 +01:00
}
2023-07-08 20:19:43 +02:00
}
```
#### Source
Voir [`internal/admin/proxy_route.go#updateProxy()` ](../../../internal/admin/proxy_route.go#updateProxy )
### `GET /api/v1/proxies?names={name1,name2,...}`
Lister les proxies existants
#### Paramètres
- `{names}` - Optionnel - Liste des noms de proxy à appliquer en tant que filtre
#### Exemple de résultat
2024-03-29 09:36:36 +01:00
```json
2023-07-08 20:19:43 +02:00
{
2024-03-29 09:36:36 +01:00
"data": {
"proxies": [
{
"name": "myproxy",
"weight": 0,
"enabled": false
}
]
}
2023-07-08 20:19:43 +02:00
}
```
#### Source
Voir [`internal/admin/proxy_route.go#queryProxy()` ](../../../internal/admin/proxy_route.go#queryProxy )
## `DELETE /api/v1/proxies/{proxyName}`
Supprimer le proxy
#### Paramètres
- `{proxyName}` - Nom du proxy
#### Exemple de résultat
2024-03-29 09:36:36 +01:00
```json
2023-07-08 20:19:43 +02:00
{
2024-03-29 09:36:36 +01:00
"data": {
"proxyName": "myproxy"
}
2023-07-08 20:19:43 +02:00
}
```
#### Source
Voir [`internal/admin/proxy_route.go#deleteProxy()` ](../../../internal/admin/proxy_route.go#deleteProxy )