API
Installer des modules déjà développés par la communauté Symfony
Les modules suivants seront utilisés :
- friendsofsymfony/rest-bundle → Ce bundle fournit divers outils pour développer rapidement des API et des applications RESTful avec Symfony.
- symfony/http-client → (un bundle natif) qui est un client HTTP bas-niveau. Il nous fournit des outils permettant de consommer des APIs. Un S_SERVICE sera créé pour consommer cette API.
- nelmio/api-doc-bundle → Ce bundle permet de générer une documentation au format OpenApi (swagger).
- beberlei/doctrineextensions → Ce bundle rajoute des extensions à Doctrine permettant l'utilisation de certaines fonctions MySQL.
Installer les modules HubService développés par Feelity
Les modules suivants seront utilisés :
- apb/organisation-bundle -> Ce bundle fournit divers outils de gestion d'organisation, install user-bundle et mailer-bundle automatiquement
- apb/ping-bundle -> Ce bundle fournit divers outils de maintenance
- apb/object-storage-bundle -> Ce bundle fournit divers outils de gestion de fichier, et de stockage interne ou externe
La documentation API SolarBoost
S_CONTROLLER
PingController
ping
- Description: retourne les données de santé de l'api
- Route: /api/v1/ping-bundle/public
- Mode d'autorisation: PUBLIC_ACCESS
- Réponse:
- 200: Retourne un JSON contenant les données de santé de l'api et du serveur
- 400: Retourne un JSON avec les différentes erreurs trouvées
RegistrationController
registration
- Description: Créé un compte utilisateur. Le flow de validation dépend de la configuration
- Route: /api/v1/user-bundle/public/register (POST)
- Mode d'autorisation: ROLE_USER
- Réponse:
- 201: Retourne un JSON contenant un access_token ou un token jwt en fonction de la configuration
- 400: Paramètre BODY non conforme ou l'utilisateur existe déjà
registration send code
- Description: Envoi un nouveau code de validation a un email
- Route: /api/v1/user-bundle/register/code/send (GET)
- Mode d'autorisation: ROLE_USER
- Réponse:
- 202: Retourne un JSON contenant un statut
- 400: L'email a déjà été validé
- 404: La registration n'existe pas
registration validate code
- Description: Valide l'email
- Route: /api/v1/user-bundle/register/code/validate (POST)
- Mode d'autorisation: PUBLIC_ACCESS
- Réponse:
- 200: Retourne un JSON contenant un statut
- 400: L'email a déjà été validé
- 404: La registration n'existe pas
ProfileController
get me
- Description: retourne les données de profile de l'utilisateur connecté
- Route: /api/v1/users/me (GET)
- Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant l'utilisateur
- 401: Token non valide
patch me
- Description: met à jour les données de profile de l'utilisateur connecté
- Route: /api/v1/users/me (PATCH)
- Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant l'utilisateur
- 400: Paramètre BODY non conforme
- 401: Token non valide
delete me
- Description: supprime le compte de l'utilisateur connecté -> 🧠🧠🧠🧠🧠🧠 supprime quoi comme donnée?
- Route: /api/v1/users/me (DELETE)
- Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant l'utilisateur
- 401: Token non valide
OrganisationSiteController
get
- Description: retourne les données d'une installation liée à une organisation
- Route:
/api/v1/organisations/{id}/sites/{id}(GET) - Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant l'installation
- 401: L'utilisateur n'a pas accès à cette installation ou cette organisation
- 404: L'installation ou l'organisation n'existe pas
listing
- Description: retourne les installations liées à une organisation
- Route:
/api/v1/organisations/{id}/sites(GET) - Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant des installations et un count
- 400: Paramètre QUERY non valide
- 401: L'utilisateur n'a pas accès à cette organisation
- 404: L'installation n'existe pas
create
- Description: crée une nouvelle installation dans une organisation
- Route:
/api/v1/organisations/{id}/sites(POST) - Mode d'autorisation: ROLE_USER
- Réponse:
- 201: Retourne un JSON contenant l'installation
- 400: Paramètre QUERY non valide
- 401: L'utilisateur n'a pas accès à cette organisation
edit
- Description: met à jour une installation
- Route:
/api/v1/organisations/{id}/sites/{id}(PATCH) - Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant l'installation
- 400: Paramètre QUERY non valide
- 401: L'utilisateur n'a pas accès à cette installation ou cette organisation
- 404: L'installation n'existe pas
delete
- Description: supprime une installation si owner sinon l'accès
- Route:
/api/v1/organisations/{id}/sites/{id}(DELETE) - Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant l'id de l'installation
- 404: Paramètre QUERY non valide
- 401: L'utilisateur n'a pas accès à cette installation ou cette organisation
- 404: L'installation n'existe pas
invite
- Description: Envoi ou renvoi une invitation à un email pour rejoindre l'installation
- Route:
/api/v1/organisations/{id}/sites/{id}/invitation/{type}(POST) - Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Return un JSON le status de l'invitation
- 400: Paramètres QUERY non valides
- 401: L'utilisateur n'a pas accès à cette installation ou cette organisation n'est pas owner
- 404: L'installation n'a pas été trouvée
OrganisationController
get
- Description: Récupère le détail d'une organisation
- Route:
/api/v1/organisations/{id}(GET) - Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant le détail de l'organisation
- 401: L'utilisateur n'a pas accès à cette organisation
- 404: L'organisation n'existe pas
listing
- Description: Retourne une liste d'organisation
- Route: /api/v1/organisations (GET)
- Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant une liste de détails d'organisation ainsi qu'un count
- 400: Les paramètres QUERY ne sont pas valides
create
- Description: Créer une nouvelle organisation
- Route: /api/v1/organisations (POST)
- Mode d'autorisation: ROLE_USER
- Réponse:
- 201: Retourne un JSON contenant la nouvelle organisation venant d'être crée
- 400: Les paramètres BODY ne sont pas valide
edit
- Description: Met à jour une organisation
- Route:
/api/v1/organisations/{id}(PATCH) - Mode d'autorisation: ROLE_USER
- Réponse:
- 201: Retourne un JSON contenant la nouvelle organisation venant d'être crée
- 400: Les paramètres BODY ne sont pas valide
- 401: L'utilisateur n'a pas accès à cette organisation ou non admin de l'organisation
- 404: L'organisation n'existe pas
delete
- Description: Supprime une organisation
- Route:
/api/v1/organisations/{id}(DELETE) - Mode d'autorisation: ROLE_USER
- Réponse:
- 201: Retourne un JSON contenant l'id de l'organisation
- 401: L'utilisateur n'a pas accès à cette organisation ou non admin de l'organisation
- 404: L'organisation n'existe pas
OrganisationUserController
listing
- Description: Retourne une liste d'utilisateur membre de l'organisation
- Route:
/api/v1/organisations/{id}/users(GET) - Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant une liste de détails d'utilisateurs ainsi qu'un count
- 400: Les paramètres QUERY ne sont pas valides
- 401: L'utilisateur n'a pas accès à cette organisation
- 404: L'organisation n'existe pas
create
- Description: Ajoute un membre à l'organisation, créer un compte s'il n'existe pas, et son lien avec l'organisation
- Route:
/api/v1/organisations/{id}/users(POST) - Mode d'autorisation: ROLE_USER
- Réponse:
- 201: Retourne un JSON contenant les infos du nouveau membre de l'organisation
- 400: Les paramètres BODY ne sont pas valides
- 401: L'utilisateur n'a pas accès à cette organisation
- 404: L'organisation n'existe pas
edit
- Description: Met à jour les infos d'un membre de l'organisation
- Route:
/api/v1/organisations/{id}/users/{id}(PATCH) - Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant les infos du membre de l'organisation
- 400: Les paramètres BODY ne sont pas valides
- 401: L'utilisateur n'a pas accès à cette organisation ou non admin de l'organisation
- 404: L'organisation n'existe pas
delete
- Description: Supprime un membre de l'organisation
- Route:
/api/v1/organisations/{id}/users/{id}(DELETE) - Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant l'id du membre supprimé
- 401: L'utilisateur n'a pas accès à cette organisation ou non admin de l'organisation
- 404: L'organisation n'existe pas
resend_invitation
- Description: Renvoi le mail d'invitation pour rejoindre l'organisation
- Route:
/api/v1/organisations/{id}/users/{id}/send-invitation(GET) - Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant le statut de l'invitation
- 401: L'utilisateur n'a pas accès à cette organisation ou non admin de l'organisation
- 404: L'organisation n'existe pas
OrganisationUserProfileController
get
- Description: Retourne les informations de l'utilisateur dans l'organisation
- Route:
/api/v1/organisations/{id}/users/{id}(GET) - Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant l'utilisateur
- 404: L'organisation n'existe pas
request
- Description: Envoi un email au contact de l'organisation pour demander un accès à l'organisation
- Route:
/api/v1/organisations/{id}/users/{id}/access-requests(POST) - Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant le status de la demande
- 400: L'utilisateur est deja dans l'organisation ou une demande est deja en attente
- 404: L'organisation n'existe pas
accept
- Description: Accepte ou rejete une demande d'accès
- Route:
/api/v1/organisations/{id}/users/{id}/access-requests(PATCH) - Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant le status de la demande
- 400: L'utilisateur est deja dans l'organisation ou une demande est deja en attente
- 404: L'organisation n'existe pas
DeviceController
listing
- Description: Retourne la liste des devices de l'utilisateur connecté
- Route: /api/v1/users/me/devices (GET)
- Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant la liste des devices ainsi qu'un count
- 400: Les paramètres QUERY ne sont pas valides
edit
- Description: Crée ou modifie un device de l'utilisateur connecté
- Route: /api/v1/users/me/devices (PUT)
- Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant le détail du device
- 400: Les paramètres QUERY ne sont pas valides
delete
- Description: Supprime un device de l'utilisateur connecté
- Route:
/api/v1/users/me/devices/{id}(DELETE) - Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant l'id de device supprimé
- 404: Le device n'existe pas ou n'appartient pas à l'utilisateur
LoginController
login
- Description:
- Route: /api/v1/user-bundle/login/social (POST)
- Mode d'autorisation:
- Réponse:
- 200: Renvoi un JSON contenant le détails du access token
- 400: Les paramètres BODY sont invalides
- 403: L'utilisateur n'a pas pu être crée après sa connexion sociale
ProductFirmwareController
get
- Description: Retourne un firmware et sa file
- Route:
/api/v1/firmwares/{id}(GET) - Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant un firmware
- 400: Paramètres QUERY sont invalides
listing
- Description: Retourne la liste des différents firmwares
- Route: /api/v1/firmwares (GET)
- Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant une liste de firmwares ainsi qu'un count
- 400: Paramètres QUERY sont invalides
add
- Description: Crée un nouveau firmware
- Route: /api/v1/firmwares (POST)
- Mode d'autorisation: ROLE_SUPPORT
- Réponse:
- 201: Retourne un JSON contenant un le nouveau firmware
- 400: Paramètres BODY invalides
edit
- Description: Met à jour un firmware
- Route:
/api/v1/firmwares/{id}(PATCH) - Mode d'autorisation: ROLE_SUPPORT
- Réponse:
- 201: Retourne un JSON contenant le firmware
- 400: Paramètres BODY invalides
ProductionController
add
- Description: Crée un nouveau produit ou modifie l'ancien si son serialnumber est trouvé, et son certificat sur scaleway
- Route: /api/v1/production/products (POST)
- Mode d'autorisation: ROLE_PRODUCTION
- Réponse:
- 201: Retourne un JSON contenant le produit venant d'être crée
- 400: Paramètres BODY invalides
reset
- Description: Réinitialise un produit
- Route:
/api/v1/production/products/{serialNumber}/reset(POST) - Mode d'autorisation: ROLE_PRODUCTION
- Réponse:
- 201: Retourne un JSON contenant le produit
- 400: Paramètres BODY invalides
CertificateController
listing
- Description: Retourne un fichier zip ou tar contenant les différents certificats
- Route: /api/v1/certificates (GET)
- Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne le fichier
- 404: Le fichier n'a pas été trouvé sur le serveur
SiteEventController
listing
- Description: Retourne une liste d'énèvement généré depuis le site
- Route:
/api/v1/sites/{id}/events(GET) - Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant une liste d'évènement ainsi qu'un count
- 400: Paramètre QUERY non valides
- 401: L'utilisateur n'a pas accès à cette installation
- 404: L'installation n'existe pas
read
- Description: Récupère le détails d'un évènement et le marque comme lu
- Route:
/api/v1/sites/{id}/events/{id}(GET) - Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant le détail de l'évèvement
- 401: L'utilisateur n'a pas accès à cette installation ou cet évènement
- 404: L'installation ou l'évènement n'existe pas
SiteDataController
listing
- Description: Retour les datas générés par l'installation
- Route:
/api/v1/sites/{id}/data(GET) - Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant les données générées par les produits de cette installation
- 400: Paramètres QUERY invalides
- 401: L'utilisateur n'a pas accès à cette installation
- 404: L'installation n'existe pas
RedirectPageController
assistant
- Description: Génère une page de redirection vers l'application mobile
- Route: /public/redirect (GET)
- Mode d'autorisation: PUBLIC
- Réponse:
- 200: Ouvre une page dans le navigateur de l'utilisateur avec un bouton de redirection
ForgottenPasswordController
request
- Description: Créé une demande de réinitialisation de mot de passe
- Route: /api/v1/user-bundle/public/forgotten-password/request (POST)
- Mode d'autorisation: ROLE_USER
- Réponse:
- 204: Aucun retour
- 400: Paramètres BODY non valides
resetting
- Description: Modifie le mot de passe de l'utilisateur
- Route:
/api/v1/user-bundle/public/forgotten-password/resetting/{token}(POST) - Mode d'autorisation: ROLE_USER
- Réponse:
- 204: Aucun retour
- 400: Paramètres BODY non valides
- 404: Le token n'existe pas
InseeSearchController
search
- Description: Cherche une liste d'organisation via une api externe
- Route: /api/v1/searches/organisation (GET)
- Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne un JSON contenant une liste d'entreprise
- 401: L'utilisateur n'a pas accès à cette ressource
MediaController
get
- Description: Cherche un media et son fichier enregistré sur le serveur
- Route:
/api/v1/medias/{id}(GET) - Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retourne le fichier en disposition inline
- 401: L'utilisateur n'a pas accès à cette ressource
- 404: Le média ou le fichier n'existe pas
create
- Description: Crée un nouveau média et enregistre son fichier sur le serveur
- Route: /api/v1/medias (POST)
- Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retour un JSON contenant le détail du media crée
- 400: Paramètre BODY non valide, ou file manquante
- 401: L'utilisateur n'a pas accès à cette ressource
delete
- Description: Supprime un média et son fichier associé sur le serveur
- Route: /api/v1/medias (DELETE)
- Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Retour un JSON contenant le détail du media crée
- 401: L'utilisateur n'a pas accès à cette ressource
- 404: Le média n'existe pas
OrganisationSiteMemberController
list
- Description: Retourne un listing contenant les membres du site
- Route:
/api/v1/organisations/{id}/sites/{id}(GET) - Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Un JSON contenant le listing et un count
- 401: L'utilisateur n'a pas accès à cette ressource
- 404: L'invitation n'existe pas
create
- Description: Ajoute un nouveau membre et envoi une invitation
- Route:
/api/v1/organisations/{id}/sites/{id}/members(POST) - Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Un JSON contenant le status de l'invitation
- 400: Paramètre BODY ou QUERY non valide
- 401: L'utilisateur n'a pas accès à cette ressource
- 404: L'invitation n'existe pas
edit
- Description: Met à jour les informations d'un membre
- Route:
/api/v1/organisations/{id}/sites/{id}/members(PUT) - Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Un JSON contenant le status de l'invitation
- 400: Paramètre BODY ou QUERY non valide
- 401: L'utilisateur n'a pas accès à cette ressource
- 404: L'invitation n'existe pas
accept
- Description: Accepte ou refuse une invitation à une installation
- Route:
/api/v1/organisations/{id}/sites/{id}/members(PUT) - Mode d'autorisation: ROLE_USER
- Réponse:
- 200: Un JSON contenant le status de l'invitation
- 400: Paramètre BODY ou QUERY non valide
- 401: L'utilisateur n'a pas accès à cette ressource
- 404: L'invitation n'existe pas
Controller
__
- Description:
- Route:
- Mode d'autorisation:
- Réponse:
- 200:
- 400: