# HELP TMDB PROJECT
## GENERAL
:::danger
**DISCLAIMER**
Ce qui va suivre dans ce document est uniquement un état des lieux de ce que j'ai utilisé personnellement pour réaliser ce projet et que j'ai jugé bon de vous décrire pour vous faciliter la tâche.
Vous n'êtes en aucun cas obligé d'implémenter toutes ces routes, je vous conseille donc fortement de regarder la documentation pour savoir ce qui est possible de faire.
:::
**BASE_URL**: https://api.themoviedb.org/3
**Construire votre requête:**
`${BASE_URL}/${ROUTE}?api_key={VOTRE_CLE API}`
>
> **Exemple:**
> https://api.themoviedb.org/3/authentication/session/new?api_key=....
### PRO TIP:
Dans l'exemple ci-dessous on suppose que "config" est un objet exporté dans un fichier config.js où vous auriez la config nécessaire à votre développement futur.

Vous pouvez construire une chaine de charactère à la volée sans utiliser l'operator `+` en créant la chaine avec l'accent grave ``` `blablabla${param}` ```
> **Exemple:**
``` javascript
const function = (media_type, page) => `${config.BASE_URL}/${media_type}/top_rated?api_key=${config.key}&page=${page}`
```
## Les routes principales
#### Authentification
| Method | Route | URL Params | Body Params |
| ------ | ----------------------------------------- | ---------- | ---------------------------------------------- |
| GET | /authentication/token/new | `api_key` | **None** |
| POST | /authentication/token/validate_with_login | `api_key` | `request_token`<br>`username`<br>`password` |
| POST | /authentication/session/new | `api_key` | `request_token` |
| GET | /account/ | `api_key`<br>`session_id` | **None** |
##### Description
**Route 1.** Permet de créer un nouveau `request_token`
**Route 2.** Valide l'authentification avec les identifiants de l'utilisateur
**Route3.** Permet de créer une nouvelle session et un `session_id` à l'utilisateur pour effectuer des actions par la suite
**Route4.** Details du compte
---
#### Films ou Séries
Que ce soir pour récupérer des films ou des séries, ces routes se présenterons sous la même forme. La seule chose qui changera sera le "**media_type**" de ce que vous voulez récupérer.
> **Exemple**
> Movies: https://api.themoviedb.org/3/movie/top_rated?api_key=blabla&page=1
> Tv: https://api.themoviedb.org/3/tv/top_rated?api_key=blabla&page=1
Dans cet exemple la seule chose qui change concrètement est donc le "**media_type**", le mot clé "tv" ou "movie"
:::info
REGARDEZ L'EXEMPLE DANS LE **PRO TIP** plus haut
:::
| Method | Route | URL Params | Body Params |
| -------- | -------- | -------- | -------- |
| GET | /${media_type}/popular | `api_key`<br>`page` | **None** |
| GET | /${media_type}/latest | `api_key`<br>`page` | **None** |
| GET | /${media_type}/top_rated | `api_key`<br>`page` | **None** |
| GET | /trending/${media_type}/week | `api_key` | **None** |
| GET | /${media_type}/\${id} | `api_key` | **None** |
| GET | /${media_type}/\${id}/credits | `api_key` | **None** |
##### Description
**Route1.** Récupère les medias populaire
**Route2.** Récupère les medias les plus récents
**Route3.** Récupère les medis les mieux notés
**Route4.** Récupère les tendances du media choisir par semaine ou par jour
**Route5.** Details du media choisi
**Route6.** Crédits du media choisir (acteurs, cast, etc..)
---
#### Relatif au compte
| Method | Route | URL Params | Body Params |
| -------- | -------- | -------- | -------- |
| GET | /account/${account_id}/favorite/\${media_type} | `api_key`<br>`session_id`<br>`page` | **None** |
| GET | /account/${account_id}/watchlist/\${media_type} | `api_key`<br>`session_id`<br>`page` | **None** |
| POST | /account/${account_id}/favorite/ | `api_key`<br>`session_id` | `media_type`<br>`media_id`<br>`favorite` |
| POST | /account/${account_id}/watchlist/ | `api_key`<br>`session_id` | `media_type`<br>`media_id`<br>`watchlist` |
| GET | /${media_type}/\${id}/account_states | `api_key`<br>`session_id` | **None** |
##### Description
**Route1.** Récupère la liste des favoris du compte spécifié en fonction du media souhaité
**Route2.** Récupère la watchlist du compte spécifié en fonction du media souhaité
**Route3.** Permet d'ajouter ou enlever un favoris de la liste
**Route4.** Permet d'ajouter ou enlever un media à sa watchlist
**Route5.** Permet de savoir si un media spécifique à été noté, mis en favoris, ou dans une watchlist