{"id":21862653,"url":"https://github.com/etalab/admin_api_entreprise","last_synced_at":"2026-02-22T13:02:30.966Z","repository":{"id":37080077,"uuid":"203534644","full_name":"etalab/admin_api_entreprise","owner":"etalab","description":"Site vitrine / backoffice de API Entreprise","archived":false,"fork":false,"pushed_at":"2025-04-11T06:48:45.000Z","size":46515,"stargazers_count":10,"open_issues_count":14,"forks_count":6,"subscribers_count":8,"default_branch":"develop","last_synced_at":"2025-04-11T08:57:52.489Z","etag":null,"topics":["api","dinum","rails"],"latest_commit_sha":null,"homepage":"https://entreprise.api.gouv.fr","language":"SCSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/etalab.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-08-21T07:52:46.000Z","updated_at":"2025-04-11T06:45:05.000Z","dependencies_parsed_at":"2024-05-20T07:45:38.594Z","dependency_job_id":"b0a4adc1-8397-469b-ac30-83e02cfeb92d","html_url":"https://github.com/etalab/admin_api_entreprise","commit_stats":null,"previous_names":[],"tags_count":271,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etalab%2Fadmin_api_entreprise","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etalab%2Fadmin_api_entreprise/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etalab%2Fadmin_api_entreprise/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etalab%2Fadmin_api_entreprise/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/etalab","download_url":"https://codeload.github.com/etalab/admin_api_entreprise/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248948706,"owners_count":21187920,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["api","dinum","rails"],"created_at":"2024-11-28T03:16:45.611Z","updated_at":"2026-02-22T13:02:30.953Z","avatar_url":"https://github.com/etalab.png","language":"SCSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Site vitrine / backoffice de [API Entreprise](https://entreprise.api.gouv.fr) et [API Particulier](https://particulier.api.gouv.fr)\n\n[![Tests](https://github.com/etalab/admin_api_entreprise/actions/workflows/tests.yml/badge.svg)](https://github.com/etalab/admin_api_entreprise/actions/workflows/tests.yml)\n[![Linter](https://github.com/etalab/admin_api_entreprise/actions/workflows/lint.yml/badge.svg)](https://github.com/etalab/admin_api_entreprise/actions/workflows/lint.yml)\n[![Security](https://github.com/etalab/admin_api_entreprise/actions/workflows/security.yml/badge.svg)](https://github.com/etalab/admin_api_entreprise/actions/workflows/security.yml)\n\n## Requirements\n\n- ruby 3.4.7\n- redis-server \u003e= 6\n- postgresql \u003e= 9\n- Node.js \u003e= 6 pour mjml\n\n## Install\n\n### Sans Docker\n\nIl suffit de lancer la commande suivante pour configurer la base de données,\ninstaller les paquets et importer les tables de la base de données :\n\n```sh\n./bin/install.sh\n```\n\n### Avec Docker\n\nInstaller `Docker` et `docker-compose` (sur Mac tout est\n[ici](https://docs.docker.com/desktop/mac/install/))\n\nPour installer l'application :\n\n```sh\nmake install\n```\n\nPour lancer l'application :\n\n```sh\nmake start\n```\n\n**L'application doit être lancée pour exécuter les autres commandes.**\n\nPour arrêter:\n\n```sh\nmake stop\n```\n\nEn cas de problème, pour réinstaller la base de données:\n\n```sh\nmake reinstall_database\n```\n\n## Tests\n\nPour faire tourner les tests, un navigateur headless est necessaire (au moins\nsous linux).\n\n```sh\nsudo apt install chromium-browser\n```\n\nIl faut lancer:\n\n```sh\nbin/rspec\n```\n\n[Guard](https://github.com/guard/guard) est aussi installé:\n\n```sh\nguard\n```\n\n## Prévisualisation des mails\n\nUne fois le serveur local lancé, vous pouvez prévisualiser les mails [à cette adresse](http://localhost:3000/rails/mailers)\n\n### Static security\n\n[brakeman](https://github.com/presidentbeef/brakeman) est installé. Vous pouvez\nl'utiliser en lançant la commande suivante:\n\n```sh\n./bin/brakeman\n```\n\n### Développement\n\nVous pouvez importer des données afin d'avoir un site qui ne soit pas vide:\n\n```sh\nrails db:seed:replant\n```\n\nEn local et sandbox, la connexion s'effectue sur `auth-test.api.gouv.fr` qui est remplie\nde données de fixtures (disponible\n[ici](https://github.com/betagouv/api-auth/blob/master/scripts/fixtures.sql))\n\nLes comptes suivants sont disponibles :\n\n- user@yopmail.com / user@yopmail.com -\u003e utilisateur normal\n- api-entreprise@yopmail.com / api-entreprise@yopmail.com -\u003e Admin\n\n#### Bypass de connexion (development, staging, sandbox)\n\nPour contourner ProConnect (utile si le 2FA bloque la connexion), une route de bypass est disponible en environnements non-production :\n\n```\n# Development\nhttp://entreprise.api.localtest.me:5000/compte/dev-login?email=user@yopmail.com\nhttp://particulier.api.localtest.me:5000/compte/dev-login?email=user@yopmail.com\n\n# Staging\nhttps://staging.entreprise.api.gouv.fr/compte/dev-login?email=user@yopmail.com\nhttps://staging.particulier.api.gouv.fr/compte/dev-login?email=user@yopmail.com\n\n# Sandbox\nhttps://sandbox.entreprise.api.gouv.fr/compte/dev-login?email=user@yopmail.com\nhttps://sandbox.particulier.api.gouv.fr/compte/dev-login?email=user@yopmail.com\n```\n\nEmails disponibles dans les seeds : `user@yopmail.com`, `contact_technique@yopmail.com`, `editeur@yopmail.com`, `user10@yopmail.com`\n\n### Sans Docker\n\nPour lancer le server:\n\n```sh\n./bin/local.sh\n\n# Pour load le fichier OpenAPI local:\nLOAD_LOCAL_OPEN_API_DEFINITIONS=true ./bin/local.sh\n```\n\nVous pouvez accéder ensuite accéder au site via les adresses suivantes:\n\n```\n# Pour visualiser le site d'API Entreprise\nhttp://entreprise.api.localtest.me:5000/\n# Pour visualiser le site d'API Particulier\nhttp://particulier.api.localtest.me:5000/\n```\n\n### Avec Docker\n\nPour lancer le server:\n\n```sh\ndocker-compose up\n```\n\nVous pouvez accéder ensuite accéder au site via le'adresse suivante:\n\n```\n# Pour visualiser le site d'API Entreprise\nhttp://entreprise.api.localtest.me:5000/\n# Pour visualiser le site d'API Particulier\nhttp://particulier.api.localtest.me:5000/\n```\n\n#### (API Entreprise) Stub des requêtes SIADE en developpement\n\nPour la page `/profile/attestations`, en développement on appelle le staging de SIADE avec un stub du token de test,\nceci pour simplifier les démos / intervenir sur l'interface plus facilement.\n\nLe résultat de la recherche est donc toujours le même (et constitué des fausses données renvoyées par le staging).\n\n## Déploiements\n\n```sh\n./bin/deploy [env] [branch]\n```\n\n`env` est par défaut à `production`, et accepte uniquement `sandbox`, `staging`\net `production`\n`branch` est pris en compte uniquement si `env` est `sandbox`\n\n\n## Ajout de credentials via rails:credentials\n\nAvant toute chose, lisez la partie sur la gestion des credentials chiffré dans\nla [doc officielle de\nRails](https://edgeguides.rubyonrails.org/security.html#environmental-security)\n\nChaque environnement possède son propre fichier de credentials.\n\nPour les environments de tests et developments, le fichier de développment est un lien\nsymbolique sur le fichier de test : modifier l'un modifie l'autre, et la\nclé est présente dans le dépôt. Il ne faut mettre aucune donnée sensible dans\nce fichier.\n\nPour les fichiers de production (i.e. sandbox, staging et production), il y a\naussi plusieurs fichiers. Les clés ne sont pas versionnées, il faut les importer\ndepuis le vault d'ansible du dépôt stockant l'ensemble des secrets.\n\nVous pouvez executer le script\n[`scripts/import_master_keys.sh`](./scripts/import_master_keys.sh) pour\neffectuer l'import.\n\nPour rappel, la commande d'édition:\n\n```sh\nrails credentials:edit\n```\n\n### Premier déploiement\n\nAprès le premier déploiement sur une machine : la BDD est vide, les\nadministrateurs n'existent pas, aucun rôle, etc\n\n```sh\nRAILS_ENV=staging bundle exec rake db_seed:scopes\n```\n\n### Paramètres d'environnements\n\nLes fichiers suivants ne sont pas déployés par mina. Ils contiennent des\nvariables d'environnements qui doivent être déployées au préalable par Ansible\nsur les machines de production.\n\n- `config/database.yml`\n- `config/credentials/sandbox.key`\n- `config/credentials/staging.key`\n- `config/credentials/production.key`\n- `config/environments/rails_env.rb`\n- `config/initializers/cors.rb`\n\n## Documentation métier\n\nCi-dessous les diverses rubriques principalement à destination des métiers /\nproduits pour itérer sur le site (que ce soit en terme de contenu ou fonctionnel)\n\n- [Gestion des webhooks DataPass](docs/webhooks.md)\n- [Blog posts](docs/blog_posts.md)\n- [Design (CSS and stuff)](docs/design.md)\n- Technique\n  - [Utilisation des modals avec Turbo](docs/tech-modal-turbo.md)\n- Contenu\n  - [Gestion des wordings (layouts, templates, FAQ)](docs/wordings.md)\n  - [Ajout d'un nouvel endpoint dans le catalogue](docs/endpoint.md)\n  - [Proposer des modifications de la doc](config/locales)\n\n## Les mails transactionnels\nLes templates de mails transactionnels sont disponibles ici :\n\n**API Entreprise :**\n- Mails de demande d'accès : [./api_entreprise/authorization_request_mailer](https://github.com/etalab/admin_api_entreprise/tree/develop/app/views/api_entreprise/authorization_request_mailer)\n- Mail de prolongement des jetons : [./api_entreprise/token_mailer](https://github.com/etalab/admin_api_entreprise/tree/develop/app/views/api_entreprise/token_mailer)\n- Mails de transfert d'habilitation :\n[./api_entreprise/user_mailer](https://github.com/etalab/admin_api_entreprise/tree/develop/app/views/api_entreprise/user_mailer)\n\n**API Particulier :**\n- Mails de demande d'accès :\n[./api_particulier/authorization_request_mailer](https://github.com/etalab/admin_api_entreprise/tree/develop/app/views/api_particulier/authorization_request_mailer)\n- Mail de prolongement des jetons : [./api_particulier/token_mailer](https://github.com/etalab/admin_api_entreprise/tree/develop/app/views/api_particulier/token_mailer)\n- Mails de transfert d'habilitation :\n_En attente_\n\nUne grande partie des contenus écrits est ici : [./config/locales/mailers.fr.yml](https://github.com/etalab/admin_api_entreprise/blob/develop/config/locales/mailers.fr.yml)\n\n## Outils de production\n\nIl y a plusieurs scripts utiles pour faire des manipulations en production pour des usages bien précis.\n\nIls sont rangés dans `lib/tasks/`. À ce jour il y en a 2 :\n\n- `user:transfer_account` : afin de transférer un compte entre deux emails\n- `token:blacklist` : afin de blacklister un jeton qui aurait été envoyé par email et en créer un nouveau\n\nLes tâches ont des descriptions visible avec `bundle exec rake -D user:transfer_account` par exemple.\n\nExemple de commande :\n\n```shell\n# les backslash '\\' sont malheureusement nécessaire sinon ils sont interprété par ZSH\n# il ne faut pas mettre d'espace après la virgule entre les variables qui sont entre crochets\nbundle exec rake user:transfer_account\\['current@user.com','new@user.com'\\]\n```\n\n## Génération des sitemaps\n\nOn utilise 2 sitemaps différents pour le site d'API Entreprise et le site d'API Particulier.\nPour générer les sitemaps il suffit d'executer la commande :\n\n```shell\nrake sitemap:refresh\n```\n\nLors de l'éxecution de la commande, un ping auto sera envoyé à google afin d'indiquer que le sitemaps a changé.\nEn local, afin de ne pas solliciter google inutilement il est préférable de ne pas déclencher le ping\n\n```shell\nrake sitemap:refresh:no_ping\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fetalab%2Fadmin_api_entreprise","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fetalab%2Fadmin_api_entreprise","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fetalab%2Fadmin_api_entreprise/lists"}