managerr/backend/API_DOCS.md
2025-07-21 16:38:07 +02:00

295 lines
6.3 KiB
Markdown

# Documentation de l'API Managerr
## Authentification
### Inscription
- **URL**: `/api/auth/register`
- **Méthode**: `POST`
- **Description**: Crée un nouvel utilisateur
- **Corps de la demande**:
```json
{
"username": "string",
"email": "string",
"password": "string"
}
```
- **Réponse réussie**:
- **Code**: 201 Created
- **Contenu**:
```json
{
"user": {
"_id": "string",
"username": "string",
"email": "string"
},
"token": "string"
}
```
### Connexion
- **URL**: `/api/auth/login`
- **Méthode**: `POST`
- **Description**: Authentifie un utilisateur
- **Corps de la demande**:
```json
{
"email": "string",
"password": "string"
}
```
- **Réponse réussie**:
- **Code**: 200 OK
- **Contenu**:
```json
{
"user": {
"_id": "string",
"username": "string",
"email": "string"
},
"token": "string"
}
```
## Paramètres
### Obtenir les paramètres
- **URL**: `/api/settings`
- **Méthode**: `GET`
- **Description**: Récupère les paramètres de l'utilisateur actuel
- **En-têtes**: `Authorization: Bearer {token}`
- **Réponse réussie**:
- **Code**: 200 OK
- **Contenu**:
```json
{
"_id": "string",
"user": "string",
"sonarrUrl": "string",
"sonarrApiKey": "string",
"radarrUrl": "string",
"radarrApiKey": "string"
}
```
### Créer/Mettre à jour les paramètres
- **URL**: `/api/settings`
- **Méthode**: `POST`
- **Description**: Crée ou met à jour les paramètres de l'utilisateur actuel
- **En-têtes**: `Authorization: Bearer {token}`
- **Corps de la demande**:
```json
{
"sonarrUrl": "string",
"sonarrApiKey": "string",
"radarrUrl": "string",
"radarrApiKey": "string"
}
```
- **Réponse réussie**:
- **Code**: 200 OK
- **Contenu**:
```json
{
"_id": "string",
"user": "string",
"sonarrUrl": "string",
"sonarrApiKey": "string",
"radarrUrl": "string",
"radarrApiKey": "string"
}
```
### Tester la connexion Sonarr
- **URL**: `/api/settings/test-sonarr`
- **Méthode**: `POST`
- **Description**: Teste la connexion à l'API Sonarr
- **En-têtes**: `Authorization: Bearer {token}`
- **Corps de la demande**:
```json
{
"sonarrUrl": "string",
"sonarrApiKey": "string"
}
```
- **Réponse réussie**:
- **Code**: 200 OK
- **Contenu**:
```json
{
"success": true,
"message": "Connexion réussie à Sonarr"
}
```
### Tester la connexion Radarr
- **URL**: `/api/settings/test-radarr`
- **Méthode**: `POST`
- **Description**: Teste la connexion à l'API Radarr
- **En-têtes**: `Authorization: Bearer {token}`
- **Corps de la demande**:
```json
{
"radarrUrl": "string",
"radarrApiKey": "string"
}
```
- **Réponse réussie**:
- **Code**: 200 OK
- **Contenu**:
```json
{
"success": true,
"message": "Connexion réussie à Radarr"
}
```
## Sonarr (Séries)
### Obtenir toutes les séries
- **URL**: `/api/sonarr/series`
- **Méthode**: `GET`
- **Description**: Récupère toutes les séries depuis Sonarr
- **En-têtes**: `Authorization: Bearer {token}`
- **Paramètres de requête**:
- `sortKey` (optionnel): Clé de tri
- `sortDirection` (optionnel): Direction du tri (asc/desc)
- **Réponse réussie**:
- **Code**: 200 OK
- **Contenu**:
```json
[
{
"id": "number",
"title": "string",
"overview": "string",
"status": "string",
"nextAiring": "string",
"network": "string",
"images": [
{
"coverType": "string",
"url": "string"
}
]
}
]
```
### Obtenir le calendrier des séries
- **URL**: `/api/sonarr/calendar`
- **Méthode**: `GET`
- **Description**: Récupère le calendrier des épisodes à venir
- **En-têtes**: `Authorization: Bearer {token}`
- **Paramètres de requête**:
- `start` (optionnel): Date de début (YYYY-MM-DD)
- `end` (optionnel): Date de fin (YYYY-MM-DD)
- **Réponse réussie**:
- **Code**: 200 OK
- **Contenu**:
```json
[
{
"id": "number",
"seriesId": "number",
"seasonNumber": "number",
"episodeNumber": "number",
"title": "string",
"airDate": "string",
"hasFile": "boolean",
"seriesTitle": "string"
}
]
```
## Radarr (Films)
### Obtenir tous les films
- **URL**: `/api/radarr/movies`
- **Méthode**: `GET`
- **Description**: Récupère tous les films depuis Radarr
- **En-têtes**: `Authorization: Bearer {token}`
- **Paramètres de requête**:
- `sortKey` (optionnel): Clé de tri
- `sortDirection` (optionnel): Direction du tri (asc/desc)
- **Réponse réussie**:
- **Code**: 200 OK
- **Contenu**:
```json
[
{
"id": "number",
"title": "string",
"overview": "string",
"status": "string",
"inCinemas": "string",
"physicalRelease": "string",
"images": [
{
"coverType": "string",
"url": "string"
}
]
}
]
```
### Obtenir le calendrier des films
- **URL**: `/api/radarr/calendar`
- **Méthode**: `GET`
- **Description**: Récupère le calendrier des films à venir
- **En-têtes**: `Authorization: Bearer {token}`
- **Paramètres de requête**:
- `start` (optionnel): Date de début (YYYY-MM-DD)
- `end` (optionnel): Date de fin (YYYY-MM-DD)
- **Réponse réussie**:
- **Code**: 200 OK
- **Contenu**:
```json
[
{
"id": "number",
"title": "string",
"overview": "string",
"status": "string",
"inCinemas": "string",
"physicalRelease": "string",
"hasFile": "boolean"
}
]
```
## Réponses d'erreur communes
### Erreur d'authentification
- **Code**: 401 Unauthorized
- **Contenu**:
```json
{
"message": "Non autorisé"
}
```
### Erreur de validation
- **Code**: 400 Bad Request
- **Contenu**:
```json
{
"message": "Validation échouée",
"errors": {
"champ": ["Message d'erreur"]
}
}
```
### Erreur de connexion API
- **Code**: 503 Service Unavailable
- **Contenu**:
```json
{
"message": "Impossible de se connecter à l'API [Sonarr/Radarr]",
"error": "Détails de l'erreur"
}
```