{"id":34674723,"url":"https://github.com/imtomdev/bilemo","last_synced_at":"2026-04-28T05:34:43.210Z","repository":{"id":57068968,"uuid":"220807463","full_name":"imtomdev/bilemo","owner":"imtomdev","description":"Créez un web service exposant une API","archived":false,"fork":false,"pushed_at":"2021-06-12T13:31:15.000Z","size":3450,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-26T09:34:47.903Z","etag":null,"topics":["completed-project","openclassrooms","openclassrooms-backend"],"latest_commit_sha":null,"homepage":"https://bilemo.thomas-claireau.fr/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/imtomdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-11-10T15:13:01.000Z","updated_at":"2021-06-12T13:31:18.000Z","dependencies_parsed_at":"2022-08-24T10:20:41.026Z","dependency_job_id":null,"html_url":"https://github.com/imtomdev/bilemo","commit_stats":null,"previous_names":["imtomdev/bilemo"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/imtomdev/bilemo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imtomdev%2Fbilemo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imtomdev%2Fbilemo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imtomdev%2Fbilemo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imtomdev%2Fbilemo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/imtomdev","download_url":"https://codeload.github.com/imtomdev/bilemo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imtomdev%2Fbilemo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32368533,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-27T20:07:02.737Z","status":"online","status_checked_at":"2026-04-28T02:00:07.250Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["completed-project","openclassrooms","openclassrooms-backend"],"created_at":"2025-12-24T20:18:51.706Z","updated_at":"2026-04-28T05:34:43.171Z","avatar_url":"https://github.com/imtomdev.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# [PHP] - Bilemo - Créez un web service exposant une API\n\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/a04d6e15461c4d67a4a9b8ebc9b79610)](https://www.codacy.com/manual/thomas-claireau/PHP-P7-Openclassrooms?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=thomas-claireau/PHP-P7-Openclassrooms\u0026utm_campaign=Badge_Grade)\n\n## Installation du projet\n\nVia Composer :\n\n```text\ncomposer create-project thomas-claireau/bilemo:dev-master\n```\n\nDans le cas où vous téléchargez directement le projet (ou encore avec `git clone`), effectuez un `composer install` à la racine du projet.\n\nInstallez ensuite les dépendances front du projet (pour lancer l'interface d'api-platform). Placez-vous à la racine du projet :\n\n```text\nnpm install\n```\n\n### Remarque\n\n#### Accès base de données\n\nLe projet est livré sur Packagist sans base de données. Cela signifie qu'il faut que vous ajoutiez votre configuration, dans le fichier `.env`, dans la partie `DATABASE_URL`.\n\n#### Injection SQL et structure du projet\n\nPour obtenir une structure similaire à mon projet au niveau de la base de données, je vous joins aussi dans le dossier `~src/Migrations/` les versions de migrations que j'ai utilisées. Vous pouvez donc recréer la base de données en effectuant la commande suivante, à la racine du projet :\n\n```text\nphp bin/console doctrine:migrations:migrate\n```\n\nAprès avoir créer votre base de données, vous pouvez également injecter un jeu de données en effectuant la commande suivante :\n\n```text\nphp bin/console doctrine:fixtures:load\n```\n\n### Lancer le projet\n\nA la racine du projet :\n\n-   Pour lancer le serveur de développement, effectuez un `npm run dev-server`.\n-   Pour lancer le serveur de symfony, effectuez un `php bin/console server:run`.\n\n### Authentification\n\nA ce niveau la, vos requêtes vers l'api seront refusées car vous ne serez pas authentifié au sein du projet. Suivez donc les étapes suivantes :\n\n#### 1. Générer les clés SSH pour le Json Web Token (JWT)\n\n#### 2. Récupérez ou créez vous un compte\n\nDans les fixtures du projet (`src/DataFixtures`), ajoutez votre propre compte.\n\nVous pouvez aussi utiliser le compte suivant :\n\n-   email : root@root.fr\n-   password : root\n\n#### 3. Générez un JWT\n\n```text\ncurl -X POST -H \"Content-Type: application/json\" http://bilemo.thomas-claireau.fr/authentication_token -d \"{\\\"email\\\":\\\"YOUR_EMAIL\\\",\\\"password\\\":\\\"YOUR_PASSWORD\\\"}\"\n```\n\nRemplacez YOUR_EMAIL par votre email (par ex. root@root.fr) et YOUR_PASSWORD par votre mot de passe (par ex. root)\n\nVous devriez obtenir le résultat suivant :\n\n```json\n{\n\t\"token\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOjE1ODI4NzA2NzEsImV4cCI6MTU4Mjg3NDI3MSwicm9sZXMiOlsiUk9MRV9BRE1JTiJdLCJlbWFpbCI6InJvb3RAcm9vdC5mciJ9.J4lnq2gxrrKY5MB39AGvVYlM7ezYvTcgI-ITBdjxXNAu-5ePTqYdW6-SaJLyZCXdDeUXFi0An89oPVHIRgzdifLyav5CLxUnkX_aDQcxD4Gnh3pLJnOeRb7zBGN7XR8ZUG1raG6S84ZrIzdANCkz-xq24Z1F-ahPd30SxmgV0GNFh5bH7pzfgaJflhpi0KMWdL1dUJgK788UGJvVW7FYNcm9SsR3h3-wCd33bcJ1h60f4QQ-xxEMCZihfEhIvMmotcA1r\"\n}\n```\n\n#### 4. Utilisez le JWT pour effectuer des opérations\n\nRécupérez le token généré pour commencer à utiliser l'API de Bilemo.\n\n```text\ncurl -H \"Authorization: Bearer {yourtoken}\" {yourdomain}/api/{entrypoint}\n```\n\nPour connaitre tous les entrypoints disponibles, allez voir la [démo du projet 👋](http://bilemo.thomas-claireau.fr)\n\n## Contexte\n\nBileMo est une entreprise offrant toute une sélection de téléphones mobiles haut de gamme.\n\nVous êtes en charge du développement de la vitrine de téléphones mobiles de l’entreprise BileMo. Le business modèle de BileMo n’est pas de vendre directement ses produits sur le site web, mais de fournir à toutes les plateformes qui le souhaitent l’accès au catalogue via une API (Application Programming Interface). Il s’agit donc de vente exclusivement en B2B (business to business).\n\nIl va donc falloir que vous exposiez un certain nombre d’API pour que les applications des autres plateformes web puissent effectuer des opérations.\n\n## Besoin client\n\nLe premier client a enfin signé un contrat de partenariat avec BileMo ! C’est le branle-bas de combat pour répondre aux besoins de ce premier client qui va permettre de mettre en place l’ensemble des API et les éprouver tout de suite.\n\nAprès une réunion dense avec le client, il a été identifié un certain nombre d’informations. Il doit être possible de :\n\nconsulter la liste des produits BileMo ;\nconsulter les détails d’un produit BileMo ;\nconsulter la liste des utilisateurs inscrits liés à un client sur le site web ;\nconsulter le détail d’un utilisateur inscrit lié à un client ;\najouter un nouvel utilisateur lié à un client ;\nsupprimer un utilisateur ajouté par un client.\nSeuls les clients référencés peuvent accéder aux API. Les clients de l’API doivent être authentifiés via Oauth ou JWT.\n\nVous avez le choix de mettre en place un serveur Oauth et d’y faire appel (en utilisant le FOSOAuthServerBundle) ou d’utiliser Facebook, Google ou LinkedIn. Si vous décidez d’utiliser JWT, il vous faudra vérifier la validité du token ; l’usage d’une librairie est autorisée.\n\n## Présentation des données\n\nLe premier partenaire de BileMo est très exigeant : il requiert que vous exposiez vos données en suivant les règles des niveaux 1, 2 et 3 du modèle de Richardson. Il a demandé à ce que vous serviez les données en JSON. Si possible, le client souhaite que les réponses soient mises en cache afin d’optimiser les performances des requêtes en direction de l’API.\n\n## ✔️ Projet validé\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimtomdev%2Fbilemo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimtomdev%2Fbilemo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimtomdev%2Fbilemo/lists"}