Skip to content

Commit 6f2c33f

Browse files
New api manager (#95)
* changement endpoint sirene * mise à jour liste_donnees * incorporation nouveau token * plus de dépendance à apinsee * nouveau num de version * ajuste test * insert INSEE_API_TOKEN dans gha * mise à jour README * change lien dans README * petit correctif README * complement message erreur sur token absent
1 parent f851f64 commit 6f2c33f

9 files changed

Lines changed: 40 additions & 26 deletions

File tree

.github/workflows/R-CMD-check.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@ jobs:
2929
R_REMOTES_NO_ERRORS_FROM_WARNINGS: true
3030
RSPM: ${{ matrix.config.rspm }}
3131
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
32-
INSEE_APP_KEY: ${{ secrets.INSEE_APP_KEY }}
33-
INSEE_APP_SECRET: ${{ secrets.INSEE_APP_SECRET }}
32+
INSEE_API_TOKEN: ${{ secrets.INSEE_API_TOKEN }}
3433
CURLOPT_TIMEOUT: 0
3534

3635
steps:

.github/workflows/test-coverage.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ jobs:
1111
runs-on: macOS-latest
1212
env:
1313
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
14-
INSEE_APP_KEY: ${{ secrets.INSEE_APP_KEY }}
15-
INSEE_APP_SECRET: ${{ secrets.INSEE_APP_SECRET }}
14+
INSEE_API_TOKEN: ${{ secrets.INSEE_API_TOKEN }}
1615
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
1716
CURLOPT_TIMEOUT: 0
1817
steps:

DESCRIPTION

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Package: doremifasol
22
Title: Data on Insee Website
3-
Version: 0.5.6.0003
3+
Version: 0.6.0.0001
44
Authors@R: c(
55
person("Pierre", "Lamarche", email = "pierre.lamarche@insee.fr", role = c("aut", "cre")),
66
person("Pierre-Yves", "Berrard", role = "aut", email = "pierre-yves.berrard@insee.fr"),
@@ -14,7 +14,7 @@ Authors@R: c(
1414
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.
1515
Language: fr
1616
Depends: R (>= 3.5.0)
17-
Imports: readr, readxl, httr, apinsee, jsonlite, curl, DT, arrow
17+
Imports: readr, readxl, httr, jsonlite, curl, DT, arrow
1818
Suggests:
1919
tidyverse,
2020
data.table,
@@ -24,7 +24,6 @@ Suggests:
2424
knitr,
2525
rmarkdown,
2626
markdown
27-
Remotes: inseeFrLab/apinsee
2827
License: MIT + file LICENSE
2928
LazyData: true
3029
RoxygenNote: 7.3.2

R/sysdata.rda

-136 Bytes
Binary file not shown.

R/telechargerFichier.R

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,9 @@ telechargerFichier <- function(donnees, date=NULL, telDir=getOption("doremifasol
123123

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

126-
if (!nzchar(Sys.getenv("INSEE_APP_KEY")) || !nzchar(Sys.getenv("INSEE_APP_SECRET"))) {
127-
stop("d\u00e9finir les variables d'environnement INSEE_APP_KEY et INSEE_APP_SECRET")
128-
}
126+
if (!nzchar(Sys.getenv("INSEE_API_TOKEN")))
127+
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")
128+
token <- Sys.getenv("INSEE_API_TOKEN")
129129

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

138-
token <- apinsee::insee_auth()
139138
if (!is.null(date))
140139
argsApi <- c(date = as.character(date), argsApi)
141140
if (is.null(argsApi$nombre)) {
142141
argsApi[["nombre"]] <- 0
143142
url <- httr::modify_url(caract$lien, query = argsApi)
144-
res <- tryCatch(httr::GET(url, httr::config(token = token),
145-
httr::write_memory()),
143+
res <- tryCatch(httr::GET(url,
144+
httr::add_headers(`accept` = "application/json;charset=utf-8;qs=1"),
145+
httr::add_headers(`X-INSEE-Api-Key-Integration` = token),
146+
httr::write_memory()
147+
),
146148
error = function(e) message(e$message))
147149
total <- tryCatch(httr::content(res)[[1]]$total,
148150
error = function(e) return(NULL))
@@ -152,8 +154,6 @@ telechargerFichier <- function(donnees, date=NULL, telDir=getOption("doremifasol
152154
total <- argsApi[["nombre"]]
153155
}
154156
argsApi[["nombre"]] <- min(total, 1000)
155-
if (is.null(argsApi[["tri"]]))
156-
argsApi[["tri"]] <- "siren"
157157
if (total > 1000)
158158
argsApi[["curseur"]] <- "*"
159159
nombrePages <- ceiling(total/1000)
@@ -203,7 +203,8 @@ genererSuffixe <- function(longueur) {
203203
requeteApiSirene <- function(url, fichier, token, nbTentatives) {
204204
count <- 1
205205
res <- tryCatch(httr::GET(url,
206-
httr::config(token = token),
206+
httr::add_headers(`accept` = "application/json;charset=utf-8;qs=1"),
207+
httr::add_headers(`X-INSEE-Api-Key-Integration` = token),
207208
httr::write_disk(tail(fichier, 1)),
208209
httr::progress()),
209210
error = function(e) {
@@ -214,7 +215,8 @@ requeteApiSirene <- function(url, fichier, token, nbTentatives) {
214215
Sys.sleep(10)
215216
message("Nouvelle tentative...")
216217
res <- tryCatch(httr::GET(url,
217-
httr::config(token = token),
218+
httr::add_headers(`accept` = "application/json;charset=utf-8;qs=1"),
219+
httr::add_headers(`X-INSEE-Api-Key-Integration` = token),
218220
httr::write_disk(tail(fichier, 1), overwrite = TRUE),
219221
httr::progress()),
220222
error = function(e) {

README.md

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,11 @@
1313

1414
## Français
1515

16-
### 🚀 Nouvelle fonctionnalité
16+
### ⚠️⚠️⚠️ Prise en compte de la nouvelle API Sirene
1717

18+
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.
19+
20+
#### 📝 À noter également !
1821
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.
1922

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

2629
* 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** ;
27-
* requêter l'[API](https://api.insee.fr/catalogue) Sirene et recupérer les résultats dans R.
30+
* requêter l'[API](https://portail-api.insee.fr/catalog/all) Sirene et recupérer les résultats dans R.
2831

2932
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...
3033

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

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

78-
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 :
81+
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 :
7982

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

9699
## English
97100

98-
### 🚀 New Feature
101+
### ⚠️⚠️⚠️ New API endpoint
102+
103+
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`.
104+
105+
#### 📝 Worth noting!
99106

100107
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.
101108

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

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

152+
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:
153+
154+
```r
155+
etablissements <- telechargerDonnees("SIRENE_SIRET",
156+
argsApi = list(q = "dateCreationUniteLegale:2020-01-01"))
157+
```
158+
145159

146160
### Contributing
147161

data-raw/liste_donnees.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32482,7 +32482,7 @@
3248232482
"nom": "SIRENE_SIREN",
3248332483
"libelle": "Données du répertoire Sirène depuis 1973, unités légales",
3248432484
"collection": "SIRENE",
32485-
"lien": "https://api.insee.fr/entreprises/sirene/V3.11/siren",
32485+
"lien": "https://api.insee.fr/api-sirene/3.11/siren",
3248632486
"type": "json",
3248732487
"zip": false,
3248832488
"big_zip": false,
@@ -32493,7 +32493,7 @@
3249332493
"nom": "SIRENE_SIRET",
3249432494
"libelle": "Données du répertoire Sirène depuis 1973, établissements",
3249532495
"collection": "SIRENE",
32496-
"lien": "https://api.insee.fr/entreprises/sirene/V3.11/siret",
32496+
"lien": "https://api.insee.fr/api-sirene/3.11/siret",
3249732497
"type": "json",
3249832498
"zip": false,
3249932499
"big_zip": false,
@@ -32504,7 +32504,7 @@
3250432504
"nom": "SIRENE_SIRET_LIENS",
3250532505
"libelle": "Données du répertoire Sirène depuis 1973, liens de succession entre établissements",
3250632506
"collection": "SIRENE",
32507-
"lien": "https://api.insee.fr/entreprises/sirene/V3.11/siret/liensSuccession",
32507+
"lien": "https://api.insee.fr/api-sirene/3.11/siret/liensSuccession",
3250832508
"type": "json",
3250932509
"zip": false,
3251032510
"big_zip": false,

data/liste_donnees.rda

142 Bytes
Binary file not shown.

tests/testthat/test_liste_donnees.R

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,11 @@ test_that("pas de valeurs incongrues", {
2323

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

3233
# type

0 commit comments

Comments
 (0)