Skip to main content

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: