L'API officielle de ApyNext
English version in the README_en.md file
- Configurez Postgres sur votre machine, vous pouvez l'installer directement (plus d'infos ici) - choisissez également un mot de passe pour l'utilisateur postgres de la base de données - ou vous pouvez juste utiliser le fichier docker-compose.yml de ce projet :
- Installez Docker sur votre machine (plus d'informations ici).
- Installez également Docker compose (plus d'informations ici).
- Exécutez cette commande en remplaçant
<mot de passe>
par le mot de passe que vous souhaitez pour la BDD :
POSTGRES_PASSWORD=`<mot de passe>` docker compose up -d
- Renommez (ou copiez) le fichier .env.example en .env et renseignez les informations manquantes
Pour lancer l'API localement, il suffit d'exécuter la commande
cargo run
Requête : GET /
Renvoie :
- Code de status 200 et le message "Ok"
Requête : POST /register
Body (JSON) :
- username => chaîne de caractères entre 5 et 12 caractères compris, commençant par une lettre et ne pouvant contenir que des lettres, des nombres et des underscores
- email => chaîne de caractères d'un email valide
- password => chaîne de caractères contenant au moins 8 caractères
- birthdate => timestamp Unix entre 1900 et aujourd'hui
- dark_mode => booléen (facultatif)
- biography => chaîne de caractères de moins de 300 caractères (facultatif)
- is_male (facultatif pour des raisons de confidentialité) => booléen (true pour un homme et false pour une femme)
Renvoie :
- Code de status
200 Ok
- Code de status
400 Bad request
quand le body n'est pas un JSON valide - Code de status
403 Forbidden
et le message d'erreur lors d'une erreur client - Code de status
415 Unsupported Media Type
quand le headerContent-Type: application/json
est manquant - Code de status
422 Unprocessable Entity
lorsqu'un field JSON est manquant - Code de status
500 Internal Server Error
lors d'une erreur serveur
Requête : POST /register/email_confirm
Body (chaîne de caractères) :
- token de confirmation d'email
Renvoie :
- Code de status
200 Ok
et un token de connexion stocké comme cookie - Code de status
403 Forbidden
et le message d'erreur quand le token est manquant, invalide ou expiré par exemple - Code de status
500 Internal Server Error
lors d'une erreur serveur
Requête : POST /login
Body (JSON) :
- username_or_email => chaîne de caractères représentant soit :
- un pseudo entre 5 et 12 caractères compris, commençant par une lettre et ne pouvant contenir que des lettres, des nombres et des underscores
- un email valide
- password => mot de passe (au moins 8 caractères)
Renvoie :
- Code de status
200 Ok
- Code de status
400 Bad request
quand le body n'est pas un JSON valide - Code de status
403 Forbidden
et le message d'erreur lors d'une erreur client - Code de status
415 Unsupported Media Type
quand le headerContent-Type: application/json
est manquant - Code de status
422 Unprocessable Entity
lorsqu'un field JSON est manquant - Code de status
500 Internal Server Error
lors d'une erreur serveur
Requête : POST /login/a2f
Body (châine de caractères) :
- token de vérification de connexion
Renvoie :
- Code de status
200 Ok
et un token de connexion stocké comme cookie - Code de status
403 Forbidden
et le message d'erreur quand le token est manquant, invalide ou expiré
Requête : GET /ws
Plus d'informations dans doc/websockets.md
Requête : POST /@:username/follow
Headers :
- Token Bearer
Renvoie :
- Code de status
200 Ok
- Code de status
403 Forbidden
avec le message d'erreur lors d'une erreur client - Code de status
500 Internal Server Error
lors d'une erreur serveur
Requête : POST /posts/new
Headers :
- Token Bearer
Body (JSON) :
- title => chaîne de caractères
- description => chaîne de caractères
- content => chaîne de caractères
Renvoie :
- Code de status
200 Ok
- Code de status
403 Forbidden
avec le message d'erreur lors d'une erreur client - Code de status
500 Internal Server Error
lors d'une erreur serveur
Requête : GET /posts
Headers :
- Token Bearer (facultatif)
Query :
- limit => nombre supérieur ou égal à 0 (facultatif) -> limite des posts envoyés
- offset => nombre supérieur ou égal à 0 (facultatif) -> nombre de posts ignorés
Renvoie :
- Code de status
200 Ok
Body (JSON) :[ { "id": <nombre>, //id du post "author": { "id": <nombre>, //id de l'auteur "username": <chaîne de caractères>, //nom d'utilisateur de l'auteur "permission": <nombre>, //permission de l'auteur (0 = Utilisateur, 1 = Modérateur et 2 = Administrateur) }, "title": <chaîne de caractères>, //titre du post "content": <chaîne de caractères>, //contenu du post "created_at": <timestamp UTC>, //date de création du post "updated_at": <timestamp UTC> //date de la dernière modification du post } ]
- Code de status
500 Internal Server Error
lors d'une erreur serveur