Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .github/workflows/R-CMD-check.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,7 @@ jobs:
R_REMOTES_NO_ERRORS_FROM_WARNINGS: true
RSPM: ${{ matrix.config.rspm }}
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
INSEE_APP_KEY: ${{ secrets.INSEE_APP_KEY }}
INSEE_APP_SECRET: ${{ secrets.INSEE_APP_SECRET }}
INSEE_API_TOKEN: ${{ secrets.INSEE_API_TOKEN }}
CURLOPT_TIMEOUT: 0

steps:
Expand Down
3 changes: 1 addition & 2 deletions .github/workflows/test-coverage.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@ jobs:
runs-on: macOS-latest
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
INSEE_APP_KEY: ${{ secrets.INSEE_APP_KEY }}
INSEE_APP_SECRET: ${{ secrets.INSEE_APP_SECRET }}
INSEE_API_TOKEN: ${{ secrets.INSEE_API_TOKEN }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
CURLOPT_TIMEOUT: 0
steps:
Expand Down
5 changes: 2 additions & 3 deletions DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Package: doremifasol
Title: Data on Insee Website
Version: 0.5.6.0003
Version: 0.6.0.0001
Authors@R: c(
person("Pierre", "Lamarche", email = "pierre.lamarche@insee.fr", role = c("aut", "cre")),
person("Pierre-Yves", "Berrard", role = "aut", email = "pierre-yves.berrard@insee.fr"),
Expand All @@ -13,7 +13,7 @@ Authors@R: c(
Description: A package primarily intended for Insee staff members willing to use R in order to exploit and analyse data produced by the institute. This package makes it possible to either download on-the-fly the date from the website, or load pre-processed data. It also provides a (so far non comprehensive) list of datasets available on the website.
Language: fr
Depends: R (>= 3.5.0)
Imports: readr, readxl, httr, apinsee, jsonlite, curl, DT, arrow
Imports: readr, readxl, httr, jsonlite, curl, DT, arrow
Suggests:
tidyverse,
data.table,
Expand All @@ -23,7 +23,6 @@ Suggests:
knitr,
rmarkdown,
markdown
Remotes: inseeFrLab/apinsee
License: MIT + file LICENSE
LazyData: true
RoxygenNote: 7.3.2
Expand Down
Binary file modified R/sysdata.rda
Binary file not shown.
22 changes: 12 additions & 10 deletions R/telechargerFichier.R
Original file line number Diff line number Diff line change
Expand Up @@ -123,9 +123,9 @@ telechargerFichier <- function(donnees, date=NULL, telDir=getOption("doremifasol

## télécharge les données sur l'API

if (!nzchar(Sys.getenv("INSEE_APP_KEY")) || !nzchar(Sys.getenv("INSEE_APP_SECRET"))) {
stop("d\u00e9finir les variables d'environnement INSEE_APP_KEY et INSEE_APP_SECRET")
}
if (!nzchar(Sys.getenv("INSEE_API_TOKEN")))
stop("d\u00e9finir la variable d'environnement INSEE_API_TOKEN : voir https://github.com/InseeFrLab/DoReMIFaSol/tree/new-api#requ%C3%AAter-une-api-rest--le-r%C3%A9pertoire-dentreprises-sirene")
token <- Sys.getenv("INSEE_API_TOKEN")

timestamp <- gsub("[^0-9]", "", as.character(Sys.time()))
dossier_json <- paste0(telDir, "/json_API_", caract$nom, "_", timestamp, "_", genererSuffixe(4))
Expand All @@ -135,14 +135,16 @@ telechargerFichier <- function(donnees, date=NULL, telDir=getOption("doremifasol
file.path(dossier_json, "requete.txt")
)

token <- apinsee::insee_auth()
if (!is.null(date))
argsApi <- c(date = as.character(date), argsApi)
if (is.null(argsApi$nombre)) {
argsApi[["nombre"]] <- 0
url <- httr::modify_url(caract$lien, query = argsApi)
res <- tryCatch(httr::GET(url, httr::config(token = token),
httr::write_memory()),
res <- tryCatch(httr::GET(url,
httr::add_headers(`accept` = "application/json;charset=utf-8;qs=1"),
httr::add_headers(`X-INSEE-Api-Key-Integration` = token),
httr::write_memory()
),
error = function(e) message(e$message))
total <- tryCatch(httr::content(res)[[1]]$total,
error = function(e) return(NULL))
Expand All @@ -152,8 +154,6 @@ telechargerFichier <- function(donnees, date=NULL, telDir=getOption("doremifasol
total <- argsApi[["nombre"]]
}
argsApi[["nombre"]] <- min(total, 1000)
if (is.null(argsApi[["tri"]]))
argsApi[["tri"]] <- "siren"
if (total > 1000)
argsApi[["curseur"]] <- "*"
nombrePages <- ceiling(total/1000)
Expand Down Expand Up @@ -203,7 +203,8 @@ genererSuffixe <- function(longueur) {
requeteApiSirene <- function(url, fichier, token, nbTentatives) {
count <- 1
res <- tryCatch(httr::GET(url,
httr::config(token = token),
httr::add_headers(`accept` = "application/json;charset=utf-8;qs=1"),
httr::add_headers(`X-INSEE-Api-Key-Integration` = token),
httr::write_disk(tail(fichier, 1)),
httr::progress()),
error = function(e) {
Expand All @@ -214,7 +215,8 @@ requeteApiSirene <- function(url, fichier, token, nbTentatives) {
Sys.sleep(10)
message("Nouvelle tentative...")
res <- tryCatch(httr::GET(url,
httr::config(token = token),
httr::add_headers(`accept` = "application/json;charset=utf-8;qs=1"),
httr::add_headers(`X-INSEE-Api-Key-Integration` = token),
httr::write_disk(tail(fichier, 1), overwrite = TRUE),
httr::progress()),
error = function(e) {
Expand Down
22 changes: 18 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,11 @@

## Français

### 🚀 Nouvelle fonctionnalité
### ⚠️⚠️⚠️ Prise en compte de la nouvelle API Sirene

Depuis juillet 2025, le _package_ utilise le nouvel endpoint de l'API Sirene ; la syntaxe de requête demeure identique. Seule la méthode d'identification change : en lieu et place des variables d'environnement `INSEE_APP_KEY` et `INSEE_APP_SECRET`, il faut définir une variable `INSEE_API_TOKEN` dans le fichier `.Renviron`. La valeur de cette variable est obtenue en suivant la procédure décrite [ici](https://portail-api.insee.fr/catalog/api/2ba0e549-5587-3ef1-9082-99cd865de66f/doc?page=85c5657d-b1a1-4466-8565-7db1a194667b#usage-de-la-cl%C3%A9-dapi-pour-requ%C3%AAter-lapi-sirene) et en insérant la valeur de la clé d'API obtenue dans la variable d'environnement en question.

#### 📝 À noter également !
Le catalogue de données intègre désormais les données mises à disposition dans [l'API Melodi](https://portail-api.insee.fr/catalog/all). Outre la [liste de données](https://raw.githubusercontent.com/InseeFrLab/DoReMIFaSol/refs/heads/master/data-raw/liste_donnees.json) disponible dans le _package_, les données listées dans le catalogue de Melodi sont intégrées _via_ [ce fichier](https://minio.lab.sspcloud.fr/pierrelamarche/melodi/liste_donnees.json) qui est mis quotidiennement à jour.

### De quoi s'agit-il ?
Expand All @@ -24,7 +27,7 @@ Le _package_ `doremifasol` (_Données en R Mises à disposition par l’Insee et
Il offre deux fonctionnalités principales :

* télécharger et importer dans R des fichiers disponibles sur insee.fr (Base Permanente des Équipements, Recensement de Population, Filosofi...), **y compris les données mises à disposition _via_ Melodi** ;
* requêter l'[API](https://api.insee.fr/catalogue) Sirene et recupérer les résultats dans R.
* requêter l'[API](https://portail-api.insee.fr/catalog/all) Sirene et recupérer les résultats dans R.

L'objectif du _package_ est de rendre transparentes les différentes tâches à réaliser avant de pouvoir traiter les données : recherche sur le site, téléchargement, décompression, import dans R...

Expand Down Expand Up @@ -75,7 +78,7 @@ donnees_estel <- telechargerDonnees("ESTEL_T201", date = 2018)

#### Requêter une API REST : le répertoire d'entreprises Sirene

Supposons que l'on cherche maintenant à récupérer l'ensemble des établissements rattachés à une unité légale créée le 1er janvier 2020 ; pour cela, on peut par exemple envoyer une requête sur l'API REST Sirene de l'Insee. Pour cela, il faut au préalable avoir configuré un accès à l'API REST de l'Insee et passer en variables d'environnement les données d'identification. La procédure est expliquée par exemple [ici](https://github.com/InseeFrLab/apinsee#exemple). Une fois cela réalisé, la requête peut se faire facilement au travers de `doremifasol` de la manière suivante :
Supposons que l'on cherche maintenant à récupérer l'ensemble des établissements rattachés à une unité légale créée le 1er janvier 2020 ; pour cela, on peut par exemple envoyer une requête sur l'API REST Sirene de l'Insee. Pour cela, il faut au préalable avoir configuré un accès à l'API REST de l'Insee et passer en variable d'environnement la clé d'API. La procédure pour obtenir une clé d'API est expliquée [ici](https://portail-api.insee.fr/catalog/api/2ba0e549-5587-3ef1-9082-99cd865de66f/doc?page=85c5657d-b1a1-4466-8565-7db1a194667b#usage-de-la-cl%C3%A9-dapi-pour-requ%C3%AAter-lapi-sirene). La variable d'environnement consommée par `doremifasol` est `INSEE_API_TOKEN` Une fois cela réalisé, la requête peut se faire facilement au travers de `doremifasol` de la manière suivante :

```r
etablissements <- telechargerDonnees("SIRENE_SIRET",
Expand All @@ -95,7 +98,11 @@ Agent du Service Statistique Public, ou utilisateur des données mises à dispos

## English

### 🚀 New Feature
### ⚠️⚠️⚠️ New API endpoint

From July 2025 onwards, `doremifasol` queries the new endpoint for Sirene's API, the French firms' register. The process for authentification is described [here](https://portail-api.insee.fr/catalog/api/2ba0e549-5587-3ef1-9082-99cd865de66f/doc?page=85c5657d-b1a1-4466-8565-7db1a194667b#usage-de-la-cl%C3%A9-dapi-pour-requ%C3%AAter-lapi-sirene). Once provided with an API key, the user must create (through the `.Renviron` file for instance) an environment variable called `INSEE_API_TOKEN`.

#### 📝 Worth noting!

The data catalog now includes data made available in the [Melodi API](https://portail-api.insee.fr/catalog/all). In addition to the [list of data](https://raw.githubusercontent.com/InseeFrLab/DoReMIFaSol/refs/heads/master/data-raw/liste_donnees.json) available in the package, the data listed in the Melodi catalog is integrated via [this file](https://minio.lab.sspcloud.fr/pierrelamarche/melodi/liste_donnees.json) which is updated on a daily basis.

Expand Down Expand Up @@ -142,6 +149,13 @@ Tax data are very convenient to carry out information on income distribution at

#### Requesting an API REST on the firms' register _Sirene_

Assume you would like to fetch all firms created on 1<sup>st</sup> January 2020. To this end you may query the Sirene API, for which you'll need to get an API key. The procedure to get one is described [here](https://portail-api.insee.fr/catalog/api/2ba0e549-5587-3ef1-9082-99cd865de66f/doc?page=85c5657d-b1a1-4466-8565-7db1a194667b#usage-de-la-cl%C3%A9-dapi-pour-requ%C3%AAter-lapi-sirene). You'll have to insert the value of this key in an environment variable called `INSEE_API_TOKEN`. Once done, you may proceed with the script below:

```r
etablissements <- telechargerDonnees("SIRENE_SIRET",
argsApi = list(q = "dateCreationUniteLegale:2020-01-01"))
```


### Contributing

Expand Down
6 changes: 3 additions & 3 deletions data-raw/liste_donnees.json
Original file line number Diff line number Diff line change
Expand Up @@ -32482,7 +32482,7 @@
"nom": "SIRENE_SIREN",
"libelle": "Données du répertoire Sirène depuis 1973, unités légales",
"collection": "SIRENE",
"lien": "https://api.insee.fr/entreprises/sirene/V3.11/siren",
"lien": "https://api.insee.fr/api-sirene/3.11/siren",
"type": "json",
"zip": false,
"big_zip": false,
Expand All @@ -32493,7 +32493,7 @@
"nom": "SIRENE_SIRET",
"libelle": "Données du répertoire Sirène depuis 1973, établissements",
"collection": "SIRENE",
"lien": "https://api.insee.fr/entreprises/sirene/V3.11/siret",
"lien": "https://api.insee.fr/api-sirene/3.11/siret",
"type": "json",
"zip": false,
"big_zip": false,
Expand All @@ -32504,7 +32504,7 @@
"nom": "SIRENE_SIRET_LIENS",
"libelle": "Données du répertoire Sirène depuis 1973, liens de succession entre établissements",
"collection": "SIRENE",
"lien": "https://api.insee.fr/entreprises/sirene/V3.11/siret/liensSuccession",
"lien": "https://api.insee.fr/api-sirene/3.11/siret/liensSuccession",
"type": "json",
"zip": false,
"big_zip": false,
Expand Down
Binary file modified data/liste_donnees.rda
Binary file not shown.
5 changes: 3 additions & 2 deletions tests/testthat/test_liste_donnees.R
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,11 @@ test_that("pas de valeurs incongrues", {

# lien (motif, pas existence)
url_pattern <- "^https://www.insee.fr/fr/statistiques/fichier/\\d{5,}/.+\\.(zip|xls|xlsx|parquet)$"
api_sirene_url_pattern <- "^https://api.insee.fr/entreprises/sirene(/V3.11)?/sire[nt](/(liensSuccession|nonDiffusibles))?$"
api_sirene_url_old_pattern <- "^https://api.insee.fr/entreprises/sirene(/V3.11)?/sire[nt](/(liensSuccession|nonDiffusibles))?$"
api_sirene_url_pattern <- "^https://api.insee.fr/api-sirene/3.11/sire[nt](/liensSuccession)?$"
api_melodi_url_pattern <- "^https://api.insee.fr/melodi/.*$"
expect_true(
all(grepl(paste0(url_pattern, "|", api_sirene_url_pattern, "|", api_melodi_url_pattern), df_ld$lien))
all(grepl(paste0(url_pattern, "|", api_sirene_url_pattern, "|", api_melodi_url_pattern, "|", api_sirene_url_old_pattern), df_ld$lien))
)

# type
Expand Down