From 90b43b5013960bebfbbb2dde6be2ae45a1ba2bb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Delmaire=20Lo=C3=AFc?= Date: Mon, 17 Aug 2026 11:06:39 +0200 Subject: [PATCH 1/7] Generate curl samples against staging for prochainement endpoints MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The OpenAPI x-codeSamples always targeted production, but an endpoint in prochainement mode raises EndpointNotYetImplemented there: an integrator copying the sample would hit an error instead of the staging mock. Endpoints tagged "Prochainement" now get their curl example generated against staging.entreprise.api.gouv.fr, the only host that can actually serve them — and the sample switches back to production by itself when the tag is removed at production release. --- .../app/services/generate_code_sample_from_path.rb | 13 +++++++++++-- siade/bin/augment_openapi_files.rb | 4 +++- .../services/generate_code_sample_from_path_spec.rb | 12 ++++++++++++ 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/siade/app/services/generate_code_sample_from_path.rb b/siade/app/services/generate_code_sample_from_path.rb index 4cad23404a..df12f7139e 100644 --- a/siade/app/services/generate_code_sample_from_path.rb +++ b/siade/app/services/generate_code_sample_from_path.rb @@ -1,13 +1,14 @@ class GenerateCodeSampleFromPath - def initialize(path) + def initialize(path, staging: false) @path = path + @staging = staging end # rubocop:disable Layout/LineContinuationLeadingSpace def perform "curl -X GET \\\n" \ " -H \"Authorization: Bearer $token\" \\\n" \ - " --url \"https://entreprise.api.gouv.fr#{interpolated_path}#{query_params}\"" + " --url \"#{host}#{interpolated_path}#{query_params}\"" end # rubocop:enable Layout/LineContinuationLeadingSpace @@ -15,6 +16,14 @@ def perform attr_reader :path + def host + if @staging + 'https://staging.entreprise.api.gouv.fr' + else + 'https://entreprise.api.gouv.fr' + end + end + # rubocop:disable Metrics/MethodLength def interpolated_path path.gsub(/\{[^}]+\}/) do |parameter| diff --git a/siade/bin/augment_openapi_files.rb b/siade/bin/augment_openapi_files.rb index beb85d7420..6d5dcabc34 100644 --- a/siade/bin/augment_openapi_files.rb +++ b/siade/bin/augment_openapi_files.rb @@ -11,12 +11,14 @@ def augment_with_maintenances(schema, path, maintenances) end def augment_with_code_samples(schema, path) + staging_only = schema.dig('get', 'tags')&.include?('Prochainement') || false + schema['get'].merge!({ 'x-codeSamples' => [ { 'lang' => 'cURL', 'label' => 'Ligne de commande', - 'source' => GenerateCodeSampleFromPath.new(path).perform + 'source' => GenerateCodeSampleFromPath.new(path, staging: staging_only).perform } ] }.compact) diff --git a/siade/spec/services/generate_code_sample_from_path_spec.rb b/siade/spec/services/generate_code_sample_from_path_spec.rb index 22dfe21178..54375bbcf6 100644 --- a/siade/spec/services/generate_code_sample_from_path_spec.rb +++ b/siade/spec/services/generate_code_sample_from_path_spec.rb @@ -15,4 +15,16 @@ it 'interpolates parameters with valid value' do expect(curl_example).to include('/v3/insee/sirene/unites_legales/130025265') end + + it 'targets production by default' do + expect(curl_example).to include('https://entreprise.api.gouv.fr/v3') + end + + context 'when the endpoint is staging only' do + subject(:curl_example) { described_class.new(path, staging: true).perform } + + it 'targets the staging host' do + expect(curl_example).to include('https://staging.entreprise.api.gouv.fr/v3') + end + end end From 5ecde8f2842ab88062ff282101fa548c13606c58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Delmaire=20Lo=C3=AFc?= Date: Sat, 15 Aug 2026 15:07:14 +0200 Subject: [PATCH 2/7] Add fondations endpoint (MI/SIAF) in prochainement mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit New API Entreprise endpoint GET /v3/ministere_interieur/siaf/fondations/ {siren_or_siret_or_rnf}, exposing foundations (FRUP, FE, FDD) data from the Répertoire National des Fondations operated by the Ministère de l'Intérieur through the SIAF hub. The endpoint is scaffolded in "prochainement" mode: MakeRequest inherits from MockedInteractor, so it only answers on staging (mocked payloads) and raises EndpointNotYetImplemented in production. This lets consumers discover the contract and integrate against staging while the real SIAF integration (auth, quota, production data) is still being contractualized with the provider — the deadline is a staging release, not a production one. The response objects mirror the categories of the MI data reference, which lists, per field, the upstream technical name and whether it is served today: identifiants + identite (category 1), activite (2), dirigeants (3), liens_entre_organismes (4), situation_financiere (6), dossiers (8), documents (9). Keeping the reference's own grouping means a field added upstream lands in an obvious place instead of forcing a reshuffle. The call key accepts SIREN, SIRET or the RNF identifier. The RNF code is the official foundation identifier, set by décret n° 2024-720 of 5 July 2024, and formatted {department}-{type}-{number}-{suffix} — e.g. 075-FDD-00422-08 — which is what RNFIdFormatValidator enforces (the example "FE-09303920-393" found in the reference spreadsheet is not the registry format). It is also the only reliable key: ~22% of foundations have no SIRET, and the provider states the SIRET is not trustworthy in the SIAF referential. SIREN/SIRET are still accepted because API Entreprise consumers key on them; the hub exposes no by_siren/by_siret route, so the resolution will go through its advanced_search route at wiring time. What the contract deliberately leaves out, and why: - Category 8 beyond the two fields the foundation record carries (isAccountLate, accountDepositYears): JOAFE publication dates and parution/avis numbers, the list of filed dossiers and their type, statutory amendment and dissolution effective dates, deposit and decision dates. All of it lives behind a separate SIAF "dossiers" route. One API Entreprise call must stay one provider call — merging two upstream calls doubles the latency and the failure surface for data that is secondary to the identity use case. - Address, identifier and name of the legal entities a director represents (legalEntity.address / publicId / name): the field comes back empty ({}) on the DEV sample, and the only documented occurrence has publicId, name and country at null. We do not publish a field we cannot show working; adding it once the referential feeds it is backward compatible. - Every "Future démarche" field of the reference (accounting amounts, countries and amounts of foreign financing, details of public generosity campaigns, liquidator, consumable endowment): publishing them now would force a breaking change when the upstream schema materializes; adding them later is backward compatible. The fiche announces them as a roadmap so integrators know the contract grows. - Technical hub noise (hub_timestamp, createdAt, updatedAt, prefixS3, checksum) and website, never filled on the sample. - The justificatives themselves: only their metadata is exposed. The download is a binary served by a distinct SIAF route and deserves its own endpoint rather than being smuggled into this one. - isPersonDataPrivate, the provider-side flag gating the diffusion of director data per requesting administration: it has no meaning until the real integration exists, and will have to be honoured then. Three vocabulary decisions in the schema: - documents[].type is a closed enum of the twelve types the reference lists (category 9 "Pièce jointe"), ordered from the most frequent (statuts, comptes, rapport d'activité, procès verbal, which account for nearly every file observed on the DEV sample) down to the administrative and judicial acts a foundation only ever gets in trouble. It is non-nullable: typeFile is a required string upstream (FileMetadataFondationResponse), and advertising null would invite consumers to write dead branches. The reference flags one label as being renamed ("acte d'autorisation ou acte de non opposition" → "décision de l'administration"); the current label is kept, renaming it before the provider ships the change would document a value SIAF does not send. - etat is described in prose rather than enumerated. The reference (category 1, "Etat de la structure") spells the states in French sentence case — en activité, suspendu, transformé, fusionné, scindé, dissous, the transformé/fusionné/scindé trio being exactly what liens_entre_organismes then details — while the SIAF DEV environment answers "Active". Freezing an enum on either spelling would put a wrong closed list in the public contract and would make our own staging fixtures lie. The vocabulary is to be pinned with the provider when the real integration lands. - date_cloture_exercice states its order explicitly ("mois/jour, format MM-DD"): the upstream value is month-first ("12-31"), and a title reading "jour/mois" would have an integrator parse it as the 12th of a 31st month and either crash or silently swap the fields. The RNF identifier is matched case-insensitively: the FRUP/FDD/FE segment and the optional department letter (2A/2B) are fixed markers of the identifier's grammar, not data, so 075-fdd-00422-08 designates the same foundation as 075-FDD-00422-08 and must not be rejected as malformed. Documents referenced here lives within https://linear.app/pole-api/issue/API-7216 --- commons/data/authorizations.yml | 2 + commons/data/throttle.yml | 1 + .../endpoints/_swagger_shared/00_commons.yml | 13 + commons/endpoints/_swagger_shared/siaf.yml | 394 ++++++++++++++++++ .../mi/siaf/fondations_controller.rb | 26 ++ .../app/errors/unprocessable_entity_error.rb | 1 + .../mi/siaf/fondations/make_request.rb | 23 + .../validate_siren_or_siret_or_rnf.rb | 25 ++ siade/app/models/rnf_id.rb | 15 + siade/app/organizers/mi/siaf/fondations.rb | 8 + .../mi/siaf/fondations/validate_params.rb | 3 + .../mi/siaf/fondations_serializer/v3.rb | 2 + siade/app/services/errors_backend.rb | 1 + .../generate_code_sample_from_path.rb | 2 +- .../app/validators/rnf_id_format_validator.rb | 7 + siade/config/errors.yml | 6 + siade/config/initializers/inflections.rb | 2 + siade/config/routes/api_entreprise.rb | 2 + .../mi/siaf/fondations/make_request_spec.rb | 43 ++ .../siaf/fondations/validate_params_spec.rb | 49 +++ .../organizers/mi/siaf/fondations_spec.rb | 33 ++ .../v3_and_more/mi/siaf/fondations/v3_spec.rb | 60 +++ siade/spec/support/helpers/rnf_id.rb | 11 + siade/spec/support/helpers/siren.rb | 4 + siade/spec/support/helpers/siret.rb | 4 + .../rswag_parameters_api_entreprise.rb | 8 + 26 files changed, 744 insertions(+), 1 deletion(-) create mode 100644 commons/endpoints/_swagger_shared/siaf.yml create mode 100644 siade/app/controllers/api_entreprise/v3_and_more/mi/siaf/fondations_controller.rb create mode 100644 siade/app/interactors/mi/siaf/fondations/make_request.rb create mode 100644 siade/app/interactors/validate_siren_or_siret_or_rnf.rb create mode 100644 siade/app/models/rnf_id.rb create mode 100644 siade/app/organizers/mi/siaf/fondations.rb create mode 100644 siade/app/organizers/mi/siaf/fondations/validate_params.rb create mode 100644 siade/app/serializers/api_entreprise/mi/siaf/fondations_serializer/v3.rb create mode 100644 siade/app/validators/rnf_id_format_validator.rb create mode 100644 siade/spec/interactors/mi/siaf/fondations/make_request_spec.rb create mode 100644 siade/spec/organizers/mi/siaf/fondations/validate_params_spec.rb create mode 100644 siade/spec/organizers/mi/siaf/fondations_spec.rb create mode 100644 siade/spec/requests/api_entreprise/v3_and_more/mi/siaf/fondations/v3_spec.rb create mode 100644 siade/spec/support/helpers/rnf_id.rb diff --git a/commons/data/authorizations.yml b/commons/data/authorizations.yml index d648192cb7..a040ca32d4 100644 --- a/commons/data/authorizations.yml +++ b/commons/data/authorizations.yml @@ -153,6 +153,8 @@ shared: api_entreprise/v3_and_more/mi/unites_legales: - associations_donnees_protegees - associations_djepva + api_entreprise/v3_and_more/mi/siaf/fondations: + - fondations api_entreprise/v3_and_more/mi/unites_legales_open_data: - associations - open_data diff --git a/commons/data/throttle.yml b/commons/data/throttle.yml index fd156b1e01..4dedbf289d 100644 --- a/commons/data/throttle.yml +++ b/commons/data/throttle.yml @@ -26,6 +26,7 @@ shared: - api_entreprise_v3_mi_associations - api_entreprise_v3_mi_unites_legales - api_entreprise_v3_mi_unites_legales_open_data + - api_entreprise_v3_mi_siaf_fondations - api_entreprise_v3_dgddi_eori - api_entreprise_v3_infogreffe_mandataires_sociaux - api_entreprise_v3_infogreffe_extraits_rcs diff --git a/commons/endpoints/_swagger_shared/00_commons.yml b/commons/endpoints/_swagger_shared/00_commons.yml index 878996057e..9e53a2809a 100644 --- a/commons/endpoints/_swagger_shared/00_commons.yml +++ b/commons/endpoints/_swagger_shared/00_commons.yml @@ -86,6 +86,19 @@ parameters: value: "775672272" summary: SIREN de la Croix-Rouge France + siren_or_siret_or_rnf: + description: "SIREN ou SIRET de la fondation, ou son identifiant au Répertoire National des Fondations (RNF). Environ 22 % des fondations n'ont pas de SIRET dans le référentiel : elles ne sont accessibles que par leur identifiant RNF." + examples: + maison_de_la_chimie_rnf: + value: "075-FRUP-00194-01" + summary: Identifiant RNF de la fondation Maison de la Chimie + maison_de_la_chimie_siren: + value: "784308934" + summary: SIREN de la fondation Maison de la Chimie + maison_de_la_chimie_siret: + value: "78430893400016" + summary: SIRET de la fondation Maison de la Chimie + siret_or_eori: description: "Siret ou numéro EORI de l'entreprise" examples: diff --git a/commons/endpoints/_swagger_shared/siaf.yml b/commons/endpoints/_swagger_shared/siaf.yml new file mode 100644 index 0000000000..fdeba7ce10 --- /dev/null +++ b/commons/endpoints/_swagger_shared/siaf.yml @@ -0,0 +1,394 @@ +siaf: + fondations: + title: "Données fondations" + description: "Données de référence d'une fondation (FRUP, fondation d'entreprise ou fonds de dotation) issues du Répertoire National des Fondations (RNF), opéré par le Ministère de l'Intérieur via le SIAF : identité, activité, dirigeants, situation financière déclarative, conformité comptable et pièces justificatives." + tags: + - "Informations générales" + - "Prochainement" + attributes: + identifiants: + title: "Identifiants de la fondation" + type: "object" + properties: + rnf: + title: "Identifiant au Répertoire National des Fondations" + description: "Identifiant officiel de la fondation, au format {département}-{type}-{numéro}-{suffixe}." + type: "string" + example: "075-FRUP-00194-01" + siren: + title: "SIREN de la fondation" + description: "Déduit du SIRET présent dans le référentiel. Environ 22 % des fondations n'ont pas de SIRET : la valeur est alors null." + type: "string" + nullable: true + example: "784308934" + siret: + title: "SIRET du siège de la fondation" + type: "string" + nullable: true + example: "78430893400016" + identite: + title: "Identité de la fondation" + type: "object" + properties: + service_instructeur: + title: "Service instructeur" + description: "Département du service instructeur de la fondation." + type: "string" + example: "75" + type_fondation: + title: "Type de fondation" + description: "FRUP : fondation reconnue d'utilité publique ; FE : fondation d'entreprise ; FDD : fonds de dotation." + type: "string" + enum: + - "FRUP" + - "FE" + - "FDD" + example: "FRUP" + denomination: + title: "Dénomination de la fondation" + type: "string" + example: "MAISON DE LA CHIMIE" + etat: + title: "État de la fondation" + description: "État de la fondation au Répertoire National des Fondations : en activité, suspendue, transformée, fusionnée, scindée ou dissoute." + type: "string" + example: "Active" + date_effet_etat: + title: "Date d'effet de l'état" + type: "string" + nullable: true + example: "1928-08-12" + date_creation: + title: "Date de création de la fondation" + type: "string" + nullable: true + example: "1928-08-12" + date_terme: + title: "Date du terme" + description: "Échéance de la fondation, notamment pour les fondations d'entreprise créées pour une durée déterminée. Null si sans objet." + type: "string" + nullable: true + example: "2030-12-31" + date_cloture_exercice: + title: "Date de clôture de l'exercice comptable (mois/jour, format MM-DD)" + type: "string" + nullable: true + example: "12-31" + adresse_siege: + title: "Adresse du siège de la fondation" + type: "object" + properties: + adresse_complete: + title: "Adresse complète sur une ligne" + type: "string" + nullable: true + example: "28 Rue Saint-Dominique 75007 Paris" + numero_voie: + title: "Numéro de voie" + type: "string" + nullable: true + example: "28" + nom_voie: + title: "Libellé de la voie" + type: "string" + nullable: true + example: "Rue Saint-Dominique" + code_postal: + title: "Code postal" + type: "string" + nullable: true + example: "75007" + commune: + title: "Commune" + type: "string" + nullable: true + example: "Paris 7e Arrondissement" + code_insee_commune: + title: "Code INSEE de la commune" + type: "string" + nullable: true + example: "75107" + departement: + title: "Code du département" + type: "string" + nullable: true + example: "75" + pays: + title: "Pays" + type: "string" + nullable: true + example: "France" + courriel: + title: "Courriel de la fondation" + type: "string" + nullable: true + example: "contact@fondation-exemple.fr" + telephone: + title: "Numéro de téléphone de la fondation" + type: "string" + nullable: true + example: "+33123456789" + activite: + title: "Activité de la fondation" + type: "object" + properties: + objet_social: + title: "Objet social" + description: "Objet social extrait des statuts de la fondation." + type: "string" + example: "Contribuer à l'avancement de la science chimique et au développement de ses applications." + domaine_interet_general: + title: "Domaines d'intérêt général" + description: "Liste des domaines d'intérêt général, séparés par des virgules." + type: "string" + nullable: true + example: "Social, Scientifique, Humanitaire" + activite_internationale_prevue_par_statuts: + title: "Activité internationale prévue par les statuts" + type: "boolean" + nullable: true + example: false + dirigeants: + title: "Dirigeants et représentants de la fondation" + description: "Personnes physiques siégeant dans les organes de gouvernance ou exerçant des fonctions de direction. Un dirigeant peut représenter une personne morale, détaillée dans personne_morale." + type: "array" + items: + type: "object" + properties: + nom: + title: "Nom du dirigeant" + type: "string" + nullable: true + example: "DUPONT" + prenom: + title: "Prénom du dirigeant" + type: "string" + nullable: true + example: "Marie" + date_naissance: + title: "Date de naissance" + type: "string" + nullable: true + example: "1975-04-12" + nationalite: + title: "Nationalité" + type: "string" + nullable: true + example: "France" + adresse_domiciliation: + title: "Adresse de domiciliation" + type: "object" + properties: + adresse_complete: + title: "Adresse complète sur une ligne" + type: "string" + nullable: true + example: "20 Rue Exemple 75001 Paris" + code_postal: + title: "Code postal" + type: "string" + nullable: true + example: "75001" + commune: + title: "Commune" + type: "string" + nullable: true + example: "Paris" + pays: + title: "Pays" + type: "string" + nullable: true + example: "France" + pays_residence: + title: "Pays de résidence" + type: "string" + nullable: true + example: "France" + profession: + title: "Profession" + type: "string" + nullable: true + example: "Juriste" + date_entree_fonction: + title: "Date d'entrée dans les fonctions" + type: "string" + nullable: true + example: "2018-06-23" + date_sortie_fonction: + title: "Date de sortie des fonctions" + type: "string" + nullable: true + example: null + fonction: + title: "Fonction exercée" + type: "string" + nullable: true + example: "Président" + qualite: + title: "Qualité au titre de laquelle la personne siège" + type: "string" + nullable: true + example: "Membre du conseil d'administration" + fondateur: + title: "Statut de fondateur" + type: "boolean" + nullable: true + example: false + personne_morale: + title: "Personne morale représentée" + description: "Renseigné lorsque le dirigeant siège en tant que représentant d'une personne morale. Null pour une personne physique siégeant en son nom propre." + type: "object" + nullable: true + properties: + type: + title: "Type de personne morale" + type: "string" + nullable: true + example: "Entreprise" + identifiant: + title: "Identifiant de la personne morale" + type: "string" + nullable: true + example: "98765432100012" + denomination: + title: "Dénomination de la personne morale" + type: "string" + nullable: true + example: "ENTREPRISE EXEMPLE" + pays: + title: "Pays de la personne morale" + type: "string" + nullable: true + example: "France" + liens_entre_organismes: + title: "Personnes morales liées à la fondation" + type: "object" + properties: + organisme_issu_transformation: + title: "Organisme issu de la transformation" + type: "object" + nullable: true + properties: + type: + title: "Type de filiation" + type: "string" + example: "Transformation" + identifiant: + title: "Identifiant de l'organisme lié" + type: "string" + nullable: true + example: "075-FDD-00001-01" + organisme_issu_fusion: + title: "Organisme issu de la fusion" + type: "object" + nullable: true + properties: + type: + title: "Type de filiation" + type: "string" + example: "Fusion" + identifiant: + title: "Identifiant de l'organisme lié" + type: "string" + nullable: true + example: "075-FDD-00001-01" + organismes_issus_scission: + title: "Organismes issus de la scission" + type: "array" + items: + type: "object" + properties: + type: + title: "Type de filiation" + type: "string" + example: "Scission" + identifiant: + title: "Identifiant de l'organisme lié" + type: "string" + nullable: true + example: "075-FDD-00001-01" + situation_financiere: + title: "Situation financière déclarative" + description: "Données déclarées par la fondation via des démarches dédiées : elles ne sont renseignées que lorsque la fondation a effectué la démarche correspondante." + type: "object" + properties: + annees_subventions_publiques: + title: "Années pendant lesquelles la fondation a reçu des subventions publiques" + type: "array" + items: + type: "integer" + example: [2024, 2025] + annees_appel_generosite_publique: + title: "Années pendant lesquelles la fondation a fait appel à la générosité publique" + type: "array" + items: + type: "integer" + example: [2025] + annees_financements_etrangers: + title: "Années pendant lesquelles la fondation a reçu un financement étranger" + type: "array" + items: + type: "integer" + example: [] + dossiers: + title: "Métadonnées liées aux dossiers déposés par la fondation" + type: "object" + properties: + etat_transmission_comptes: + title: "État de transmission des comptes" + description: "En défaut lorsque la fondation est en retard dans le dépôt de ses comptes annuels." + type: "string" + enum: + - "En règle" + - "En défaut" + example: "En règle" + exercices_comptables_transmis: + title: "Exercices comptables transmis" + type: "array" + items: + type: "integer" + example: [2023, 2024, 2025] + documents: + title: "Pièces justificatives déposées par la fondation" + description: "Métadonnées des documents déposés (statuts, comptes, rapports d'activité, procès verbaux…). Le type et le nombre de documents varient selon la fondation." + type: "array" + items: + type: "object" + properties: + id: + title: "Identifiant du document" + type: "string" + example: "7e7867b6-8fe0-11f1-a424-f28dce965a41" + type: + title: "Type de document" + description: "Nature de la pièce justificative déposée par la fondation. Toutes les fondations ne déposent pas tous les types de documents." + type: "string" + enum: + - "Statuts" + - "Comptes" + - "Rapport d'activité" + - "Procès verbal" + - "Règlement intérieur" + - "Acte notarié lié à une libéralité" + - "Acte d'autorisation ou acte de non opposition" + - "Courrier adressé par l'administration" + - "Mise en demeure" + - "Suspension" + - "Décision de retrait / dissolution" + - "Jugement de dissolution judiciaire" + example: "Statuts" + nom_original: + title: "Nom original du fichier" + type: "string" + nullable: true + example: "Statuts 1957.pdf" + type_mime: + title: "Type MIME du fichier" + type: "string" + nullable: true + example: "application/pdf" + date_depot: + title: "Date de dépôt du document" + type: "string" + nullable: true + example: "2026-06-24" diff --git a/siade/app/controllers/api_entreprise/v3_and_more/mi/siaf/fondations_controller.rb b/siade/app/controllers/api_entreprise/v3_and_more/mi/siaf/fondations_controller.rb new file mode 100644 index 0000000000..8062f56c15 --- /dev/null +++ b/siade/app/controllers/api_entreprise/v3_and_more/mi/siaf/fondations_controller.rb @@ -0,0 +1,26 @@ +class APIEntreprise::V3AndMore::MI::SIAF::FondationsController < APIEntreprise::V3AndMore::BaseController + def show + if organizer.success? + render json: organizer[:payload], + status: organizer[:status] + else + render_errors + end + end + + private + + def organizer_params + { + siren_or_siret_or_rnf: params.require(:siren_or_siret_or_rnf) + } + end + + def serializer_module + ::APIEntreprise::MI::SIAF::FondationsSerializer + end + + def organizer + @organizer ||= retrieve_payload_data(::MI::SIAF::Fondations) + end +end diff --git a/siade/app/errors/unprocessable_entity_error.rb b/siade/app/errors/unprocessable_entity_error.rb index 048983f606..2f2f294112 100644 --- a/siade/app/errors/unprocessable_entity_error.rb +++ b/siade/app/errors/unprocessable_entity_error.rb @@ -25,6 +25,7 @@ def code month: '00305', code_insee_commune: '00306', siren_or_siret_or_rna: '00330', + siren_or_siret_or_rnf: '00331', uuid: '00314', # DGFIP entreprise year: '00307', diff --git a/siade/app/interactors/mi/siaf/fondations/make_request.rb b/siade/app/interactors/mi/siaf/fondations/make_request.rb new file mode 100644 index 0000000000..675050af36 --- /dev/null +++ b/siade/app/interactors/mi/siaf/fondations/make_request.rb @@ -0,0 +1,23 @@ +class MI::SIAF::Fondations::MakeRequest < MockedInteractor + protected + + def mocking_params + { + siren_or_siret_or_rnf: context.params[:siren_or_siret_or_rnf]&.downcase + } + end + + def request_uri + fail NotImplementedError + end + + def request_params + fail NotImplementedError + end + + private + + def siaf_domain + Siade.credentials[:siaf_domain] + end +end diff --git a/siade/app/interactors/validate_siren_or_siret_or_rnf.rb b/siade/app/interactors/validate_siren_or_siret_or_rnf.rb new file mode 100644 index 0000000000..1b0d5af861 --- /dev/null +++ b/siade/app/interactors/validate_siren_or_siret_or_rnf.rb @@ -0,0 +1,25 @@ +class ValidateSirenOrSiretOrRNF < ValidateParamInteractor + def call + return if rnf_id.valid? || siret.valid? || siren.valid? + + invalid_param!(:siren_or_siret_or_rnf) + end + + private + + def rnf_id + @rnf_id ||= RNFId.new(siren_or_siret_or_rnf) + end + + def siret + @siret ||= Siret.new(siren_or_siret_or_rnf) + end + + def siren + @siren ||= Siren.new(siren_or_siret_or_rnf) + end + + def siren_or_siret_or_rnf + context.params[:siren_or_siret_or_rnf] + end +end diff --git a/siade/app/models/rnf_id.rb b/siade/app/models/rnf_id.rb new file mode 100644 index 0000000000..6e69ca80d2 --- /dev/null +++ b/siade/app/models/rnf_id.rb @@ -0,0 +1,15 @@ +class RNFId + attr_accessor :rnf_id + + include ActiveModel::Validations + + validates :rnf_id, rnf_id_format: true + + def initialize(rnf_id = nil) + @rnf_id = rnf_id + end + + def to_s + @rnf_id + end +end diff --git a/siade/app/organizers/mi/siaf/fondations.rb b/siade/app/organizers/mi/siaf/fondations.rb new file mode 100644 index 0000000000..2671891790 --- /dev/null +++ b/siade/app/organizers/mi/siaf/fondations.rb @@ -0,0 +1,8 @@ +class MI::SIAF::Fondations < RetrieverOrganizer + organize MI::SIAF::Fondations::ValidateParams, + MI::SIAF::Fondations::MakeRequest + + def provider_name + 'SIAF' + end +end diff --git a/siade/app/organizers/mi/siaf/fondations/validate_params.rb b/siade/app/organizers/mi/siaf/fondations/validate_params.rb new file mode 100644 index 0000000000..7302c85e5b --- /dev/null +++ b/siade/app/organizers/mi/siaf/fondations/validate_params.rb @@ -0,0 +1,3 @@ +class MI::SIAF::Fondations::ValidateParams < ValidateParamsOrganizer + organize ValidateSirenOrSiretOrRNF +end diff --git a/siade/app/serializers/api_entreprise/mi/siaf/fondations_serializer/v3.rb b/siade/app/serializers/api_entreprise/mi/siaf/fondations_serializer/v3.rb new file mode 100644 index 0000000000..759eb4e969 --- /dev/null +++ b/siade/app/serializers/api_entreprise/mi/siaf/fondations_serializer/v3.rb @@ -0,0 +1,2 @@ +class APIEntreprise::MI::SIAF::FondationsSerializer::V3 < APIEntreprise::V3AndMore::BaseSerializer +end diff --git a/siade/app/services/errors_backend.rb b/siade/app/services/errors_backend.rb index 630a0684d1..04f6fbcf23 100644 --- a/siade/app/services/errors_backend.rb +++ b/siade/app/services/errors_backend.rb @@ -79,6 +79,7 @@ def provider_hash '41' => 'SDH', '42' => 'ANTS', '43' => 'DGFIP - TVA', + '44' => 'SIAF', '51' => 'FranceConnect', '52' => 'DataSubvention' } diff --git a/siade/app/services/generate_code_sample_from_path.rb b/siade/app/services/generate_code_sample_from_path.rb index df12f7139e..c43fe426c6 100644 --- a/siade/app/services/generate_code_sample_from_path.rb +++ b/siade/app/services/generate_code_sample_from_path.rb @@ -28,7 +28,7 @@ def host def interpolated_path path.gsub(/\{[^}]+\}/) do |parameter| case parameter[1..-2] - when 'siret', 'siret_or_rna', 'siret_or_eori', 'siren_or_siret_or_rna' + when 'siret', 'siret_or_rna', 'siret_or_eori', 'siren_or_siret_or_rna', 'siren_or_siret_or_rnf' example_siret when 'siren', 'siren_or_rna' example_siret.first(9) diff --git a/siade/app/validators/rnf_id_format_validator.rb b/siade/app/validators/rnf_id_format_validator.rb new file mode 100644 index 0000000000..94abf22e23 --- /dev/null +++ b/siade/app/validators/rnf_id_format_validator.rb @@ -0,0 +1,7 @@ +class RNFIdFormatValidator < ActiveModel::EachValidator + def validate_each(record, attribute, value) + return if value =~ /\A\d{2,3}[AB]?-(FRUP|FDD|FE)-\d{5}-\d{2}\z/i + + record.errors.add(attribute, :format, message: 'department code, foundation type (FRUP, FDD or FE), 5 digits and 2 digits, separated by dashes') + end +end diff --git a/siade/config/errors.yml b/siade/config/errors.yml index 4df30d71b3..f98784e7b1 100644 --- a/siade/config/errors.yml +++ b/siade/config/errors.yml @@ -166,6 +166,12 @@ source: parameter: 'id' +- code: '00331' + title: 'Entité non traitable' + detail: "Le numéro de siren, le numéro de siret ou l'identifiant RNF indiqué n'est pas correctement formatté" + source: + parameter: 'id' + - code: '00333' title: 'Entité non traitable' detail: "Le numéro de siren ou le numéro d'association indiqué n'est pas correctement formatté" diff --git a/siade/config/initializers/inflections.rb b/siade/config/initializers/inflections.rb index 8868714e28..7efaaec509 100644 --- a/siade/config/initializers/inflections.rb +++ b/siade/config/initializers/inflections.rb @@ -68,8 +68,10 @@ inflect.acronym 'RGE' inflect.acronym 'RNA' inflect.acronym 'RNE' + inflect.acronym 'RNF' inflect.acronym 'RNM' inflect.acronym 'SDH' + inflect.acronym 'SIAF' inflect.acronym 'URSSAF' inflect.irregular 'aide_covid_effectifs', 'aides_covid_effectifs' diff --git a/siade/config/routes/api_entreprise.rb b/siade/config/routes/api_entreprise.rb index 9a8003f6e6..51f593b47e 100644 --- a/siade/config/routes/api_entreprise.rb +++ b/siade/config/routes/api_entreprise.rb @@ -97,6 +97,8 @@ get 'djepva/api-association/associations/:siren_or_rna', to: 'api_entreprise/v3_and_more/mi/unites_legales#show' get 'djepva/api-association/associations/open_data/:siren_or_rna', to: 'api_entreprise/v3_and_more/mi/unites_legales_open_data#show' + get 'ministere_interieur/siaf/fondations/:siren_or_siret_or_rnf', to: 'api_entreprise/v3_and_more/mi/siaf/fondations#show' + get 'data_subvention/associations/:siren_or_siret_or_rna/subventions', to: 'api_entreprise/v3_and_more/data_subvention/subventions#show' namespace :msa do diff --git a/siade/spec/interactors/mi/siaf/fondations/make_request_spec.rb b/siade/spec/interactors/mi/siaf/fondations/make_request_spec.rb new file mode 100644 index 0000000000..2facc0a0ad --- /dev/null +++ b/siade/spec/interactors/mi/siaf/fondations/make_request_spec.rb @@ -0,0 +1,43 @@ +RSpec.describe MI::SIAF::Fondations::MakeRequest, type: :make_request do + describe '.call' do + subject { described_class.call(params:, operation_id: 'api_entreprise_v3_mi_siaf_fondations') } + + let(:params) do + { + siren_or_siret_or_rnf: valid_rnf_id + } + end + + it { is_expected.to be_a_success } + + it 'serves the mocked payload matching the downcased param' do + expect(subject.mocked_data[:payload].dig('data', 'identifiants', 'rnf')).to eq(valid_rnf_id) + end + + it 'sets the mocked status' do + expect(subject.status).to eq(200) + end + + context 'with an unknown fondation' do + let(:params) do + { + siren_or_siret_or_rnf: non_existing_rnf_id + } + end + + it 'serves the not found payload' do + expect(subject.status).to eq(404) + end + end + + context 'when outside staging and test environments' do + before do + allow(Rails.env).to receive_messages(staging?: false, test?: false) + end + + it 'raises EndpointNotYetImplemented' do + expect { subject }.to raise_error(MockedInteractor::EndpointNotYetImplemented) + end + end + end +end diff --git a/siade/spec/organizers/mi/siaf/fondations/validate_params_spec.rb b/siade/spec/organizers/mi/siaf/fondations/validate_params_spec.rb new file mode 100644 index 0000000000..4fd33703ee --- /dev/null +++ b/siade/spec/organizers/mi/siaf/fondations/validate_params_spec.rb @@ -0,0 +1,49 @@ +RSpec.describe MI::SIAF::Fondations::ValidateParams, type: :validate_params do + subject { described_class.call(params:) } + + let(:params) do + { + siren_or_siret_or_rnf: + } + end + + context 'with a valid RNF id' do + let(:siren_or_siret_or_rnf) { valid_rnf_id } + + it { is_expected.to be_a_success } + end + + context 'with a lowercase RNF id' do + let(:siren_or_siret_or_rnf) { valid_rnf_id.downcase } + + it { is_expected.to be_a_success } + end + + context 'with a valid siren' do + let(:siren_or_siret_or_rnf) { fondation_siren } + + it { is_expected.to be_a_success } + end + + context 'with a valid siret' do + let(:siren_or_siret_or_rnf) { fondation_siret } + + it { is_expected.to be_a_success } + end + + context 'with an invalid RNF id' do + let(:siren_or_siret_or_rnf) { invalid_rnf_id } + + it { is_expected.to be_a_failure } + + its(:errors) { is_expected.to include(instance_of(UnprocessableEntityError)) } + end + + context 'with a blank param' do + let(:siren_or_siret_or_rnf) { '' } + + it { is_expected.to be_a_failure } + + its(:errors) { is_expected.to include(instance_of(UnprocessableEntityError)) } + end +end diff --git a/siade/spec/organizers/mi/siaf/fondations_spec.rb b/siade/spec/organizers/mi/siaf/fondations_spec.rb new file mode 100644 index 0000000000..fb6d9e8b87 --- /dev/null +++ b/siade/spec/organizers/mi/siaf/fondations_spec.rb @@ -0,0 +1,33 @@ +RSpec.describe MI::SIAF::Fondations, type: :retriever_organizer do + subject { described_class.call(params:, operation_id: 'api_entreprise_v3_mi_siaf_fondations', recipient: '13002526500013') } + + let(:params) do + { + siren_or_siret_or_rnf: valid_rnf_id + } + end + + describe 'valid params' do + before do + allow(Rails.env).to receive(:staging?).and_return(true) + end + + it { is_expected.to be_a_success } + + it 'retrieves the mocked fondation' do + resource = subject.mocked_data[:payload] + + expect(resource.dig('data', 'identifiants', 'rnf')).to eq(valid_rnf_id) + end + end + + describe 'invalid params' do + let(:params) do + { + siren_or_siret_or_rnf: invalid_rnf_id + } + end + + it { is_expected.to be_a_failure } + end +end diff --git a/siade/spec/requests/api_entreprise/v3_and_more/mi/siaf/fondations/v3_spec.rb b/siade/spec/requests/api_entreprise/v3_and_more/mi/siaf/fondations/v3_spec.rb new file mode 100644 index 0000000000..f54ca533c7 --- /dev/null +++ b/siade/spec/requests/api_entreprise/v3_and_more/mi/siaf/fondations/v3_spec.rb @@ -0,0 +1,60 @@ +require 'swagger_helper' + +RSpec.describe 'MI - SIAF : Fondations', api: :entreprise, type: %i[request swagger] do + path '/v3/ministere_interieur/siaf/fondations/{siren_or_siret_or_rnf}' do + get SwaggerData.get('siaf.fondations.title') do + tags(*SwaggerData.get('siaf.fondations.tags')) + + parameter_siren_or_siret_or_rnf + + common_action_attributes + + unauthorized_request do + let(:siren_or_siret_or_rnf) { valid_rnf_id } + end + + forbidden_request do + let(:siren_or_siret_or_rnf) { valid_rnf_id } + end + + too_many_requests(MI::SIAF::Fondations) do + let(:siren_or_siret_or_rnf) { valid_rnf_id } + end + + describe 'with valid token and mandatory params', :valid do + response 200, 'Fondation trouvée' do + description SwaggerData.get('siaf.fondations.description') + + schema build_rswag_response( + attributes: SwaggerData.get('siaf.fondations.attributes') + ) + + rate_limit_headers + + let(:siren_or_siret_or_rnf) { valid_rnf_id } + + run_test! + end + + describe 'server errors' do + let(:siren_or_siret_or_rnf) { valid_rnf_id } + + unprocessable_content_error_request(:siren_or_siret_or_rnf) + + response '404', 'Fondation non trouvée' do + let(:siren_or_siret_or_rnf) { non_existing_rnf_id } + + build_rswag_example(NotFoundError.new('SIAF')) + + schema '$ref' => '#/components/schemas/Error' + + run_test! + end + + common_provider_errors_request('SIAF', MI::SIAF::Fondations) + common_network_error_request('SIAF', MI::SIAF::Fondations) + end + end + end + end +end diff --git a/siade/spec/support/helpers/rnf_id.rb b/siade/spec/support/helpers/rnf_id.rb new file mode 100644 index 0000000000..c279e1fb6e --- /dev/null +++ b/siade/spec/support/helpers/rnf_id.rb @@ -0,0 +1,11 @@ +def valid_rnf_id + '075-FRUP-00194-01' +end + +def invalid_rnf_id + '075-XXXX-00194-01' +end + +def non_existing_rnf_id + '099-FDD-99999-99' +end diff --git a/siade/spec/support/helpers/siren.rb b/siade/spec/support/helpers/siren.rb index 0cd046f515..3e8c9e90a7 100644 --- a/siade/spec/support/helpers/siren.rb +++ b/siade/spec/support/helpers/siren.rb @@ -82,6 +82,10 @@ def association_siren association_siret.first(9) end +def fondation_siren + fondation_siret.first(9) +end + def la_poste_siren '356000000' end diff --git a/siade/spec/support/helpers/siret.rb b/siade/spec/support/helpers/siret.rb index 56bb4166ec..6a879a0e77 100644 --- a/siade/spec/support/helpers/siret.rb +++ b/siade/spec/support/helpers/siret.rb @@ -136,3 +136,7 @@ def closed_siret def association_siret '19590183000024' end + +def fondation_siret + '78430893400016' +end diff --git a/siade/spec/support/rswag_parameters_api_entreprise.rb b/siade/spec/support/rswag_parameters_api_entreprise.rb index 809395d91f..1bcbae6d54 100644 --- a/siade/spec/support/rswag_parameters_api_entreprise.rb +++ b/siade/spec/support/rswag_parameters_api_entreprise.rb @@ -31,6 +31,14 @@ def parameter_siren_or_rna examples: SwaggerData.get('parameters.siren_or_rna.examples') end + def parameter_siren_or_siret_or_rnf + parameter name: :siren_or_siret_or_rnf, + in: :path, + type: :string, + description: SwaggerData.get('parameters.siren_or_siret_or_rnf.description'), + examples: SwaggerData.get('parameters.siren_or_siret_or_rnf.examples') + end + def parameter_siret_or_eori parameter name: :siret_or_eori, in: :path, From fbcd34b4678c9c0522235e83b1d2331c65781ee3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Delmaire=20Lo=C3=AFc?= Date: Sat, 15 Aug 2026 15:07:21 +0200 Subject: [PATCH 3/7] Add fondations staging fixtures and refresh staging token MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three representative foundations, one per legal type, so integrators can exercise the contract's edge cases on staging: - FRUP with a SIRET, reachable by RNF id, SIREN and SIRET (real public identity, Maison de la Chimie, with fictional contact and directors); - FDD without SIRET, reachable only by RNF id — the case of ~22% of the referential; - FE with a due date, a director representing a legal entity, and overdue accounts. The staging token must carry every scope declared in authorizations.yml (enforced by mocks' acceptance spec), so it is regenerated to include the new fondations scope. --- mocks/payloads/README.md | 1 + .../200_fdd.yaml | 123 +++ .../200_fe.yaml | 101 +++ .../200_frup.yaml | 123 +++ .../200_frup_by_siren.yaml | 123 +++ .../200_frup_by_siret.yaml | 123 +++ .../404.yaml | 18 + .../README.md | 839 ++++++++++++++++++ .../summary.csv | 576 ++++++++++++ mocks/tokens/default | 2 +- 10 files changed, 2028 insertions(+), 1 deletion(-) create mode 100644 mocks/payloads/api_entreprise_v3_mi_siaf_fondations/200_fdd.yaml create mode 100644 mocks/payloads/api_entreprise_v3_mi_siaf_fondations/200_fe.yaml create mode 100644 mocks/payloads/api_entreprise_v3_mi_siaf_fondations/200_frup.yaml create mode 100644 mocks/payloads/api_entreprise_v3_mi_siaf_fondations/200_frup_by_siren.yaml create mode 100644 mocks/payloads/api_entreprise_v3_mi_siaf_fondations/200_frup_by_siret.yaml create mode 100644 mocks/payloads/api_entreprise_v3_mi_siaf_fondations/404.yaml create mode 100644 mocks/payloads/api_entreprise_v3_mi_siaf_fondations/README.md create mode 100644 mocks/payloads/api_entreprise_v3_mi_siaf_fondations/summary.csv diff --git a/mocks/payloads/README.md b/mocks/payloads/README.md index b945a17602..9fedb02b17 100644 --- a/mocks/payloads/README.md +++ b/mocks/payloads/README.md @@ -109,6 +109,7 @@ génère une payload par défaut basée sur la spécification OpenAPI associée. * [Données unité légale en open data](api_entreprise_v4_insee_unites_legales_diffusables) (`/v4/insee/sirene/unites_legales/diffusibles/{siren}`) * [Divers documents d'une association](api_entreprise_v3_mi_documents_associations) (`/v3/ministere_interieur/rna/associations/{siret_or_rna}/documents`) * [Données du RNA d'une association](api_entreprise_v3_mi_associations) (`/v3/ministere_interieur/rna/associations/{siret_or_rna}`) +* [Données fondations](api_entreprise_v3_mi_siaf_fondations) (`/v3/ministere_interieur/siaf/fondations/{siren_or_siret_or_rnf}`) * [Conformité cotisations de sécurité sociale agricole](api_entreprise_v3_msa_conformites_cotisations) (`/v3/msa/etablissements/{siret}/conformite_cotisations`) * [Certification d'ingénierie OPQIBI](api_entreprise_v3_opqibi_certifications_ingenierie) (`/v3/opqibi/unites_legales/{siren}/certification_ingenierie`) * [Conformité cotisations retraite bâtiment](api_entreprise_v3_probtp_attestations_cotisation_retraite) (`/v3/probtp/etablissements/{siret}/attestation_cotisations_retraite`) diff --git a/mocks/payloads/api_entreprise_v3_mi_siaf_fondations/200_fdd.yaml b/mocks/payloads/api_entreprise_v3_mi_siaf_fondations/200_fdd.yaml new file mode 100644 index 0000000000..cf89352b46 --- /dev/null +++ b/mocks/payloads/api_entreprise_v3_mi_siaf_fondations/200_fdd.yaml @@ -0,0 +1,123 @@ +--- +description: 'Fonds de dotation (FDD) sans SIRET, accessible uniquement par identifiant RNF' +params: + siren_or_siret_or_rnf: '075-fdd-00700-07' +status: 200 +payload: |- + { + "data": { + "identifiants": { + "rnf": "075-FDD-00700-07", + "siren": null, + "siret": null + }, + "identite": { + "service_instructeur": "75", + "type_fondation": "FDD", + "denomination": "MEET MY MAMA FUND", + "etat": "Active", + "date_effet_etat": "2023-03-08", + "date_creation": "2023-03-08", + "date_terme": null, + "date_cloture_exercice": "12-31", + "adresse_siege": { + "adresse_complete": "10 Rue de Penthièvre 75008 Paris", + "numero_voie": "10", + "nom_voie": "Rue de Penthièvre", + "code_postal": "75008", + "commune": "Paris 8e Arrondissement", + "code_insee_commune": "75108", + "departement": "75", + "pays": "France" + }, + "courriel": "contact@fonds-exemple.fr", + "telephone": "+33198765432" + }, + "activite": { + "objet_social": "Conduire et soutenir toutes missions d'intérêt général à caractère social, philanthropique, éducatif et humanitaire concourant à faciliter l'inclusion sociale, notamment des femmes.", + "domaine_interet_general": "Social, Humanitaire, Éducatif", + "activite_internationale_prevue_par_statuts": false + }, + "dirigeants": [ + { + "nom": "BERNARD", + "prenom": "Louise", + "date_naissance": "1988-02-20", + "nationalite": "France", + "adresse_domiciliation": { + "adresse_complete": "1 Avenue des Champs Elysées 75008 Paris", + "code_postal": "75008", + "commune": "Paris", + "pays": "France" + }, + "pays_residence": "France", + "profession": "Entrepreneuse", + "date_entree_fonction": "2023-02-13", + "date_sortie_fonction": null, + "fonction": "Présidente", + "qualite": "Membre du conseil d'administration", + "fondateur": true, + "personne_morale": null + }, + { + "nom": "PETIT", + "prenom": "Nicolas", + "date_naissance": "1985-07-30", + "nationalite": "France", + "adresse_domiciliation": { + "adresse_complete": "1 Avenue des Champs Elysées 75008 Paris", + "code_postal": "75008", + "commune": "Paris", + "pays": "France" + }, + "pays_residence": "France", + "profession": "Consultant", + "date_entree_fonction": "2023-02-13", + "date_sortie_fonction": null, + "fonction": "Secrétaire", + "qualite": "Membre du conseil d'administration", + "fondateur": false, + "personne_morale": null + } + ], + "liens_entre_organismes": { + "organisme_issu_transformation": null, + "organisme_issu_fusion": null, + "organismes_issus_scission": [] + }, + "situation_financiere": { + "annees_subventions_publiques": [], + "annees_appel_generosite_publique": [], + "annees_financements_etrangers": [] + }, + "dossiers": { + "etat_transmission_comptes": "En règle", + "exercices_comptables_transmis": [2023, 2024] + }, + "documents": [ + { + "id": "711cf2ed-6e04-11f1-aed1-4faba2bb8c0b", + "type": "Statuts", + "nom_original": "Statuts constitutifs.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-04-20" + }, + { + "id": "711cf2ee-6e04-11f1-aed1-4faba2bb8c0b", + "type": "Comptes", + "nom_original": "Comptes annuels 2024.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-06-17" + }, + { + "id": "711cf2ef-6e04-11f1-aed1-4faba2bb8c0b", + "type": "Rapport d'activité", + "nom_original": "Rapport d'activité 2024.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-06-17" + } + ] + }, + "links": {}, + "meta": {} + } diff --git a/mocks/payloads/api_entreprise_v3_mi_siaf_fondations/200_fe.yaml b/mocks/payloads/api_entreprise_v3_mi_siaf_fondations/200_fe.yaml new file mode 100644 index 0000000000..f89b0f3c7d --- /dev/null +++ b/mocks/payloads/api_entreprise_v3_mi_siaf_fondations/200_fe.yaml @@ -0,0 +1,101 @@ +--- +description: 'Fondation d''entreprise (FE) à durée déterminée, avec un dirigeant représentant une personne morale' +params: + siren_or_siret_or_rnf: '075-fe-00117-05' +status: 200 +payload: |- + { + "data": { + "identifiants": { + "rnf": "075-FE-00117-05", + "siren": "987654321", + "siret": "98765432100012" + }, + "identite": { + "service_instructeur": "75", + "type_fondation": "FE", + "denomination": "FONDATION D'ENTREPRISE EXEMPLE", + "etat": "Active", + "date_effet_etat": "2019-05-15", + "date_creation": "2019-05-15", + "date_terme": "2029-05-14", + "date_cloture_exercice": "12-31", + "adresse_siege": { + "adresse_complete": "25 Avenue Exemple 75008 Paris", + "numero_voie": "25", + "nom_voie": "Avenue Exemple", + "code_postal": "75008", + "commune": "Paris 8e Arrondissement", + "code_insee_commune": "75108", + "departement": "75", + "pays": "France" + }, + "courriel": "fondation@entreprise-exemple.fr", + "telephone": "+33144556677" + }, + "activite": { + "objet_social": "Financer des actions d'intérêt général dans le domaine de l'éducation et de l'insertion professionnelle des jeunes.", + "domaine_interet_general": "Éducatif, Social", + "activite_internationale_prevue_par_statuts": true + }, + "dirigeants": [ + { + "nom": "MOREAU", + "prenom": "Claire", + "date_naissance": "1972-09-18", + "nationalite": "France", + "adresse_domiciliation": { + "adresse_complete": "12 Rue Exemple 92100 Boulogne-Billancourt", + "code_postal": "92100", + "commune": "Boulogne-Billancourt", + "pays": "France" + }, + "pays_residence": "France", + "profession": "Directrice générale", + "date_entree_fonction": "2019-05-15", + "date_sortie_fonction": null, + "fonction": "Présidente", + "qualite": "Membre du conseil d'administration", + "fondateur": false, + "personne_morale": { + "type": "Entreprise", + "identifiant": "98765432100012", + "denomination": "ENTREPRISE EXEMPLE", + "pays": "France" + } + } + ], + "liens_entre_organismes": { + "organisme_issu_transformation": null, + "organisme_issu_fusion": null, + "organismes_issus_scission": [] + }, + "situation_financiere": { + "annees_subventions_publiques": [], + "annees_appel_generosite_publique": [], + "annees_financements_etrangers": [2024] + }, + "dossiers": { + "etat_transmission_comptes": "En défaut", + "exercices_comptables_transmis": [2022, 2023] + }, + "documents": [ + { + "id": "8a1b2c3d-4e5f-11f1-aed1-4faba2bb8c0b", + "type": "Statuts", + "nom_original": "Statuts fondation entreprise.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-03-12" + }, + { + "id": "8a1b2c3d-4e5f-11f1-aed1-4faba2bb8c0c", + "type": "Procès verbal", + "nom_original": "PV conseil administration 2025.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-03-12" + } + ] + }, + "links": {}, + "meta": {} + } diff --git a/mocks/payloads/api_entreprise_v3_mi_siaf_fondations/200_frup.yaml b/mocks/payloads/api_entreprise_v3_mi_siaf_fondations/200_frup.yaml new file mode 100644 index 0000000000..30e603baff --- /dev/null +++ b/mocks/payloads/api_entreprise_v3_mi_siaf_fondations/200_frup.yaml @@ -0,0 +1,123 @@ +--- +description: 'Fondation reconnue d''utilité publique (FRUP), appelée par identifiant RNF' +params: + siren_or_siret_or_rnf: '075-frup-00194-01' +status: 200 +payload: |- + { + "data": { + "identifiants": { + "rnf": "075-FRUP-00194-01", + "siren": "784308934", + "siret": "78430893400016" + }, + "identite": { + "service_instructeur": "75", + "type_fondation": "FRUP", + "denomination": "MAISON DE LA CHIMIE", + "etat": "Active", + "date_effet_etat": "1928-08-12", + "date_creation": "1928-08-12", + "date_terme": null, + "date_cloture_exercice": "12-31", + "adresse_siege": { + "adresse_complete": "28 Rue Saint-Dominique 75007 Paris", + "numero_voie": "28", + "nom_voie": "Rue Saint-Dominique", + "code_postal": "75007", + "commune": "Paris 7e Arrondissement", + "code_insee_commune": "75107", + "departement": "75", + "pays": "France" + }, + "courriel": "contact@fondation-exemple.fr", + "telephone": "+33123456789" + }, + "activite": { + "objet_social": "L'aménagement et l'entretien d'un immeuble destiné à permettre la jouissance de locaux et de salles de réunions aux organismes de chimie pure et appliquée, en vue de contribuer à l'avancement de la science chimique et au développement de ses applications.", + "domaine_interet_general": "Scientifique", + "activite_internationale_prevue_par_statuts": false + }, + "dirigeants": [ + { + "nom": "DUPONT", + "prenom": "Marie", + "date_naissance": "1975-04-12", + "nationalite": "France", + "adresse_domiciliation": { + "adresse_complete": "20 Rue Exemple 75001 Paris", + "code_postal": "75001", + "commune": "Paris", + "pays": "France" + }, + "pays_residence": "France", + "profession": "Juriste", + "date_entree_fonction": "2018-06-23", + "date_sortie_fonction": null, + "fonction": "Président", + "qualite": "Membre du conseil d'administration", + "fondateur": false, + "personne_morale": null + }, + { + "nom": "MARTIN", + "prenom": "Paul", + "date_naissance": "1968-11-02", + "nationalite": "France", + "adresse_domiciliation": { + "adresse_complete": "5 Avenue Exemple 75008 Paris", + "code_postal": "75008", + "commune": "Paris", + "pays": "France" + }, + "pays_residence": "France", + "profession": "Chercheur", + "date_entree_fonction": "2018-06-28", + "date_sortie_fonction": null, + "fonction": "Trésorier", + "qualite": "Membre du conseil d'administration", + "fondateur": false, + "personne_morale": null + } + ], + "liens_entre_organismes": { + "organisme_issu_transformation": null, + "organisme_issu_fusion": null, + "organismes_issus_scission": [] + }, + "situation_financiere": { + "annees_subventions_publiques": [2024, 2025], + "annees_appel_generosite_publique": [2025], + "annees_financements_etrangers": [] + }, + "dossiers": { + "etat_transmission_comptes": "En règle", + "exercices_comptables_transmis": [2023, 2024, 2025] + }, + "documents": [ + { + "id": "7e7867b6-8fe0-11f1-a424-f28dce965a41", + "type": "Statuts", + "nom_original": "Statuts 1957.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-06-24" + }, + { + "id": "7e7867b6-8fe0-11f1-a424-f28dce965a42", + "type": "Comptes", + "nom_original": "Comptes annuels 2025.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-06-24" + }, + { + "id": "7e7867b6-8fe0-11f1-a424-f28dce965a43", + "type": "Rapport d'activité", + "nom_original": "Rapport d'activité 2025.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-06-24" + } + ] + }, + "links": {}, + "meta": {} + } diff --git a/mocks/payloads/api_entreprise_v3_mi_siaf_fondations/200_frup_by_siren.yaml b/mocks/payloads/api_entreprise_v3_mi_siaf_fondations/200_frup_by_siren.yaml new file mode 100644 index 0000000000..afbdcd5b0c --- /dev/null +++ b/mocks/payloads/api_entreprise_v3_mi_siaf_fondations/200_frup_by_siren.yaml @@ -0,0 +1,123 @@ +--- +description: 'Fondation reconnue d''utilité publique (FRUP), appelée par SIREN' +params: + siren_or_siret_or_rnf: '784308934' +status: 200 +payload: |- + { + "data": { + "identifiants": { + "rnf": "075-FRUP-00194-01", + "siren": "784308934", + "siret": "78430893400016" + }, + "identite": { + "service_instructeur": "75", + "type_fondation": "FRUP", + "denomination": "MAISON DE LA CHIMIE", + "etat": "Active", + "date_effet_etat": "1928-08-12", + "date_creation": "1928-08-12", + "date_terme": null, + "date_cloture_exercice": "12-31", + "adresse_siege": { + "adresse_complete": "28 Rue Saint-Dominique 75007 Paris", + "numero_voie": "28", + "nom_voie": "Rue Saint-Dominique", + "code_postal": "75007", + "commune": "Paris 7e Arrondissement", + "code_insee_commune": "75107", + "departement": "75", + "pays": "France" + }, + "courriel": "contact@fondation-exemple.fr", + "telephone": "+33123456789" + }, + "activite": { + "objet_social": "L'aménagement et l'entretien d'un immeuble destiné à permettre la jouissance de locaux et de salles de réunions aux organismes de chimie pure et appliquée, en vue de contribuer à l'avancement de la science chimique et au développement de ses applications.", + "domaine_interet_general": "Scientifique", + "activite_internationale_prevue_par_statuts": false + }, + "dirigeants": [ + { + "nom": "DUPONT", + "prenom": "Marie", + "date_naissance": "1975-04-12", + "nationalite": "France", + "adresse_domiciliation": { + "adresse_complete": "20 Rue Exemple 75001 Paris", + "code_postal": "75001", + "commune": "Paris", + "pays": "France" + }, + "pays_residence": "France", + "profession": "Juriste", + "date_entree_fonction": "2018-06-23", + "date_sortie_fonction": null, + "fonction": "Président", + "qualite": "Membre du conseil d'administration", + "fondateur": false, + "personne_morale": null + }, + { + "nom": "MARTIN", + "prenom": "Paul", + "date_naissance": "1968-11-02", + "nationalite": "France", + "adresse_domiciliation": { + "adresse_complete": "5 Avenue Exemple 75008 Paris", + "code_postal": "75008", + "commune": "Paris", + "pays": "France" + }, + "pays_residence": "France", + "profession": "Chercheur", + "date_entree_fonction": "2018-06-28", + "date_sortie_fonction": null, + "fonction": "Trésorier", + "qualite": "Membre du conseil d'administration", + "fondateur": false, + "personne_morale": null + } + ], + "liens_entre_organismes": { + "organisme_issu_transformation": null, + "organisme_issu_fusion": null, + "organismes_issus_scission": [] + }, + "situation_financiere": { + "annees_subventions_publiques": [2024, 2025], + "annees_appel_generosite_publique": [2025], + "annees_financements_etrangers": [] + }, + "dossiers": { + "etat_transmission_comptes": "En règle", + "exercices_comptables_transmis": [2023, 2024, 2025] + }, + "documents": [ + { + "id": "7e7867b6-8fe0-11f1-a424-f28dce965a41", + "type": "Statuts", + "nom_original": "Statuts 1957.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-06-24" + }, + { + "id": "7e7867b6-8fe0-11f1-a424-f28dce965a42", + "type": "Comptes", + "nom_original": "Comptes annuels 2025.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-06-24" + }, + { + "id": "7e7867b6-8fe0-11f1-a424-f28dce965a43", + "type": "Rapport d'activité", + "nom_original": "Rapport d'activité 2025.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-06-24" + } + ] + }, + "links": {}, + "meta": {} + } diff --git a/mocks/payloads/api_entreprise_v3_mi_siaf_fondations/200_frup_by_siret.yaml b/mocks/payloads/api_entreprise_v3_mi_siaf_fondations/200_frup_by_siret.yaml new file mode 100644 index 0000000000..ad5842db77 --- /dev/null +++ b/mocks/payloads/api_entreprise_v3_mi_siaf_fondations/200_frup_by_siret.yaml @@ -0,0 +1,123 @@ +--- +description: 'Fondation reconnue d''utilité publique (FRUP), appelée par SIRET' +params: + siren_or_siret_or_rnf: '78430893400016' +status: 200 +payload: |- + { + "data": { + "identifiants": { + "rnf": "075-FRUP-00194-01", + "siren": "784308934", + "siret": "78430893400016" + }, + "identite": { + "service_instructeur": "75", + "type_fondation": "FRUP", + "denomination": "MAISON DE LA CHIMIE", + "etat": "Active", + "date_effet_etat": "1928-08-12", + "date_creation": "1928-08-12", + "date_terme": null, + "date_cloture_exercice": "12-31", + "adresse_siege": { + "adresse_complete": "28 Rue Saint-Dominique 75007 Paris", + "numero_voie": "28", + "nom_voie": "Rue Saint-Dominique", + "code_postal": "75007", + "commune": "Paris 7e Arrondissement", + "code_insee_commune": "75107", + "departement": "75", + "pays": "France" + }, + "courriel": "contact@fondation-exemple.fr", + "telephone": "+33123456789" + }, + "activite": { + "objet_social": "L'aménagement et l'entretien d'un immeuble destiné à permettre la jouissance de locaux et de salles de réunions aux organismes de chimie pure et appliquée, en vue de contribuer à l'avancement de la science chimique et au développement de ses applications.", + "domaine_interet_general": "Scientifique", + "activite_internationale_prevue_par_statuts": false + }, + "dirigeants": [ + { + "nom": "DUPONT", + "prenom": "Marie", + "date_naissance": "1975-04-12", + "nationalite": "France", + "adresse_domiciliation": { + "adresse_complete": "20 Rue Exemple 75001 Paris", + "code_postal": "75001", + "commune": "Paris", + "pays": "France" + }, + "pays_residence": "France", + "profession": "Juriste", + "date_entree_fonction": "2018-06-23", + "date_sortie_fonction": null, + "fonction": "Président", + "qualite": "Membre du conseil d'administration", + "fondateur": false, + "personne_morale": null + }, + { + "nom": "MARTIN", + "prenom": "Paul", + "date_naissance": "1968-11-02", + "nationalite": "France", + "adresse_domiciliation": { + "adresse_complete": "5 Avenue Exemple 75008 Paris", + "code_postal": "75008", + "commune": "Paris", + "pays": "France" + }, + "pays_residence": "France", + "profession": "Chercheur", + "date_entree_fonction": "2018-06-28", + "date_sortie_fonction": null, + "fonction": "Trésorier", + "qualite": "Membre du conseil d'administration", + "fondateur": false, + "personne_morale": null + } + ], + "liens_entre_organismes": { + "organisme_issu_transformation": null, + "organisme_issu_fusion": null, + "organismes_issus_scission": [] + }, + "situation_financiere": { + "annees_subventions_publiques": [2024, 2025], + "annees_appel_generosite_publique": [2025], + "annees_financements_etrangers": [] + }, + "dossiers": { + "etat_transmission_comptes": "En règle", + "exercices_comptables_transmis": [2023, 2024, 2025] + }, + "documents": [ + { + "id": "7e7867b6-8fe0-11f1-a424-f28dce965a41", + "type": "Statuts", + "nom_original": "Statuts 1957.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-06-24" + }, + { + "id": "7e7867b6-8fe0-11f1-a424-f28dce965a42", + "type": "Comptes", + "nom_original": "Comptes annuels 2025.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-06-24" + }, + { + "id": "7e7867b6-8fe0-11f1-a424-f28dce965a43", + "type": "Rapport d'activité", + "nom_original": "Rapport d'activité 2025.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-06-24" + } + ] + }, + "links": {}, + "meta": {} + } diff --git a/mocks/payloads/api_entreprise_v3_mi_siaf_fondations/404.yaml b/mocks/payloads/api_entreprise_v3_mi_siaf_fondations/404.yaml new file mode 100644 index 0000000000..c416fbd1dd --- /dev/null +++ b/mocks/payloads/api_entreprise_v3_mi_siaf_fondations/404.yaml @@ -0,0 +1,18 @@ +--- +description: 'Fondation non trouvée' +params: + siren_or_siret_or_rnf: '099-fdd-99999-99' +status: 404 +payload: |- + { + "errors": [ + { + "code": "44003", + "title": "Entité non trouvée", + "detail": "Le ou les paramètre(s) d'entrée n'existent pas, ne sont pas connus, ou ne comportent aucune information pour cet appel. Veuillez vérifier que votre recherche est couverte par le périmètre de l'API.", + "meta": { + "provider": "SIAF" + } + } + ] + } diff --git a/mocks/payloads/api_entreprise_v3_mi_siaf_fondations/README.md b/mocks/payloads/api_entreprise_v3_mi_siaf_fondations/README.md new file mode 100644 index 0000000000..440d0250ed --- /dev/null +++ b/mocks/payloads/api_entreprise_v3_mi_siaf_fondations/README.md @@ -0,0 +1,839 @@ +# Données fondations +* [200_fdd.yaml](200_fdd.yaml) + + Status `200` + + Fonds de dotation (FDD) sans SIRET, accessible uniquement par identifiant RNF + +
Paramètres +

+ + ```json + { + "siren_or_siret_or_rnf": "075-fdd-00700-07" + } + ``` + +

+
+ +
Réponse API +

+ + ```json + { + "data": { + "identifiants": { + "rnf": "075-FDD-00700-07", + "siren": null, + "siret": null + }, + "identite": { + "service_instructeur": "75", + "type_fondation": "FDD", + "denomination": "MEET MY MAMA FUND", + "etat": "Active", + "date_effet_etat": "2023-03-08", + "date_creation": "2023-03-08", + "date_terme": null, + "date_cloture_exercice": "12-31", + "adresse_siege": { + "adresse_complete": "10 Rue de Penthièvre 75008 Paris", + "numero_voie": "10", + "nom_voie": "Rue de Penthièvre", + "code_postal": "75008", + "commune": "Paris 8e Arrondissement", + "code_insee_commune": "75108", + "departement": "75", + "pays": "France" + }, + "courriel": "contact@fonds-exemple.fr", + "telephone": "+33198765432" + }, + "activite": { + "objet_social": "Conduire et soutenir toutes missions d'intérêt général à caractère social, philanthropique, éducatif et humanitaire concourant à faciliter l'inclusion sociale, notamment des femmes.", + "domaine_interet_general": "Social, Humanitaire, Éducatif", + "activite_internationale_prevue_par_statuts": false + }, + "dirigeants": [ + { + "nom": "BERNARD", + "prenom": "Louise", + "date_naissance": "1988-02-20", + "nationalite": "France", + "adresse_domiciliation": { + "adresse_complete": "1 Avenue des Champs Elysées 75008 Paris", + "code_postal": "75008", + "commune": "Paris", + "pays": "France" + }, + "pays_residence": "France", + "profession": "Entrepreneuse", + "date_entree_fonction": "2023-02-13", + "date_sortie_fonction": null, + "fonction": "Présidente", + "qualite": "Membre du conseil d'administration", + "fondateur": true, + "personne_morale": null + }, + { + "nom": "PETIT", + "prenom": "Nicolas", + "date_naissance": "1985-07-30", + "nationalite": "France", + "adresse_domiciliation": { + "adresse_complete": "1 Avenue des Champs Elysées 75008 Paris", + "code_postal": "75008", + "commune": "Paris", + "pays": "France" + }, + "pays_residence": "France", + "profession": "Consultant", + "date_entree_fonction": "2023-02-13", + "date_sortie_fonction": null, + "fonction": "Secrétaire", + "qualite": "Membre du conseil d'administration", + "fondateur": false, + "personne_morale": null + } + ], + "liens_entre_organismes": { + "organisme_issu_transformation": null, + "organisme_issu_fusion": null, + "organismes_issus_scission": [] + }, + "situation_financiere": { + "annees_subventions_publiques": [], + "annees_appel_generosite_publique": [], + "annees_financements_etrangers": [] + }, + "dossiers": { + "etat_transmission_comptes": "En règle", + "exercices_comptables_transmis": [ + 2023, + 2024 + ] + }, + "documents": [ + { + "id": "711cf2ed-6e04-11f1-aed1-4faba2bb8c0b", + "type": "Statuts", + "nom_original": "Statuts constitutifs.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-04-20" + }, + { + "id": "711cf2ee-6e04-11f1-aed1-4faba2bb8c0b", + "type": "Comptes", + "nom_original": "Comptes annuels 2024.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-06-17" + }, + { + "id": "711cf2ef-6e04-11f1-aed1-4faba2bb8c0b", + "type": "Rapport d'activité", + "nom_original": "Rapport d'activité 2024.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-06-17" + } + ] + }, + "links": {}, + "meta": {} + } + ``` + +

+
+ +
Commande cURL +

+ + ```bash + curl -H "Authorization: Bearer $token" \ + -G -d 'recipient=10000001700010' -d 'context=Contexte+de+la+requ%C3%AAte' -d 'object=Objet+de+la+requ%C3%AAte' \ + --url "https://staging.entreprise.api.gouv.fr/v3/ministere_interieur/siaf/fondations/075-fdd-00700-07" + ``` + +

+
+* [200_fe.yaml](200_fe.yaml) + + Status `200` + + Fondation d'entreprise (FE) à durée déterminée, avec un dirigeant représentant une personne morale + +
Paramètres +

+ + ```json + { + "siren_or_siret_or_rnf": "075-fe-00117-05" + } + ``` + +

+
+ +
Réponse API +

+ + ```json + { + "data": { + "identifiants": { + "rnf": "075-FE-00117-05", + "siren": "987654321", + "siret": "98765432100012" + }, + "identite": { + "service_instructeur": "75", + "type_fondation": "FE", + "denomination": "FONDATION D'ENTREPRISE EXEMPLE", + "etat": "Active", + "date_effet_etat": "2019-05-15", + "date_creation": "2019-05-15", + "date_terme": "2029-05-14", + "date_cloture_exercice": "12-31", + "adresse_siege": { + "adresse_complete": "25 Avenue Exemple 75008 Paris", + "numero_voie": "25", + "nom_voie": "Avenue Exemple", + "code_postal": "75008", + "commune": "Paris 8e Arrondissement", + "code_insee_commune": "75108", + "departement": "75", + "pays": "France" + }, + "courriel": "fondation@entreprise-exemple.fr", + "telephone": "+33144556677" + }, + "activite": { + "objet_social": "Financer des actions d'intérêt général dans le domaine de l'éducation et de l'insertion professionnelle des jeunes.", + "domaine_interet_general": "Éducatif, Social", + "activite_internationale_prevue_par_statuts": true + }, + "dirigeants": [ + { + "nom": "MOREAU", + "prenom": "Claire", + "date_naissance": "1972-09-18", + "nationalite": "France", + "adresse_domiciliation": { + "adresse_complete": "12 Rue Exemple 92100 Boulogne-Billancourt", + "code_postal": "92100", + "commune": "Boulogne-Billancourt", + "pays": "France" + }, + "pays_residence": "France", + "profession": "Directrice générale", + "date_entree_fonction": "2019-05-15", + "date_sortie_fonction": null, + "fonction": "Présidente", + "qualite": "Membre du conseil d'administration", + "fondateur": false, + "personne_morale": { + "type": "Entreprise", + "identifiant": "98765432100012", + "denomination": "ENTREPRISE EXEMPLE", + "pays": "France" + } + } + ], + "liens_entre_organismes": { + "organisme_issu_transformation": null, + "organisme_issu_fusion": null, + "organismes_issus_scission": [] + }, + "situation_financiere": { + "annees_subventions_publiques": [], + "annees_appel_generosite_publique": [], + "annees_financements_etrangers": [ + 2024 + ] + }, + "dossiers": { + "etat_transmission_comptes": "En défaut", + "exercices_comptables_transmis": [ + 2022, + 2023 + ] + }, + "documents": [ + { + "id": "8a1b2c3d-4e5f-11f1-aed1-4faba2bb8c0b", + "type": "Statuts", + "nom_original": "Statuts fondation entreprise.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-03-12" + }, + { + "id": "8a1b2c3d-4e5f-11f1-aed1-4faba2bb8c0c", + "type": "Procès verbal", + "nom_original": "PV conseil administration 2025.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-03-12" + } + ] + }, + "links": {}, + "meta": {} + } + ``` + +

+
+ +
Commande cURL +

+ + ```bash + curl -H "Authorization: Bearer $token" \ + -G -d 'recipient=10000001700010' -d 'context=Contexte+de+la+requ%C3%AAte' -d 'object=Objet+de+la+requ%C3%AAte' \ + --url "https://staging.entreprise.api.gouv.fr/v3/ministere_interieur/siaf/fondations/075-fe-00117-05" + ``` + +

+
+* [200_frup.yaml](200_frup.yaml) + + Status `200` + + Fondation reconnue d'utilité publique (FRUP), appelée par identifiant RNF + +
Paramètres +

+ + ```json + { + "siren_or_siret_or_rnf": "075-frup-00194-01" + } + ``` + +

+
+ +
Réponse API +

+ + ```json + { + "data": { + "identifiants": { + "rnf": "075-FRUP-00194-01", + "siren": "784308934", + "siret": "78430893400016" + }, + "identite": { + "service_instructeur": "75", + "type_fondation": "FRUP", + "denomination": "MAISON DE LA CHIMIE", + "etat": "Active", + "date_effet_etat": "1928-08-12", + "date_creation": "1928-08-12", + "date_terme": null, + "date_cloture_exercice": "12-31", + "adresse_siege": { + "adresse_complete": "28 Rue Saint-Dominique 75007 Paris", + "numero_voie": "28", + "nom_voie": "Rue Saint-Dominique", + "code_postal": "75007", + "commune": "Paris 7e Arrondissement", + "code_insee_commune": "75107", + "departement": "75", + "pays": "France" + }, + "courriel": "contact@fondation-exemple.fr", + "telephone": "+33123456789" + }, + "activite": { + "objet_social": "L'aménagement et l'entretien d'un immeuble destiné à permettre la jouissance de locaux et de salles de réunions aux organismes de chimie pure et appliquée, en vue de contribuer à l'avancement de la science chimique et au développement de ses applications.", + "domaine_interet_general": "Scientifique", + "activite_internationale_prevue_par_statuts": false + }, + "dirigeants": [ + { + "nom": "DUPONT", + "prenom": "Marie", + "date_naissance": "1975-04-12", + "nationalite": "France", + "adresse_domiciliation": { + "adresse_complete": "20 Rue Exemple 75001 Paris", + "code_postal": "75001", + "commune": "Paris", + "pays": "France" + }, + "pays_residence": "France", + "profession": "Juriste", + "date_entree_fonction": "2018-06-23", + "date_sortie_fonction": null, + "fonction": "Président", + "qualite": "Membre du conseil d'administration", + "fondateur": false, + "personne_morale": null + }, + { + "nom": "MARTIN", + "prenom": "Paul", + "date_naissance": "1968-11-02", + "nationalite": "France", + "adresse_domiciliation": { + "adresse_complete": "5 Avenue Exemple 75008 Paris", + "code_postal": "75008", + "commune": "Paris", + "pays": "France" + }, + "pays_residence": "France", + "profession": "Chercheur", + "date_entree_fonction": "2018-06-28", + "date_sortie_fonction": null, + "fonction": "Trésorier", + "qualite": "Membre du conseil d'administration", + "fondateur": false, + "personne_morale": null + } + ], + "liens_entre_organismes": { + "organisme_issu_transformation": null, + "organisme_issu_fusion": null, + "organismes_issus_scission": [] + }, + "situation_financiere": { + "annees_subventions_publiques": [ + 2024, + 2025 + ], + "annees_appel_generosite_publique": [ + 2025 + ], + "annees_financements_etrangers": [] + }, + "dossiers": { + "etat_transmission_comptes": "En règle", + "exercices_comptables_transmis": [ + 2023, + 2024, + 2025 + ] + }, + "documents": [ + { + "id": "7e7867b6-8fe0-11f1-a424-f28dce965a41", + "type": "Statuts", + "nom_original": "Statuts 1957.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-06-24" + }, + { + "id": "7e7867b6-8fe0-11f1-a424-f28dce965a42", + "type": "Comptes", + "nom_original": "Comptes annuels 2025.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-06-24" + }, + { + "id": "7e7867b6-8fe0-11f1-a424-f28dce965a43", + "type": "Rapport d'activité", + "nom_original": "Rapport d'activité 2025.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-06-24" + } + ] + }, + "links": {}, + "meta": {} + } + ``` + +

+
+ +
Commande cURL +

+ + ```bash + curl -H "Authorization: Bearer $token" \ + -G -d 'recipient=10000001700010' -d 'context=Contexte+de+la+requ%C3%AAte' -d 'object=Objet+de+la+requ%C3%AAte' \ + --url "https://staging.entreprise.api.gouv.fr/v3/ministere_interieur/siaf/fondations/075-frup-00194-01" + ``` + +

+
+* [200_frup_by_siren.yaml](200_frup_by_siren.yaml) + + Status `200` + + Fondation reconnue d'utilité publique (FRUP), appelée par SIREN + +
Paramètres +

+ + ```json + { + "siren_or_siret_or_rnf": "784308934" + } + ``` + +

+
+ +
Réponse API +

+ + ```json + { + "data": { + "identifiants": { + "rnf": "075-FRUP-00194-01", + "siren": "784308934", + "siret": "78430893400016" + }, + "identite": { + "service_instructeur": "75", + "type_fondation": "FRUP", + "denomination": "MAISON DE LA CHIMIE", + "etat": "Active", + "date_effet_etat": "1928-08-12", + "date_creation": "1928-08-12", + "date_terme": null, + "date_cloture_exercice": "12-31", + "adresse_siege": { + "adresse_complete": "28 Rue Saint-Dominique 75007 Paris", + "numero_voie": "28", + "nom_voie": "Rue Saint-Dominique", + "code_postal": "75007", + "commune": "Paris 7e Arrondissement", + "code_insee_commune": "75107", + "departement": "75", + "pays": "France" + }, + "courriel": "contact@fondation-exemple.fr", + "telephone": "+33123456789" + }, + "activite": { + "objet_social": "L'aménagement et l'entretien d'un immeuble destiné à permettre la jouissance de locaux et de salles de réunions aux organismes de chimie pure et appliquée, en vue de contribuer à l'avancement de la science chimique et au développement de ses applications.", + "domaine_interet_general": "Scientifique", + "activite_internationale_prevue_par_statuts": false + }, + "dirigeants": [ + { + "nom": "DUPONT", + "prenom": "Marie", + "date_naissance": "1975-04-12", + "nationalite": "France", + "adresse_domiciliation": { + "adresse_complete": "20 Rue Exemple 75001 Paris", + "code_postal": "75001", + "commune": "Paris", + "pays": "France" + }, + "pays_residence": "France", + "profession": "Juriste", + "date_entree_fonction": "2018-06-23", + "date_sortie_fonction": null, + "fonction": "Président", + "qualite": "Membre du conseil d'administration", + "fondateur": false, + "personne_morale": null + }, + { + "nom": "MARTIN", + "prenom": "Paul", + "date_naissance": "1968-11-02", + "nationalite": "France", + "adresse_domiciliation": { + "adresse_complete": "5 Avenue Exemple 75008 Paris", + "code_postal": "75008", + "commune": "Paris", + "pays": "France" + }, + "pays_residence": "France", + "profession": "Chercheur", + "date_entree_fonction": "2018-06-28", + "date_sortie_fonction": null, + "fonction": "Trésorier", + "qualite": "Membre du conseil d'administration", + "fondateur": false, + "personne_morale": null + } + ], + "liens_entre_organismes": { + "organisme_issu_transformation": null, + "organisme_issu_fusion": null, + "organismes_issus_scission": [] + }, + "situation_financiere": { + "annees_subventions_publiques": [ + 2024, + 2025 + ], + "annees_appel_generosite_publique": [ + 2025 + ], + "annees_financements_etrangers": [] + }, + "dossiers": { + "etat_transmission_comptes": "En règle", + "exercices_comptables_transmis": [ + 2023, + 2024, + 2025 + ] + }, + "documents": [ + { + "id": "7e7867b6-8fe0-11f1-a424-f28dce965a41", + "type": "Statuts", + "nom_original": "Statuts 1957.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-06-24" + }, + { + "id": "7e7867b6-8fe0-11f1-a424-f28dce965a42", + "type": "Comptes", + "nom_original": "Comptes annuels 2025.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-06-24" + }, + { + "id": "7e7867b6-8fe0-11f1-a424-f28dce965a43", + "type": "Rapport d'activité", + "nom_original": "Rapport d'activité 2025.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-06-24" + } + ] + }, + "links": {}, + "meta": {} + } + ``` + +

+
+ +
Commande cURL +

+ + ```bash + curl -H "Authorization: Bearer $token" \ + -G -d 'recipient=10000001700010' -d 'context=Contexte+de+la+requ%C3%AAte' -d 'object=Objet+de+la+requ%C3%AAte' \ + --url "https://staging.entreprise.api.gouv.fr/v3/ministere_interieur/siaf/fondations/784308934" + ``` + +

+
+* [200_frup_by_siret.yaml](200_frup_by_siret.yaml) + + Status `200` + + Fondation reconnue d'utilité publique (FRUP), appelée par SIRET + +
Paramètres +

+ + ```json + { + "siren_or_siret_or_rnf": "78430893400016" + } + ``` + +

+
+ +
Réponse API +

+ + ```json + { + "data": { + "identifiants": { + "rnf": "075-FRUP-00194-01", + "siren": "784308934", + "siret": "78430893400016" + }, + "identite": { + "service_instructeur": "75", + "type_fondation": "FRUP", + "denomination": "MAISON DE LA CHIMIE", + "etat": "Active", + "date_effet_etat": "1928-08-12", + "date_creation": "1928-08-12", + "date_terme": null, + "date_cloture_exercice": "12-31", + "adresse_siege": { + "adresse_complete": "28 Rue Saint-Dominique 75007 Paris", + "numero_voie": "28", + "nom_voie": "Rue Saint-Dominique", + "code_postal": "75007", + "commune": "Paris 7e Arrondissement", + "code_insee_commune": "75107", + "departement": "75", + "pays": "France" + }, + "courriel": "contact@fondation-exemple.fr", + "telephone": "+33123456789" + }, + "activite": { + "objet_social": "L'aménagement et l'entretien d'un immeuble destiné à permettre la jouissance de locaux et de salles de réunions aux organismes de chimie pure et appliquée, en vue de contribuer à l'avancement de la science chimique et au développement de ses applications.", + "domaine_interet_general": "Scientifique", + "activite_internationale_prevue_par_statuts": false + }, + "dirigeants": [ + { + "nom": "DUPONT", + "prenom": "Marie", + "date_naissance": "1975-04-12", + "nationalite": "France", + "adresse_domiciliation": { + "adresse_complete": "20 Rue Exemple 75001 Paris", + "code_postal": "75001", + "commune": "Paris", + "pays": "France" + }, + "pays_residence": "France", + "profession": "Juriste", + "date_entree_fonction": "2018-06-23", + "date_sortie_fonction": null, + "fonction": "Président", + "qualite": "Membre du conseil d'administration", + "fondateur": false, + "personne_morale": null + }, + { + "nom": "MARTIN", + "prenom": "Paul", + "date_naissance": "1968-11-02", + "nationalite": "France", + "adresse_domiciliation": { + "adresse_complete": "5 Avenue Exemple 75008 Paris", + "code_postal": "75008", + "commune": "Paris", + "pays": "France" + }, + "pays_residence": "France", + "profession": "Chercheur", + "date_entree_fonction": "2018-06-28", + "date_sortie_fonction": null, + "fonction": "Trésorier", + "qualite": "Membre du conseil d'administration", + "fondateur": false, + "personne_morale": null + } + ], + "liens_entre_organismes": { + "organisme_issu_transformation": null, + "organisme_issu_fusion": null, + "organismes_issus_scission": [] + }, + "situation_financiere": { + "annees_subventions_publiques": [ + 2024, + 2025 + ], + "annees_appel_generosite_publique": [ + 2025 + ], + "annees_financements_etrangers": [] + }, + "dossiers": { + "etat_transmission_comptes": "En règle", + "exercices_comptables_transmis": [ + 2023, + 2024, + 2025 + ] + }, + "documents": [ + { + "id": "7e7867b6-8fe0-11f1-a424-f28dce965a41", + "type": "Statuts", + "nom_original": "Statuts 1957.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-06-24" + }, + { + "id": "7e7867b6-8fe0-11f1-a424-f28dce965a42", + "type": "Comptes", + "nom_original": "Comptes annuels 2025.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-06-24" + }, + { + "id": "7e7867b6-8fe0-11f1-a424-f28dce965a43", + "type": "Rapport d'activité", + "nom_original": "Rapport d'activité 2025.pdf", + "type_mime": "application/pdf", + "date_depot": "2026-06-24" + } + ] + }, + "links": {}, + "meta": {} + } + ``` + +

+
+ +
Commande cURL +

+ + ```bash + curl -H "Authorization: Bearer $token" \ + -G -d 'recipient=10000001700010' -d 'context=Contexte+de+la+requ%C3%AAte' -d 'object=Objet+de+la+requ%C3%AAte' \ + --url "https://staging.entreprise.api.gouv.fr/v3/ministere_interieur/siaf/fondations/78430893400016" + ``` + +

+
+* [404.yaml](404.yaml) + + Status `404` + + Fondation non trouvée + +
Paramètres +

+ + ```json + { + "siren_or_siret_or_rnf": "099-fdd-99999-99" + } + ``` + +

+
+ +
Réponse API +

+ + ```json + { + "errors": [ + { + "code": "44003", + "title": "Entité non trouvée", + "detail": "Le ou les paramètre(s) d'entrée n'existent pas, ne sont pas connus, ou ne comportent aucune information pour cet appel. Veuillez vérifier que votre recherche est couverte par le périmètre de l'API.", + "meta": { + "provider": "SIAF" + } + } + ] + } + ``` + +

+
+ +
Commande cURL +

+ + ```bash + curl -H "Authorization: Bearer $token" \ + -G -d 'recipient=10000001700010' -d 'context=Contexte+de+la+requ%C3%AAte' -d 'object=Objet+de+la+requ%C3%AAte' \ + --url "https://staging.entreprise.api.gouv.fr/v3/ministere_interieur/siaf/fondations/099-fdd-99999-99" + ``` + +

+
diff --git a/mocks/payloads/api_entreprise_v3_mi_siaf_fondations/summary.csv b/mocks/payloads/api_entreprise_v3_mi_siaf_fondations/summary.csv new file mode 100644 index 0000000000..821a0977ea --- /dev/null +++ b/mocks/payloads/api_entreprise_v3_mi_siaf_fondations/summary.csv @@ -0,0 +1,576 @@ +Titre,Description,Paramètres,Status,Réponse +,"Fonds de dotation (FDD) sans SIRET, accessible uniquement par identifiant RNF","{""siren_or_siret_or_rnf"":""075-fdd-00700-07""}",200,"{ + ""data"": { + ""identifiants"": { + ""rnf"": ""075-FDD-00700-07"", + ""siren"": null, + ""siret"": null + }, + ""identite"": { + ""service_instructeur"": ""75"", + ""type_fondation"": ""FDD"", + ""denomination"": ""MEET MY MAMA FUND"", + ""etat"": ""Active"", + ""date_effet_etat"": ""2023-03-08"", + ""date_creation"": ""2023-03-08"", + ""date_terme"": null, + ""date_cloture_exercice"": ""12-31"", + ""adresse_siege"": { + ""adresse_complete"": ""10 Rue de Penthièvre 75008 Paris"", + ""numero_voie"": ""10"", + ""nom_voie"": ""Rue de Penthièvre"", + ""code_postal"": ""75008"", + ""commune"": ""Paris 8e Arrondissement"", + ""code_insee_commune"": ""75108"", + ""departement"": ""75"", + ""pays"": ""France"" + }, + ""courriel"": ""contact@fonds-exemple.fr"", + ""telephone"": ""+33198765432"" + }, + ""activite"": { + ""objet_social"": ""Conduire et soutenir toutes missions d'intérêt général à caractère social, philanthropique, éducatif et humanitaire concourant à faciliter l'inclusion sociale, notamment des femmes."", + ""domaine_interet_general"": ""Social, Humanitaire, Éducatif"", + ""activite_internationale_prevue_par_statuts"": false + }, + ""dirigeants"": [ + { + ""nom"": ""BERNARD"", + ""prenom"": ""Louise"", + ""date_naissance"": ""1988-02-20"", + ""nationalite"": ""France"", + ""adresse_domiciliation"": { + ""adresse_complete"": ""1 Avenue des Champs Elysées 75008 Paris"", + ""code_postal"": ""75008"", + ""commune"": ""Paris"", + ""pays"": ""France"" + }, + ""pays_residence"": ""France"", + ""profession"": ""Entrepreneuse"", + ""date_entree_fonction"": ""2023-02-13"", + ""date_sortie_fonction"": null, + ""fonction"": ""Présidente"", + ""qualite"": ""Membre du conseil d'administration"", + ""fondateur"": true, + ""personne_morale"": null + }, + { + ""nom"": ""PETIT"", + ""prenom"": ""Nicolas"", + ""date_naissance"": ""1985-07-30"", + ""nationalite"": ""France"", + ""adresse_domiciliation"": { + ""adresse_complete"": ""1 Avenue des Champs Elysées 75008 Paris"", + ""code_postal"": ""75008"", + ""commune"": ""Paris"", + ""pays"": ""France"" + }, + ""pays_residence"": ""France"", + ""profession"": ""Consultant"", + ""date_entree_fonction"": ""2023-02-13"", + ""date_sortie_fonction"": null, + ""fonction"": ""Secrétaire"", + ""qualite"": ""Membre du conseil d'administration"", + ""fondateur"": false, + ""personne_morale"": null + } + ], + ""liens_entre_organismes"": { + ""organisme_issu_transformation"": null, + ""organisme_issu_fusion"": null, + ""organismes_issus_scission"": [] + }, + ""situation_financiere"": { + ""annees_subventions_publiques"": [], + ""annees_appel_generosite_publique"": [], + ""annees_financements_etrangers"": [] + }, + ""dossiers"": { + ""etat_transmission_comptes"": ""En règle"", + ""exercices_comptables_transmis"": [2023, 2024] + }, + ""documents"": [ + { + ""id"": ""711cf2ed-6e04-11f1-aed1-4faba2bb8c0b"", + ""type"": ""Statuts"", + ""nom_original"": ""Statuts constitutifs.pdf"", + ""type_mime"": ""application/pdf"", + ""date_depot"": ""2026-04-20"" + }, + { + ""id"": ""711cf2ee-6e04-11f1-aed1-4faba2bb8c0b"", + ""type"": ""Comptes"", + ""nom_original"": ""Comptes annuels 2024.pdf"", + ""type_mime"": ""application/pdf"", + ""date_depot"": ""2026-06-17"" + }, + { + ""id"": ""711cf2ef-6e04-11f1-aed1-4faba2bb8c0b"", + ""type"": ""Rapport d'activité"", + ""nom_original"": ""Rapport d'activité 2024.pdf"", + ""type_mime"": ""application/pdf"", + ""date_depot"": ""2026-06-17"" + } + ] + }, + ""links"": {}, + ""meta"": {} +}" +,"Fondation d'entreprise (FE) à durée déterminée, avec un dirigeant représentant une personne morale","{""siren_or_siret_or_rnf"":""075-fe-00117-05""}",200,"{ + ""data"": { + ""identifiants"": { + ""rnf"": ""075-FE-00117-05"", + ""siren"": ""987654321"", + ""siret"": ""98765432100012"" + }, + ""identite"": { + ""service_instructeur"": ""75"", + ""type_fondation"": ""FE"", + ""denomination"": ""FONDATION D'ENTREPRISE EXEMPLE"", + ""etat"": ""Active"", + ""date_effet_etat"": ""2019-05-15"", + ""date_creation"": ""2019-05-15"", + ""date_terme"": ""2029-05-14"", + ""date_cloture_exercice"": ""12-31"", + ""adresse_siege"": { + ""adresse_complete"": ""25 Avenue Exemple 75008 Paris"", + ""numero_voie"": ""25"", + ""nom_voie"": ""Avenue Exemple"", + ""code_postal"": ""75008"", + ""commune"": ""Paris 8e Arrondissement"", + ""code_insee_commune"": ""75108"", + ""departement"": ""75"", + ""pays"": ""France"" + }, + ""courriel"": ""fondation@entreprise-exemple.fr"", + ""telephone"": ""+33144556677"" + }, + ""activite"": { + ""objet_social"": ""Financer des actions d'intérêt général dans le domaine de l'éducation et de l'insertion professionnelle des jeunes."", + ""domaine_interet_general"": ""Éducatif, Social"", + ""activite_internationale_prevue_par_statuts"": true + }, + ""dirigeants"": [ + { + ""nom"": ""MOREAU"", + ""prenom"": ""Claire"", + ""date_naissance"": ""1972-09-18"", + ""nationalite"": ""France"", + ""adresse_domiciliation"": { + ""adresse_complete"": ""12 Rue Exemple 92100 Boulogne-Billancourt"", + ""code_postal"": ""92100"", + ""commune"": ""Boulogne-Billancourt"", + ""pays"": ""France"" + }, + ""pays_residence"": ""France"", + ""profession"": ""Directrice générale"", + ""date_entree_fonction"": ""2019-05-15"", + ""date_sortie_fonction"": null, + ""fonction"": ""Présidente"", + ""qualite"": ""Membre du conseil d'administration"", + ""fondateur"": false, + ""personne_morale"": { + ""type"": ""Entreprise"", + ""identifiant"": ""98765432100012"", + ""denomination"": ""ENTREPRISE EXEMPLE"", + ""pays"": ""France"" + } + } + ], + ""liens_entre_organismes"": { + ""organisme_issu_transformation"": null, + ""organisme_issu_fusion"": null, + ""organismes_issus_scission"": [] + }, + ""situation_financiere"": { + ""annees_subventions_publiques"": [], + ""annees_appel_generosite_publique"": [], + ""annees_financements_etrangers"": [2024] + }, + ""dossiers"": { + ""etat_transmission_comptes"": ""En défaut"", + ""exercices_comptables_transmis"": [2022, 2023] + }, + ""documents"": [ + { + ""id"": ""8a1b2c3d-4e5f-11f1-aed1-4faba2bb8c0b"", + ""type"": ""Statuts"", + ""nom_original"": ""Statuts fondation entreprise.pdf"", + ""type_mime"": ""application/pdf"", + ""date_depot"": ""2026-03-12"" + }, + { + ""id"": ""8a1b2c3d-4e5f-11f1-aed1-4faba2bb8c0c"", + ""type"": ""Procès verbal"", + ""nom_original"": ""PV conseil administration 2025.pdf"", + ""type_mime"": ""application/pdf"", + ""date_depot"": ""2026-03-12"" + } + ] + }, + ""links"": {}, + ""meta"": {} +}" +,"Fondation reconnue d'utilité publique (FRUP), appelée par identifiant RNF","{""siren_or_siret_or_rnf"":""075-frup-00194-01""}",200,"{ + ""data"": { + ""identifiants"": { + ""rnf"": ""075-FRUP-00194-01"", + ""siren"": ""784308934"", + ""siret"": ""78430893400016"" + }, + ""identite"": { + ""service_instructeur"": ""75"", + ""type_fondation"": ""FRUP"", + ""denomination"": ""MAISON DE LA CHIMIE"", + ""etat"": ""Active"", + ""date_effet_etat"": ""1928-08-12"", + ""date_creation"": ""1928-08-12"", + ""date_terme"": null, + ""date_cloture_exercice"": ""12-31"", + ""adresse_siege"": { + ""adresse_complete"": ""28 Rue Saint-Dominique 75007 Paris"", + ""numero_voie"": ""28"", + ""nom_voie"": ""Rue Saint-Dominique"", + ""code_postal"": ""75007"", + ""commune"": ""Paris 7e Arrondissement"", + ""code_insee_commune"": ""75107"", + ""departement"": ""75"", + ""pays"": ""France"" + }, + ""courriel"": ""contact@fondation-exemple.fr"", + ""telephone"": ""+33123456789"" + }, + ""activite"": { + ""objet_social"": ""L'aménagement et l'entretien d'un immeuble destiné à permettre la jouissance de locaux et de salles de réunions aux organismes de chimie pure et appliquée, en vue de contribuer à l'avancement de la science chimique et au développement de ses applications."", + ""domaine_interet_general"": ""Scientifique"", + ""activite_internationale_prevue_par_statuts"": false + }, + ""dirigeants"": [ + { + ""nom"": ""DUPONT"", + ""prenom"": ""Marie"", + ""date_naissance"": ""1975-04-12"", + ""nationalite"": ""France"", + ""adresse_domiciliation"": { + ""adresse_complete"": ""20 Rue Exemple 75001 Paris"", + ""code_postal"": ""75001"", + ""commune"": ""Paris"", + ""pays"": ""France"" + }, + ""pays_residence"": ""France"", + ""profession"": ""Juriste"", + ""date_entree_fonction"": ""2018-06-23"", + ""date_sortie_fonction"": null, + ""fonction"": ""Président"", + ""qualite"": ""Membre du conseil d'administration"", + ""fondateur"": false, + ""personne_morale"": null + }, + { + ""nom"": ""MARTIN"", + ""prenom"": ""Paul"", + ""date_naissance"": ""1968-11-02"", + ""nationalite"": ""France"", + ""adresse_domiciliation"": { + ""adresse_complete"": ""5 Avenue Exemple 75008 Paris"", + ""code_postal"": ""75008"", + ""commune"": ""Paris"", + ""pays"": ""France"" + }, + ""pays_residence"": ""France"", + ""profession"": ""Chercheur"", + ""date_entree_fonction"": ""2018-06-28"", + ""date_sortie_fonction"": null, + ""fonction"": ""Trésorier"", + ""qualite"": ""Membre du conseil d'administration"", + ""fondateur"": false, + ""personne_morale"": null + } + ], + ""liens_entre_organismes"": { + ""organisme_issu_transformation"": null, + ""organisme_issu_fusion"": null, + ""organismes_issus_scission"": [] + }, + ""situation_financiere"": { + ""annees_subventions_publiques"": [2024, 2025], + ""annees_appel_generosite_publique"": [2025], + ""annees_financements_etrangers"": [] + }, + ""dossiers"": { + ""etat_transmission_comptes"": ""En règle"", + ""exercices_comptables_transmis"": [2023, 2024, 2025] + }, + ""documents"": [ + { + ""id"": ""7e7867b6-8fe0-11f1-a424-f28dce965a41"", + ""type"": ""Statuts"", + ""nom_original"": ""Statuts 1957.pdf"", + ""type_mime"": ""application/pdf"", + ""date_depot"": ""2026-06-24"" + }, + { + ""id"": ""7e7867b6-8fe0-11f1-a424-f28dce965a42"", + ""type"": ""Comptes"", + ""nom_original"": ""Comptes annuels 2025.pdf"", + ""type_mime"": ""application/pdf"", + ""date_depot"": ""2026-06-24"" + }, + { + ""id"": ""7e7867b6-8fe0-11f1-a424-f28dce965a43"", + ""type"": ""Rapport d'activité"", + ""nom_original"": ""Rapport d'activité 2025.pdf"", + ""type_mime"": ""application/pdf"", + ""date_depot"": ""2026-06-24"" + } + ] + }, + ""links"": {}, + ""meta"": {} +}" +,"Fondation reconnue d'utilité publique (FRUP), appelée par SIREN","{""siren_or_siret_or_rnf"":""784308934""}",200,"{ + ""data"": { + ""identifiants"": { + ""rnf"": ""075-FRUP-00194-01"", + ""siren"": ""784308934"", + ""siret"": ""78430893400016"" + }, + ""identite"": { + ""service_instructeur"": ""75"", + ""type_fondation"": ""FRUP"", + ""denomination"": ""MAISON DE LA CHIMIE"", + ""etat"": ""Active"", + ""date_effet_etat"": ""1928-08-12"", + ""date_creation"": ""1928-08-12"", + ""date_terme"": null, + ""date_cloture_exercice"": ""12-31"", + ""adresse_siege"": { + ""adresse_complete"": ""28 Rue Saint-Dominique 75007 Paris"", + ""numero_voie"": ""28"", + ""nom_voie"": ""Rue Saint-Dominique"", + ""code_postal"": ""75007"", + ""commune"": ""Paris 7e Arrondissement"", + ""code_insee_commune"": ""75107"", + ""departement"": ""75"", + ""pays"": ""France"" + }, + ""courriel"": ""contact@fondation-exemple.fr"", + ""telephone"": ""+33123456789"" + }, + ""activite"": { + ""objet_social"": ""L'aménagement et l'entretien d'un immeuble destiné à permettre la jouissance de locaux et de salles de réunions aux organismes de chimie pure et appliquée, en vue de contribuer à l'avancement de la science chimique et au développement de ses applications."", + ""domaine_interet_general"": ""Scientifique"", + ""activite_internationale_prevue_par_statuts"": false + }, + ""dirigeants"": [ + { + ""nom"": ""DUPONT"", + ""prenom"": ""Marie"", + ""date_naissance"": ""1975-04-12"", + ""nationalite"": ""France"", + ""adresse_domiciliation"": { + ""adresse_complete"": ""20 Rue Exemple 75001 Paris"", + ""code_postal"": ""75001"", + ""commune"": ""Paris"", + ""pays"": ""France"" + }, + ""pays_residence"": ""France"", + ""profession"": ""Juriste"", + ""date_entree_fonction"": ""2018-06-23"", + ""date_sortie_fonction"": null, + ""fonction"": ""Président"", + ""qualite"": ""Membre du conseil d'administration"", + ""fondateur"": false, + ""personne_morale"": null + }, + { + ""nom"": ""MARTIN"", + ""prenom"": ""Paul"", + ""date_naissance"": ""1968-11-02"", + ""nationalite"": ""France"", + ""adresse_domiciliation"": { + ""adresse_complete"": ""5 Avenue Exemple 75008 Paris"", + ""code_postal"": ""75008"", + ""commune"": ""Paris"", + ""pays"": ""France"" + }, + ""pays_residence"": ""France"", + ""profession"": ""Chercheur"", + ""date_entree_fonction"": ""2018-06-28"", + ""date_sortie_fonction"": null, + ""fonction"": ""Trésorier"", + ""qualite"": ""Membre du conseil d'administration"", + ""fondateur"": false, + ""personne_morale"": null + } + ], + ""liens_entre_organismes"": { + ""organisme_issu_transformation"": null, + ""organisme_issu_fusion"": null, + ""organismes_issus_scission"": [] + }, + ""situation_financiere"": { + ""annees_subventions_publiques"": [2024, 2025], + ""annees_appel_generosite_publique"": [2025], + ""annees_financements_etrangers"": [] + }, + ""dossiers"": { + ""etat_transmission_comptes"": ""En règle"", + ""exercices_comptables_transmis"": [2023, 2024, 2025] + }, + ""documents"": [ + { + ""id"": ""7e7867b6-8fe0-11f1-a424-f28dce965a41"", + ""type"": ""Statuts"", + ""nom_original"": ""Statuts 1957.pdf"", + ""type_mime"": ""application/pdf"", + ""date_depot"": ""2026-06-24"" + }, + { + ""id"": ""7e7867b6-8fe0-11f1-a424-f28dce965a42"", + ""type"": ""Comptes"", + ""nom_original"": ""Comptes annuels 2025.pdf"", + ""type_mime"": ""application/pdf"", + ""date_depot"": ""2026-06-24"" + }, + { + ""id"": ""7e7867b6-8fe0-11f1-a424-f28dce965a43"", + ""type"": ""Rapport d'activité"", + ""nom_original"": ""Rapport d'activité 2025.pdf"", + ""type_mime"": ""application/pdf"", + ""date_depot"": ""2026-06-24"" + } + ] + }, + ""links"": {}, + ""meta"": {} +}" +,"Fondation reconnue d'utilité publique (FRUP), appelée par SIRET","{""siren_or_siret_or_rnf"":""78430893400016""}",200,"{ + ""data"": { + ""identifiants"": { + ""rnf"": ""075-FRUP-00194-01"", + ""siren"": ""784308934"", + ""siret"": ""78430893400016"" + }, + ""identite"": { + ""service_instructeur"": ""75"", + ""type_fondation"": ""FRUP"", + ""denomination"": ""MAISON DE LA CHIMIE"", + ""etat"": ""Active"", + ""date_effet_etat"": ""1928-08-12"", + ""date_creation"": ""1928-08-12"", + ""date_terme"": null, + ""date_cloture_exercice"": ""12-31"", + ""adresse_siege"": { + ""adresse_complete"": ""28 Rue Saint-Dominique 75007 Paris"", + ""numero_voie"": ""28"", + ""nom_voie"": ""Rue Saint-Dominique"", + ""code_postal"": ""75007"", + ""commune"": ""Paris 7e Arrondissement"", + ""code_insee_commune"": ""75107"", + ""departement"": ""75"", + ""pays"": ""France"" + }, + ""courriel"": ""contact@fondation-exemple.fr"", + ""telephone"": ""+33123456789"" + }, + ""activite"": { + ""objet_social"": ""L'aménagement et l'entretien d'un immeuble destiné à permettre la jouissance de locaux et de salles de réunions aux organismes de chimie pure et appliquée, en vue de contribuer à l'avancement de la science chimique et au développement de ses applications."", + ""domaine_interet_general"": ""Scientifique"", + ""activite_internationale_prevue_par_statuts"": false + }, + ""dirigeants"": [ + { + ""nom"": ""DUPONT"", + ""prenom"": ""Marie"", + ""date_naissance"": ""1975-04-12"", + ""nationalite"": ""France"", + ""adresse_domiciliation"": { + ""adresse_complete"": ""20 Rue Exemple 75001 Paris"", + ""code_postal"": ""75001"", + ""commune"": ""Paris"", + ""pays"": ""France"" + }, + ""pays_residence"": ""France"", + ""profession"": ""Juriste"", + ""date_entree_fonction"": ""2018-06-23"", + ""date_sortie_fonction"": null, + ""fonction"": ""Président"", + ""qualite"": ""Membre du conseil d'administration"", + ""fondateur"": false, + ""personne_morale"": null + }, + { + ""nom"": ""MARTIN"", + ""prenom"": ""Paul"", + ""date_naissance"": ""1968-11-02"", + ""nationalite"": ""France"", + ""adresse_domiciliation"": { + ""adresse_complete"": ""5 Avenue Exemple 75008 Paris"", + ""code_postal"": ""75008"", + ""commune"": ""Paris"", + ""pays"": ""France"" + }, + ""pays_residence"": ""France"", + ""profession"": ""Chercheur"", + ""date_entree_fonction"": ""2018-06-28"", + ""date_sortie_fonction"": null, + ""fonction"": ""Trésorier"", + ""qualite"": ""Membre du conseil d'administration"", + ""fondateur"": false, + ""personne_morale"": null + } + ], + ""liens_entre_organismes"": { + ""organisme_issu_transformation"": null, + ""organisme_issu_fusion"": null, + ""organismes_issus_scission"": [] + }, + ""situation_financiere"": { + ""annees_subventions_publiques"": [2024, 2025], + ""annees_appel_generosite_publique"": [2025], + ""annees_financements_etrangers"": [] + }, + ""dossiers"": { + ""etat_transmission_comptes"": ""En règle"", + ""exercices_comptables_transmis"": [2023, 2024, 2025] + }, + ""documents"": [ + { + ""id"": ""7e7867b6-8fe0-11f1-a424-f28dce965a41"", + ""type"": ""Statuts"", + ""nom_original"": ""Statuts 1957.pdf"", + ""type_mime"": ""application/pdf"", + ""date_depot"": ""2026-06-24"" + }, + { + ""id"": ""7e7867b6-8fe0-11f1-a424-f28dce965a42"", + ""type"": ""Comptes"", + ""nom_original"": ""Comptes annuels 2025.pdf"", + ""type_mime"": ""application/pdf"", + ""date_depot"": ""2026-06-24"" + }, + { + ""id"": ""7e7867b6-8fe0-11f1-a424-f28dce965a43"", + ""type"": ""Rapport d'activité"", + ""nom_original"": ""Rapport d'activité 2025.pdf"", + ""type_mime"": ""application/pdf"", + ""date_depot"": ""2026-06-24"" + } + ] + }, + ""links"": {}, + ""meta"": {} +}" +,Fondation non trouvée,"{""siren_or_siret_or_rnf"":""099-fdd-99999-99""}",404,"{ + ""errors"": [ + { + ""code"": ""44003"", + ""title"": ""Entité non trouvée"", + ""detail"": ""Le ou les paramètre(s) d'entrée n'existent pas, ne sont pas connus, ou ne comportent aucune information pour cet appel. Veuillez vérifier que votre recherche est couverte par le périmètre de l'API."", + ""meta"": { + ""provider"": ""SIAF"" + } + } + ] +}" diff --git a/mocks/tokens/default b/mocks/tokens/default index ebc43d7ebb..c9362a3522 100644 --- a/mocks/tokens/default +++ b/mocks/tokens/default @@ -1 +1 @@ -eyJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiIzNDkyZGRjOC05MWIzLTQwZTAtYmE0MC1jMjg5NGY3NDgwYTciLCJqdGkiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJzY29wZXMiOlsiYXNzb2NpYXRpb25zIiwib3Blbl9kYXRhIiwicHJvYnRwIiwiY290aXNhdGlvbnNfcHJvYnRwIiwiYXR0ZXN0YXRpb25zX2Zpc2NhbGVzIiwiYXR0ZXN0YXRpb25fZmlzY2FsZV9kZ2ZpcCIsImF0dGVzdGF0aW9uc19zb2NpYWxlcyIsImF0dGVzdGF0aW9uX3NvY2lhbGVfdXJzc2FmIiwiYmlsYW5zX2VudHJlcHJpc2VfYmRmIiwiYmlsYW5zX2JkZiIsImZudHBfY2FydGVfcHJvIiwiY2VydGlmaWNhdF9jbmV0cCIsImNlcnRpZmljYXRpb25fY25ldHAiLCJjZXJ0aWZpY2F0X29wcWliaSIsInF1YWxpYmF0IiwiY2VydGlmaWNhdF9yZ2VfYWRlbWUiLCJkb2N1bWVudHNfYXNzb2NpYXRpb24iLCJlbnRyZXByaXNlcyIsInVuaXRlc19sZWdhbGVzX2V0YWJsaXNzZW1lbnRzX2luc2VlIiwiZXRhYmxpc3NlbWVudHMiLCJleGVyY2ljZXMiLCJjaGlmZnJlX2FmZmFpcmVzX2RnZmlwIiwiZXh0cmFpdHNfcmNzIiwibGlhc3NlX2Zpc2NhbGUiLCJsaWFzc2VzX2Zpc2NhbGVzX2RnZmlwIiwiY2VydGlmaWNhdGlvbnNfcXVhbGlvcGlfZnJhbmNlX2NvbXBldGVuY2VzIiwiYXR0ZXN0YXRpb25fY290aXNhdGlvbnNfY29uZ2VzX3BheWVzX2Nob21hZ2VfaW50ZW1wZXJpZXNfY2lidHBfY25ldHAiLCJlb3JpX2RvdWFuZXMiLCJkYXRhX3N1YnZlbnRpb25fc3VidmVudGlvbnMiLCJsaWVuc19jYXBpdGFsaXN0aXF1ZXNfZGdmaXAiLCJjb252ZW50aW9uc19jb2xsZWN0aXZlcyIsIm1hbmRhdGFpcmVzX3NvY2lhdXhfaW5mb2dyZWZmZSIsImFjdGVzX2lucGkiLCJhc3NvY2lhdGlvbnNfZG9ubmVlc19wcm90ZWdlZXMiLCJhc3NvY2lhdGlvbnNfZGplcHZhIiwibXNhX2NvdGlzYXRpb25zIiwiY290aXNhdGlvbnNfbXNhIiwiY2VydGlmaWNhdGlvbl9vcHFpYmkiLCJlbnRyZXByaXNlc19hcnRpc2FuYWxlcyIsImVmZmVjdGlmc191cnNzYWYiLCJiZW5lZmljaWFpcmVzX2VmZmVjdGlmc19pbnBpIiwiY25hZl9xdW90aWVudF9mYW1pbGlhbCIsImNuYWZfYWxsb2NhdGFpcmVzIiwiY25hZl9lbmZhbnRzIiwiY25hZl9hZHJlc3NlIiwiY29tcGxlbWVudGFpcmVfc2FudGVfc29saWRhaXJlIiwiYWxsb2NhdGlvbl9hZHVsdGVfaGFuZGljYXBlIiwicmV2ZW51X3NvbGlkYXJpdGVfYWN0aXZlIiwicmV2ZW51X3NvbGlkYXJpdGVfYWN0aXZlX21ham9yYXRpb24iLCJhbGxvY2F0aW9uX3NvdXRpZW5fZmFtaWxpYWwiLCJwcmltZV9hY3Rpdml0ZSIsInByaW1lX2FjdGl2aXRlX21ham9yYXRpb24iLCJjbm91c19zdGF0dXRfYm91cnNpZXIiLCJjbm91c19lY2hlbG9uX2JvdXJzZSIsImNub3VzX2VtYWlsIiwiY25vdXNfcGVyaW9kZV92ZXJzZW1lbnQiLCJjbm91c19zdGF0dXRfYm91cnNlIiwiY25vdXNfdmlsbGVfZXR1ZGVzIiwiY25vdXNfaWRlbnRpdGUiLCJtZXNyaV9pZGVudGlmaWFudCIsIm1lc3JpX2lkZW50aXRlIiwibWVzcmlfaW5zY3JpcHRpb25fZXR1ZGlhbnQiLCJtZXNyaV9pbnNjcmlwdGlvbl9hdXRyZSIsIm1lc3JpX2FkbWlzc2lvbiIsIm1lc3JpX2V0YWJsaXNzZW1lbnRzIiwicG9sZV9lbXBsb2lfaWRlbnRpdGUiLCJwb2xlX2VtcGxvaV9hZHJlc3NlIiwicG9sZV9lbXBsb2lfY29udGFjdCIsInBvbGVfZW1wbG9pX2luc2NyaXB0aW9uIiwicG9sZV9lbXBsb2lfcGFpZW1lbnRzIiwibWVuX3N0YXR1dF9zY29sYXJpdGUiLCJtZW5fc3RhdHV0X2JvdXJzaWVyIiwibWVuX2VjaGVsb25fYm91cnNlIiwiYW50c19leHRyYWl0X2ltbWF0cmljdWxhdGlvbl92ZWhpY3VsZV9pZGVudGl0ZV9wYXJ0aWN1bGllciIsImFudHNfZXh0cmFpdF9pbW1hdHJpY3VsYXRpb25fdmVoaWN1bGVfYWRyZXNzZV9wYXJ0aWN1bGllciIsImFudHNfZXh0cmFpdF9pbW1hdHJpY3VsYXRpb25fdmVoaWN1bGVfc3RhdHV0X3JhdHRhY2hlbWVudCIsImFudHNfZXh0cmFpdF9pbW1hdHJpY3VsYXRpb25fdmVoaWN1bGVfZG9ubmVlc19pbW1hdHJpY3VsYXRpb25fdmVoaWN1bGUiLCJhbnRzX2V4dHJhaXRfaW1tYXRyaWN1bGF0aW9uX3ZlaGljdWxlX2NhcmFjdGVyaXN0aXF1ZXNfdGVjaG5pcXVlc192ZWhpY3VsZSIsInBvbGVfZW1wbG9pX2lkZW50aWZpYW50IiwibWVuX3N0YXR1dF9pZGVudGl0ZSIsIm1lbl9zdGF0dXRfZXRhYmxpc3NlbWVudCIsIm1lbl9zdGF0dXRfbW9kdWxlX2VsZW1lbnRhaXJlX2Zvcm1hdGlvbiIsIm1lbl9yZWdpbWVfcGVuc2lvbm5hdCIsIm1lc3JpX2FkbWlzc2lvbnMiLCJtZXNyaV9hZG1pc3Npb25faW5zY3JpdCIsIm1lc3JpX2FkbWlzc2lvbl9yZWdpbWVfZm9ybWF0aW9uIiwibWVzcmlfYWRtaXNzaW9uX2NvbW11bmVfZXR1ZGVzIiwibWVzcmlfYWRtaXNzaW9uX2V0YWJsaXNzZW1lbnRfZXR1ZGVzIiwiY25hdl9hbGxvY2F0aW9uX2VuZmFudF9oYW5kaWNhcGUiLCJjbmF2X2FsbG9jYXRpb25fcmVudHJlZV9zY29sYWlyZSIsImNub3VzX2luZSIsImRzbmpfc3RhdHV0X3NlcnZpY2VfbmF0aW9uYWwiLCJjbmF2X3BhcnRpY2lwYXRpb25fZmFtaWxpYWxlX2VhamVfYWxsb2NhdGFpcmVzIiwiY25hdl9wYXJ0aWNpcGF0aW9uX2ZhbWlsaWFsZV9lYWplX2VuZmFudHMiLCJjbmF2X3BhcnRpY2lwYXRpb25fZmFtaWxpYWxlX2VhamVfYWRyZXNzZSIsImNuYXZfcGFydGljaXBhdGlvbl9mYW1pbGlhbGVfZWFqZV9wYXJhbWV0cmVzX2NhbGN1bCIsInNkaF9zdGF0dXRfc3BvcnRpZl9pZGVudGl0ZSIsInNkaF9zdGF0dXRfc3BvcnRpZl9lc3Rfc3BvcnRpZl9kZV9oYXV0X25pdmVhdSIsInNkaF9zdGF0dXRfc3BvcnRpZl9hX2V0ZV9zcG9ydGlmX2RlX2hhdXRfbml2ZWF1Iiwic2RoX3N0YXR1dF9zcG9ydGlmX2luZm9ybWF0aW9uc19zdGF0dXQiLCJzZGhfc3RhdHV0X3Nwb3J0aWZfaW5mb3JtYXRpb25zX3N0YXR1dHNfcHJlY2VkZW50cyIsImdpcF9tZHNfc2VydmljZV9jaXZpcXVlX3N0YXR1dF9hY3R1ZWwiLCJnaXBfbWRzX3NlcnZpY2VfY2l2aXF1ZV9zdGF0dXRfcGFzc2UiLCJnaXBfbWRzX3NlcnZpY2VfY2l2aXF1ZV9vcmdhbmlzbWVfYWNjdWVpbCIsImdpcF9tZHNfc2VydmljZV9jaXZpcXVlX2RhdGVzIl0sInN1YiI6InN0YWdpbmciLCJpYXQiOjE3ODQ2MzQ0MjcsInZlcnNpb24iOiIxLjAiLCJleHAiOjIxMDAyNTM2Mjd9.v4umVXBY704AxC3laz_Cl5hBYXbKcvyuBw8nC2Db5Hc \ No newline at end of file +eyJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiI2NjRkYmY4NC01YzcwLTRjZGYtYmMyZC1jZGIxODQ4ODNhZTUiLCJqdGkiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJzY29wZXMiOlsiYXNzb2NpYXRpb25zIiwib3Blbl9kYXRhIiwicHJvYnRwIiwiY290aXNhdGlvbnNfcHJvYnRwIiwiYXR0ZXN0YXRpb25zX2Zpc2NhbGVzIiwiYXR0ZXN0YXRpb25fZmlzY2FsZV9kZ2ZpcCIsImF0dGVzdGF0aW9uc19zb2NpYWxlcyIsImF0dGVzdGF0aW9uX3NvY2lhbGVfdXJzc2FmIiwiYmlsYW5zX2VudHJlcHJpc2VfYmRmIiwiYmlsYW5zX2JkZiIsImZudHBfY2FydGVfcHJvIiwiY2VydGlmaWNhdF9jbmV0cCIsImNlcnRpZmljYXRpb25fY25ldHAiLCJjZXJ0aWZpY2F0X29wcWliaSIsInF1YWxpYmF0IiwiY2VydGlmaWNhdF9yZ2VfYWRlbWUiLCJkb2N1bWVudHNfYXNzb2NpYXRpb24iLCJlbnRyZXByaXNlcyIsInVuaXRlc19sZWdhbGVzX2V0YWJsaXNzZW1lbnRzX2luc2VlIiwiZXRhYmxpc3NlbWVudHMiLCJleGVyY2ljZXMiLCJjaGlmZnJlX2FmZmFpcmVzX2RnZmlwIiwiZXh0cmFpdHNfcmNzIiwibGlhc3NlX2Zpc2NhbGUiLCJsaWFzc2VzX2Zpc2NhbGVzX2RnZmlwIiwiY2VydGlmaWNhdGlvbnNfcXVhbGlvcGlfZnJhbmNlX2NvbXBldGVuY2VzIiwiYXR0ZXN0YXRpb25fY290aXNhdGlvbnNfY29uZ2VzX3BheWVzX2Nob21hZ2VfaW50ZW1wZXJpZXNfY2lidHBfY25ldHAiLCJlb3JpX2RvdWFuZXMiLCJkYXRhX3N1YnZlbnRpb25fc3VidmVudGlvbnMiLCJsaWVuc19jYXBpdGFsaXN0aXF1ZXNfZGdmaXAiLCJjb252ZW50aW9uc19jb2xsZWN0aXZlcyIsIm1hbmRhdGFpcmVzX3NvY2lhdXhfaW5mb2dyZWZmZSIsImFjdGVzX2lucGkiLCJhc3NvY2lhdGlvbnNfZG9ubmVlc19wcm90ZWdlZXMiLCJhc3NvY2lhdGlvbnNfZGplcHZhIiwiZm9uZGF0aW9ucyIsIm1zYV9jb3Rpc2F0aW9ucyIsImNvdGlzYXRpb25zX21zYSIsImNlcnRpZmljYXRpb25fb3BxaWJpIiwiZW50cmVwcmlzZXNfYXJ0aXNhbmFsZXMiLCJlZmZlY3RpZnNfdXJzc2FmIiwiYmVuZWZpY2lhaXJlc19lZmZlY3RpZnNfaW5waSIsImNuYWZfcXVvdGllbnRfZmFtaWxpYWwiLCJjbmFmX2FsbG9jYXRhaXJlcyIsImNuYWZfZW5mYW50cyIsImNuYWZfYWRyZXNzZSIsImNvbXBsZW1lbnRhaXJlX3NhbnRlX3NvbGlkYWlyZSIsImFsbG9jYXRpb25fYWR1bHRlX2hhbmRpY2FwZSIsInJldmVudV9zb2xpZGFyaXRlX2FjdGl2ZSIsInJldmVudV9zb2xpZGFyaXRlX2FjdGl2ZV9tYWpvcmF0aW9uIiwiYWxsb2NhdGlvbl9zb3V0aWVuX2ZhbWlsaWFsIiwicHJpbWVfYWN0aXZpdGUiLCJwcmltZV9hY3Rpdml0ZV9tYWpvcmF0aW9uIiwiY25vdXNfc3RhdHV0X2JvdXJzaWVyIiwiY25vdXNfZWNoZWxvbl9ib3Vyc2UiLCJjbm91c19lbWFpbCIsImNub3VzX3BlcmlvZGVfdmVyc2VtZW50IiwiY25vdXNfc3RhdHV0X2JvdXJzZSIsImNub3VzX3ZpbGxlX2V0dWRlcyIsImNub3VzX2lkZW50aXRlIiwibWVzcmlfaWRlbnRpZmlhbnQiLCJtZXNyaV9pZGVudGl0ZSIsIm1lc3JpX2luc2NyaXB0aW9uX2V0dWRpYW50IiwibWVzcmlfaW5zY3JpcHRpb25fYXV0cmUiLCJtZXNyaV9hZG1pc3Npb24iLCJtZXNyaV9ldGFibGlzc2VtZW50cyIsInBvbGVfZW1wbG9pX2lkZW50aXRlIiwicG9sZV9lbXBsb2lfYWRyZXNzZSIsInBvbGVfZW1wbG9pX2NvbnRhY3QiLCJwb2xlX2VtcGxvaV9pbnNjcmlwdGlvbiIsInBvbGVfZW1wbG9pX3BhaWVtZW50cyIsIm1lbl9zdGF0dXRfc2NvbGFyaXRlIiwibWVuX3N0YXR1dF9ib3Vyc2llciIsIm1lbl9lY2hlbG9uX2JvdXJzZSIsImFudHNfZXh0cmFpdF9pbW1hdHJpY3VsYXRpb25fdmVoaWN1bGVfaWRlbnRpdGVfcGFydGljdWxpZXIiLCJhbnRzX2V4dHJhaXRfaW1tYXRyaWN1bGF0aW9uX3ZlaGljdWxlX2FkcmVzc2VfcGFydGljdWxpZXIiLCJhbnRzX2V4dHJhaXRfaW1tYXRyaWN1bGF0aW9uX3ZlaGljdWxlX3N0YXR1dF9yYXR0YWNoZW1lbnQiLCJhbnRzX2V4dHJhaXRfaW1tYXRyaWN1bGF0aW9uX3ZlaGljdWxlX2Rvbm5lZXNfaW1tYXRyaWN1bGF0aW9uX3ZlaGljdWxlIiwiYW50c19leHRyYWl0X2ltbWF0cmljdWxhdGlvbl92ZWhpY3VsZV9jYXJhY3RlcmlzdGlxdWVzX3RlY2huaXF1ZXNfdmVoaWN1bGUiLCJwb2xlX2VtcGxvaV9pZGVudGlmaWFudCIsIm1lbl9zdGF0dXRfaWRlbnRpdGUiLCJtZW5fc3RhdHV0X2V0YWJsaXNzZW1lbnQiLCJtZW5fc3RhdHV0X21vZHVsZV9lbGVtZW50YWlyZV9mb3JtYXRpb24iLCJtZW5fcmVnaW1lX3BlbnNpb25uYXQiLCJtZXNyaV9hZG1pc3Npb25zIiwibWVzcmlfYWRtaXNzaW9uX2luc2NyaXQiLCJtZXNyaV9hZG1pc3Npb25fcmVnaW1lX2Zvcm1hdGlvbiIsIm1lc3JpX2FkbWlzc2lvbl9jb21tdW5lX2V0dWRlcyIsIm1lc3JpX2FkbWlzc2lvbl9ldGFibGlzc2VtZW50X2V0dWRlcyIsImNuYXZfYWxsb2NhdGlvbl9lbmZhbnRfaGFuZGljYXBlIiwiY25hdl9hbGxvY2F0aW9uX3JlbnRyZWVfc2NvbGFpcmUiLCJjbm91c19pbmUiLCJkc25qX3N0YXR1dF9zZXJ2aWNlX25hdGlvbmFsIiwiY25hdl9wYXJ0aWNpcGF0aW9uX2ZhbWlsaWFsZV9lYWplX2FsbG9jYXRhaXJlcyIsImNuYXZfcGFydGljaXBhdGlvbl9mYW1pbGlhbGVfZWFqZV9lbmZhbnRzIiwiY25hdl9wYXJ0aWNpcGF0aW9uX2ZhbWlsaWFsZV9lYWplX2FkcmVzc2UiLCJjbmF2X3BhcnRpY2lwYXRpb25fZmFtaWxpYWxlX2VhamVfcGFyYW1ldHJlc19jYWxjdWwiLCJzZGhfc3RhdHV0X3Nwb3J0aWZfaWRlbnRpdGUiLCJzZGhfc3RhdHV0X3Nwb3J0aWZfZXN0X3Nwb3J0aWZfZGVfaGF1dF9uaXZlYXUiLCJzZGhfc3RhdHV0X3Nwb3J0aWZfYV9ldGVfc3BvcnRpZl9kZV9oYXV0X25pdmVhdSIsInNkaF9zdGF0dXRfc3BvcnRpZl9pbmZvcm1hdGlvbnNfc3RhdHV0Iiwic2RoX3N0YXR1dF9zcG9ydGlmX2luZm9ybWF0aW9uc19zdGF0dXRzX3ByZWNlZGVudHMiLCJnaXBfbWRzX3NlcnZpY2VfY2l2aXF1ZV9zdGF0dXRfYWN0dWVsIiwiZ2lwX21kc19zZXJ2aWNlX2NpdmlxdWVfc3RhdHV0X3Bhc3NlIiwiZ2lwX21kc19zZXJ2aWNlX2NpdmlxdWVfb3JnYW5pc21lX2FjY3VlaWwiLCJnaXBfbWRzX3NlcnZpY2VfY2l2aXF1ZV9kYXRlcyJdLCJzdWIiOiJzdGFnaW5nIiwiaWF0IjoxNzg2Nzk5MDc1LCJ2ZXJzaW9uIjoiMS4wIiwiZXhwIjoyMTAyNDE4Mjc1fQ.t5brTx92HQEWLx25o-JrqD9QoOZ2DxcpaSqH5ouuS8s \ No newline at end of file From 013d03ba30bdf083f9641bd593f0af0acd9fdda1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Delmaire=20Lo=C3=AFc?= Date: Sat, 15 Aug 2026 15:07:28 +0200 Subject: [PATCH 4/7] Add fondations catalogue entry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The fiche carries an alert stating the API is only callable on staging: the "Prochainement" swagger tag alone flags the endpoint as upcoming but does not tell integrators they can already try it on the test environment, which is the whole point of this release. The data description announces the roadmap (financial statements amounts, foreign financing details, liquidator…) so early adopters know the contract will grow: these fields are declarative data the SIAF referential does not collect yet. The fiche is attributed to the existing 'mi' provider, like the RNA ones: SIAF is a Ministère de l'Intérieur system, not a separate organisation. A dedicated provider entry would need its own logo asset (providers/api_entreprise/.png) — every page rendering the partners section fails without it — and would only make sense the day SIAF staff get their own provider space. The release is also announced in config/changelogs.yml (required for any catalogue change): the entry links the fiche through endpoint_path and stresses that the API is only callable on staging for now, so readers don't try it in production. The fiche declares the 'fondations' entity rather than reusing 'associations': the two registries are distinct (RNF vs RNA) and the catalogue filters on that facet, so classifying foundations as associations would surface this endpoint under the wrong search. The entity is new, hence its label and icon are added to the site locales — an entity without a translation renders blank on the catalogue. --- .../ministere_interieur_siaf_fondations.yml | 101 ++++++++++++++++++ site/config/changelogs.yml | 8 ++ .../locales/api_entreprise/endpoint.fr.yml | 3 + site/config/locales/api_entreprise/fr.yml | 2 + 4 files changed, 114 insertions(+) create mode 100644 commons/endpoints/api_entreprise/ministere_interieur_siaf_fondations.yml diff --git a/commons/endpoints/api_entreprise/ministere_interieur_siaf_fondations.yml b/commons/endpoints/api_entreprise/ministere_interieur_siaf_fondations.yml new file mode 100644 index 0000000000..8bcfaa6b31 --- /dev/null +++ b/commons/endpoints/api_entreprise/ministere_interieur_siaf_fondations.yml @@ -0,0 +1,101 @@ +--- +fiche: + - uid: 'siaf/fondations' + path: '/v3/ministere_interieur/siaf/fondations/{siren_or_siret_or_rnf}' + controller: 'api_entreprise/v3_and_more/mi/siaf/fondations' + position: 155 + alert: + title: "API disponible uniquement en environnement de test" + description: |+ + Cette API est en cours de raccordement au SIAF (Système d'Information des Associations et Fondations) du Ministère de l'Intérieur. + Elle est **appelable sur l'environnement de test** (`https://staging.entreprise.api.gouv.fr`) avec des données fictives, afin de préparer les intégrations. + Elle n'est pas encore disponible en production. + perimeter: + entity_type_description: |+ + Cette API concerne ✅ **les fondations inscrites au Répertoire National des Fondations (RNF)**, tenu par le Ministère de l'Intérieur : + + - ✅ **les fondations reconnues d'utilité publique (FRUP)** ; + - ✅ **les fondations d'entreprise (FE)** ; + - ✅ **les fonds de dotation (FDD)**. + + **Ne sont pas couvertes par l'API :** + - ❌ les associations, y compris reconnues d'utilité publique — consulter l'[API Données association](/catalogue/djepva/associations) ; + - ❌ les fondations abritées, qui n'ont pas de personnalité morale propre. + geographical_scope_description: |+ + - ✅ France métropolitaine + - ✅ DROM-COM + updating_rules_description: |+ + Le référentiel est alimenté par les démarches effectuées par les fondations + (création, modification statutaire, dépôt annuel des comptes…) via Démarches + Numériques. Les données sont donc mises à jour au fil de l'instruction des + dossiers par les services de l'État. + entities: + - fondations + call_id: "SIREN / SIRET / RNF" + provider_uids: + - 'mi' + keywords: + - 'fondation' + - 'fondations' + - 'RNF' + - 'FRUP' + - 'fonds de dotation' + - 'fondation entreprise' + - 'utilité publique' + - 'mécénat' + - 'philanthropie' + - 'dirigeants' + - 'générosité publique' + - 'ministère intérieur' + - 'SIAF' + data: + description: |+ + Cette API délivre les données de référence d'une fondation inscrite au **Répertoire National des Fondations (RNF)** : + + - **l'identité de la fondation** : identifiant RNF, SIREN/SIRET, type juridique (FRUP, FE, FDD), dénomination, état, dates de création et de terme, adresse du siège, contacts ; + - **son activité** : objet social, domaines d'intérêt général, activité internationale prévue par les statuts ; + - **ses dirigeants et représentants** : identité, fonction, qualité, dates de fonctions, y compris les personnes morales représentées ; + - **ses liens avec d'autres organismes** : transformation, fusion, scission ; + - **sa situation financière déclarative** : années de subventions publiques, d'appel à la générosité publique et de financements étrangers ; + - **sa conformité comptable** : état de transmission des comptes et exercices transmis ; + - **les métadonnées de ses pièces justificatives** : statuts, comptes, rapports d'activité, procès verbaux. + + {:.fr-highlight} + > Le périmètre de données sera progressivement enrichi au fur et à mesure de + > l'alimentation du référentiel par les démarches des fondations : données + > comptables chiffrées (bilan, produits, charges, résultat), montants et pays + > des financements étrangers, détail des campagnes d'appel à la générosité + > publique, liquidateur, caractère consomptible de la dotation. + opening: protected + parameters: + - Numéro de SIREN ou de SIRET de la fondation, ou son identifiant RNF + format: + - Donnée structurée JSON + faq: + - q: "Qu'est-ce que l'identifiant RNF ?" + a: |+ + L'identifiant RNF est l'identifiant officiel d'une fondation au Répertoire + National des Fondations, défini par décret. Il est au format + `{département}-{type}-{numéro}-{suffixe}`, par exemple `075-FRUP-00194-01`. + - q: "Puis-je toujours appeler l'API avec un SIREN ou un SIRET ?" + a: |+ + Environ 22 % des fondations du référentiel n'ont pas de SIRET (elles n'ont + pas d'obligation d'immatriculation au répertoire Sirene tant qu'elles + n'emploient pas de salarié notamment). Ces fondations ne sont accessibles + que par leur identifiant RNF. L'identifiant RNF est la clé d'appel la plus + fiable. + - q: "Quelle est la différence entre une fondation et une association ?" + a: |+ + Une **association** est un groupement de *personnes* (des membres) ; une + **fondation** est une *affectation de patrimoine* : de l'argent ou des biens + dédiés irrévocablement à une cause d'intérêt général, à but non lucratif. + Une fondation n'a pas de membres. Pour les associations, consulter + l'[API Données association](/catalogue/djepva/associations). + - q: "Pourquoi certaines données financières sont-elles vides ?" + a: |+ + Les données de situation financière (années de subventions publiques, + d'appel à la générosité publique, de financements étrangers) sont + **déclaratives** : elles ne sont renseignées que lorsque la fondation a + effectué la démarche correspondante auprès du Ministère de l'Intérieur. + Une liste vide signifie qu'aucune déclaration n'a été enregistrée, pas + nécessairement que la fondation n'est pas concernée. diff --git a/site/config/changelogs.yml b/site/config/changelogs.yml index a3e97704a5..aef8d9a468 100644 --- a/site/config/changelogs.yml +++ b/site/config/changelogs.yml @@ -1,3 +1,11 @@ +- date: 2026-08-17 + scope: api_entreprise + title: "Données fondations (SIAF) : nouvelle API disponible en environnement de test" + description: | + Une nouvelle API [Données fondations](<%= endpoint_path(uid: 'siaf/fondations') %>) expose les données du **Répertoire National des Fondations (RNF)**, opéré par le Ministère de l'Intérieur via le SIAF : identité, activité, dirigeants, situation financière déclarative, conformité comptable et pièces justificatives des fondations (FRUP, fondations d'entreprise, fonds de dotation). + + Elle est pour l'instant **appelable uniquement sur l'environnement de test** (`https://staging.entreprise.api.gouv.fr`), avec des données fictives, afin de permettre aux futurs consommateurs de préparer leurs intégrations avant la mise en production. + - date: 2026-07-22 scope: both title: "Bureau ouvert : passage au jeudi" diff --git a/site/config/locales/api_entreprise/endpoint.fr.yml b/site/config/locales/api_entreprise/endpoint.fr.yml index 1e1b3115bb..c4f3a64611 100644 --- a/site/config/locales/api_entreprise/endpoint.fr.yml +++ b/site/config/locales/api_entreprise/endpoint.fr.yml @@ -19,6 +19,9 @@ fr: associations: name: Associations icon: ri-store-2-line + fondations: + name: Fondations + icon: ri-building-line etablissements_entreprises: name: Établissements des entreprises icon: ri-building-line diff --git a/site/config/locales/api_entreprise/fr.yml b/site/config/locales/api_entreprise/fr.yml index 6af578c78d..61e92b3124 100644 --- a/site/config/locales/api_entreprise/fr.yml +++ b/site/config/locales/api_entreprise/fr.yml @@ -104,6 +104,8 @@ fr: label: Infogreffe || API Mandataires sociaux associations_donnees_protegees: label: Djepva || API Données association + fondations: + label: SIAF || API Données fondations associations_djepva: label: Djepva || API Données ouvertes association tags: From b6c06bd3266ea1eacf31ad726060bcfbac6150c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Delmaire=20Lo=C3=AFc?= Date: Tue, 18 Aug 2026 16:40:14 +0200 Subject: [PATCH 5/7] Regenerate OpenAPI spec with the fondations endpoint Output of siade/bin/generate_swagger.sh. The generated spec is what the site and the SDK scaffolding read, so leaving it stale would keep serving a contract that does not exist to every consumer. The fondations curl sample targets the staging host, as for any prochainement endpoint. --- commons/swagger/openapi-entreprise.yaml | 919 ++++++++++++++++++++++++ 1 file changed, 919 insertions(+) diff --git a/commons/swagger/openapi-entreprise.yaml b/commons/swagger/openapi-entreprise.yaml index fb2f2c9df1..d0174d05f0 100644 --- a/commons/swagger/openapi-entreprise.yaml +++ b/commons/swagger/openapi-entreprise.yaml @@ -39070,6 +39070,925 @@ paths: curl -X GET \ -H "Authorization: Bearer $token" \ --url "https://entreprise.api.gouv.fr/v3/ministere_interieur/rna/associations/13002526500013?context=Test+de+l%27API&object=Test+de+l%27API&recipient=10000001700010" + "/v3/ministere_interieur/siaf/fondations/{siren_or_siret_or_rnf}": + get: + summary: Données fondations + tags: + - Informations générales + - Prochainement + parameters: + - name: siren_or_siret_or_rnf + in: path + description: 'SIREN ou SIRET de la fondation, ou son identifiant au Répertoire + National des Fondations (RNF). Environ 22 % des fondations n''ont pas de + SIRET dans le référentiel : elles ne sont accessibles que par leur identifiant + RNF.' + examples: + maison_de_la_chimie_rnf: + value: 075-FRUP-00194-01 + summary: Identifiant RNF de la fondation Maison de la Chimie + maison_de_la_chimie_siren: + value: '784308934' + summary: SIREN de la fondation Maison de la Chimie + maison_de_la_chimie_siret: + value: '78430893400016' + summary: SIRET de la fondation Maison de la Chimie + required: true + schema: + type: string + - name: recipient + in: query + description: |- + "**Bénéficiaire de l’appel** + + SIRET de l’administration destinatrice des données." + example: '13002526500013' + required: true + schema: + type: string + - name: delegation_id + in: query + description: |- + "**Identifiant de la délégation éditeur** + + UUID d’une délégation précise, réservé aux jetons éditeur. Optionnel : requis uniquement lorsque plusieurs délégations actives existent pour le même `recipient`, afin de lever l’ambiguïté (cf. erreur 00212)." + example: 6f3c8d9a-1b2c-4d5e-8f90-abcdef012345 + required: false + schema: + type: string + - name: context + in: query + description: |- + "**Cadre de la requête** + + Par exemple : aides publiques, marchés publics ou gestion d’un référentiel tiers utilisé pour tel type d’application." + example: Context de test + required: true + schema: + type: string + - name: object + in: query + description: |- + "**La raison de l’appel ou l’identifiant de la procédure.** + + L’identifiant peut être interne à votre organisation ou bien un numéro de marché publique, un nom de procédure ; l’essentiel est que celui-ci vous permette de tracer et de retrouver les informations relatives à l’appel. En effet, vous devez pouvoir justifier de la raison d’un appel auprès du fournisseur de données. Description courte ( < 50 caractères )." + example: marché numéro 127 + required: true + schema: + type: string + security: + - jwt_bearer_token: [] + description: 'Données de référence d''une fondation (FRUP, fondation d''entreprise + ou fonds de dotation) issues du Répertoire National des Fondations (RNF), + opéré par le Ministère de l''Intérieur via le SIAF : identité, activité, dirigeants, + situation financière déclarative, conformité comptable et pièces justificatives.' + responses: + '401': + description: Non autorisé + content: + application/json: + examples: + invalid_token_error: + value: + errors: + - code: '00101' + title: Interdit + detail: Votre token n'est pas valide ou n'est pas renseigné + source: + parameter: token + meta: {} + summary: Interdit + description: Votre token n'est pas valide ou n'est pas renseigné + expired_token_error: + value: + errors: + - code: '00103' + title: Jeton expiré + detail: Votre token est expiré. Vous devez refaire une demande + source: + parameter: token + meta: {} + summary: Jeton expiré + description: Votre token est expiré. Vous devez refaire une demande + blacklisted_token_error: + value: + errors: + - code: '00105' + title: Jeton sur liste noire + detail: 'Votre jeton est sur liste noire, celui-ci a certainement + été divulgué sur un canal non-sécurisé. Vous pouvez trouver + un jeton valide sur votre espace personnel: https://entreprise.api.gouv.fr/compte' + source: + parameter: token + meta: {} + summary: Jeton sur liste noire + description: 'Votre jeton est sur liste noire, celui-ci a certainement + été divulgué sur un canal non-sécurisé. Vous pouvez trouver un + jeton valide sur votre espace personnel: https://entreprise.api.gouv.fr/compte' + schema: + "$ref": "#/components/schemas/Error" + '403': + description: Accès interdit + content: + application/json: + examples: + insufficient_privileges_error: + value: + errors: + - code: '00100' + title: Privilèges insuffisants + detail: Votre token est valide mais vos privilèges sont insuffisants. + Listez vos privilèges sur /v2/privileges + source: + parameter: token + meta: {} + summary: Privilèges insuffisants + description: Votre token est valide mais vos privilèges sont insuffisants. + Listez vos privilèges sur /v2/privileges + schema: + "$ref": "#/components/schemas/Error" + '429': + description: Trop de requêtes + content: + application/json: + examples: + too_many_requests_error: + value: + errors: + - code: '00429' + title: Trop de requêtes + detail: Vous avez effectué trop de requêtes + source: + meta: {} + summary: Trop de requêtes + description: Vous avez effectué trop de requêtes + schema: + "$ref": "#/components/schemas/Error" + '200': + description: Fondation trouvée + headers: + RateLimit-Limit: + schema: + type: integer + description: La limite concernant l’endpoint appelé, soit le nombre + de requête/minute. + example: 50 + RateLimit-Remaining: + schema: + type: integer + description: Le nombre d’appels restants durant la période courante + d’une minute. + example: 47 + RateLimit-Reset: + schema: + type: integer + description: La fin de la période courante (en format timestamp) + example: 1637223155 + x-operationId: api_entreprise_v3_mi_siaf_fondations + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + identifiants: + title: Identifiants de la fondation + type: object + properties: + rnf: + title: Identifiant au Répertoire National des Fondations + description: Identifiant officiel de la fondation, au + format {département}-{type}-{numéro}-{suffixe}. + type: string + example: 075-FRUP-00194-01 + siren: + title: SIREN de la fondation + description: 'Déduit du SIRET présent dans le référentiel. + Environ 22 % des fondations n''ont pas de SIRET : la + valeur est alors null.' + type: string + nullable: true + example: '784308934' + siret: + title: SIRET du siège de la fondation + type: string + nullable: true + example: '78430893400016' + required: + - rnf + - siren + - siret + identite: + title: Identité de la fondation + type: object + properties: + service_instructeur: + title: Service instructeur + description: Département du service instructeur de la + fondation. + type: string + example: '75' + type_fondation: + title: Type de fondation + description: 'FRUP : fondation reconnue d''utilité publique + ; FE : fondation d''entreprise ; FDD : fonds de dotation.' + type: string + enum: + - FRUP + - FE + - FDD + example: FRUP + denomination: + title: Dénomination de la fondation + type: string + example: MAISON DE LA CHIMIE + etat: + title: État de la fondation + description: 'État de la fondation au Répertoire National + des Fondations : en activité, suspendue, transformée, + fusionnée, scindée ou dissoute.' + type: string + example: Active + date_effet_etat: + title: Date d'effet de l'état + type: string + nullable: true + example: '1928-08-12' + date_creation: + title: Date de création de la fondation + type: string + nullable: true + example: '1928-08-12' + date_terme: + title: Date du terme + description: Échéance de la fondation, notamment pour + les fondations d'entreprise créées pour une durée déterminée. + Null si sans objet. + type: string + nullable: true + example: '2030-12-31' + date_cloture_exercice: + title: Date de clôture de l'exercice comptable (mois/jour, + format MM-DD) + type: string + nullable: true + example: 12-31 + adresse_siege: + title: Adresse du siège de la fondation + type: object + properties: + adresse_complete: + title: Adresse complète sur une ligne + type: string + nullable: true + example: 28 Rue Saint-Dominique 75007 Paris + numero_voie: + title: Numéro de voie + type: string + nullable: true + example: '28' + nom_voie: + title: Libellé de la voie + type: string + nullable: true + example: Rue Saint-Dominique + code_postal: + title: Code postal + type: string + nullable: true + example: '75007' + commune: + title: Commune + type: string + nullable: true + example: Paris 7e Arrondissement + code_insee_commune: + title: Code INSEE de la commune + type: string + nullable: true + example: '75107' + departement: + title: Code du département + type: string + nullable: true + example: '75' + pays: + title: Pays + type: string + nullable: true + example: France + required: + - adresse_complete + - numero_voie + - nom_voie + - code_postal + - commune + - code_insee_commune + - departement + - pays + courriel: + title: Courriel de la fondation + type: string + nullable: true + example: contact@fondation-exemple.fr + telephone: + title: Numéro de téléphone de la fondation + type: string + nullable: true + example: "+33123456789" + required: + - service_instructeur + - type_fondation + - denomination + - etat + - date_effet_etat + - date_creation + - date_terme + - date_cloture_exercice + - adresse_siege + - courriel + - telephone + activite: + title: Activité de la fondation + type: object + properties: + objet_social: + title: Objet social + description: Objet social extrait des statuts de la fondation. + type: string + example: Contribuer à l'avancement de la science chimique + et au développement de ses applications. + domaine_interet_general: + title: Domaines d'intérêt général + description: Liste des domaines d'intérêt général, séparés + par des virgules. + type: string + nullable: true + example: Social, Scientifique, Humanitaire + activite_internationale_prevue_par_statuts: + title: Activité internationale prévue par les statuts + type: boolean + nullable: true + example: false + required: + - objet_social + - domaine_interet_general + - activite_internationale_prevue_par_statuts + dirigeants: + title: Dirigeants et représentants de la fondation + description: Personnes physiques siégeant dans les organes + de gouvernance ou exerçant des fonctions de direction. Un + dirigeant peut représenter une personne morale, détaillée + dans personne_morale. + type: array + items: + type: object + properties: + nom: + title: Nom du dirigeant + type: string + nullable: true + example: DUPONT + prenom: + title: Prénom du dirigeant + type: string + nullable: true + example: Marie + date_naissance: + title: Date de naissance + type: string + nullable: true + example: '1975-04-12' + nationalite: + title: Nationalité + type: string + nullable: true + example: France + adresse_domiciliation: + title: Adresse de domiciliation + type: object + properties: + adresse_complete: + title: Adresse complète sur une ligne + type: string + nullable: true + example: 20 Rue Exemple 75001 Paris + code_postal: + title: Code postal + type: string + nullable: true + example: '75001' + commune: + title: Commune + type: string + nullable: true + example: Paris + pays: + title: Pays + type: string + nullable: true + example: France + pays_residence: + title: Pays de résidence + type: string + nullable: true + example: France + profession: + title: Profession + type: string + nullable: true + example: Juriste + date_entree_fonction: + title: Date d'entrée dans les fonctions + type: string + nullable: true + example: '2018-06-23' + date_sortie_fonction: + title: Date de sortie des fonctions + type: string + nullable: true + example: + fonction: + title: Fonction exercée + type: string + nullable: true + example: Président + qualite: + title: Qualité au titre de laquelle la personne siège + type: string + nullable: true + example: Membre du conseil d'administration + fondateur: + title: Statut de fondateur + type: boolean + nullable: true + example: false + personne_morale: + title: Personne morale représentée + description: Renseigné lorsque le dirigeant siège en + tant que représentant d'une personne morale. Null + pour une personne physique siégeant en son nom propre. + type: object + nullable: true + properties: + type: + title: Type de personne morale + type: string + nullable: true + example: Entreprise + identifiant: + title: Identifiant de la personne morale + type: string + nullable: true + example: '98765432100012' + denomination: + title: Dénomination de la personne morale + type: string + nullable: true + example: ENTREPRISE EXEMPLE + pays: + title: Pays de la personne morale + type: string + nullable: true + example: France + liens_entre_organismes: + title: Personnes morales liées à la fondation + type: object + properties: + organisme_issu_transformation: + title: Organisme issu de la transformation + type: object + nullable: true + properties: + type: + title: Type de filiation + type: string + example: Transformation + identifiant: + title: Identifiant de l'organisme lié + type: string + nullable: true + example: 075-FDD-00001-01 + required: + - type + - identifiant + organisme_issu_fusion: + title: Organisme issu de la fusion + type: object + nullable: true + properties: + type: + title: Type de filiation + type: string + example: Fusion + identifiant: + title: Identifiant de l'organisme lié + type: string + nullable: true + example: 075-FDD-00001-01 + required: + - type + - identifiant + organismes_issus_scission: + title: Organismes issus de la scission + type: array + items: + type: object + properties: + type: + title: Type de filiation + type: string + example: Scission + identifiant: + title: Identifiant de l'organisme lié + type: string + nullable: true + example: 075-FDD-00001-01 + required: + - organisme_issu_transformation + - organisme_issu_fusion + - organismes_issus_scission + situation_financiere: + title: Situation financière déclarative + description: 'Données déclarées par la fondation via des démarches + dédiées : elles ne sont renseignées que lorsque la fondation + a effectué la démarche correspondante.' + type: object + properties: + annees_subventions_publiques: + title: Années pendant lesquelles la fondation a reçu des + subventions publiques + type: array + items: + type: integer + example: + - 2024 + - 2025 + annees_appel_generosite_publique: + title: Années pendant lesquelles la fondation a fait appel + à la générosité publique + type: array + items: + type: integer + example: + - 2025 + annees_financements_etrangers: + title: Années pendant lesquelles la fondation a reçu un + financement étranger + type: array + items: + type: integer + example: [] + required: + - annees_subventions_publiques + - annees_appel_generosite_publique + - annees_financements_etrangers + dossiers: + title: Métadonnées liées aux dossiers déposés par la fondation + type: object + properties: + etat_transmission_comptes: + title: État de transmission des comptes + description: En défaut lorsque la fondation est en retard + dans le dépôt de ses comptes annuels. + type: string + enum: + - En règle + - En défaut + example: En règle + exercices_comptables_transmis: + title: Exercices comptables transmis + type: array + items: + type: integer + example: + - 2023 + - 2024 + - 2025 + required: + - etat_transmission_comptes + - exercices_comptables_transmis + documents: + title: Pièces justificatives déposées par la fondation + description: Métadonnées des documents déposés (statuts, comptes, + rapports d'activité, procès verbaux…). Le type et le nombre + de documents varient selon la fondation. + type: array + items: + type: object + properties: + id: + title: Identifiant du document + type: string + example: 7e7867b6-8fe0-11f1-a424-f28dce965a41 + type: + title: Type de document + description: Nature de la pièce justificative déposée + par la fondation. Toutes les fondations ne déposent + pas tous les types de documents. + type: string + enum: + - Statuts + - Comptes + - Rapport d'activité + - Procès verbal + - Règlement intérieur + - Acte notarié lié à une libéralité + - Acte d'autorisation ou acte de non opposition + - Courrier adressé par l'administration + - Mise en demeure + - Suspension + - Décision de retrait / dissolution + - Jugement de dissolution judiciaire + example: Statuts + nom_original: + title: Nom original du fichier + type: string + nullable: true + example: Statuts 1957.pdf + type_mime: + title: Type MIME du fichier + type: string + nullable: true + example: application/pdf + date_depot: + title: Date de dépôt du document + type: string + nullable: true + example: '2026-06-24' + required: + - identifiants + - identite + - activite + - dirigeants + - liens_entre_organismes + - situation_financiere + - dossiers + - documents + additionalProperties: false + links: + type: object + meta: + type: object + required: + - data + - links + - meta + '422': + description: Paramètre(s) invalide(s) + content: + application/json: + examples: + unprocessable_content_error_siren_or_siret_or_rnf_error: + value: + errors: + - code: '00331' + title: Entité non traitable + detail: Le numéro de siren, le numéro de siret ou l'identifiant + RNF indiqué n'est pas correctement formatté + source: + parameter: id + meta: {} + summary: Entité non traitable + description: Le numéro de siren, le numéro de siret ou l'identifiant + RNF indiqué n'est pas correctement formatté + missing_mandatory_params_context_error: + value: + errors: + - code: '00201' + title: Entité non traitable + detail: Le paramètre context est obligatoire + source: + parameter: context + meta: {} + summary: Entité non traitable + description: Le paramètre context est obligatoire + missing_mandatory_params_object_error: + value: + errors: + - code: '00202' + title: Entité non traitable + detail: Le paramètre object est obligatoire + source: + parameter: object + meta: {} + summary: Entité non traitable + description: Le paramètre object est obligatoire + missing_mandatory_params_recipient_error: + value: + errors: + - code: '00203' + title: Entité non traitable + detail: Le paramètre recipient est obligatoire + source: + parameter: recipient + meta: {} + summary: Entité non traitable + description: Le paramètre recipient est obligatoire + ambiguous_delegation_error: + value: + errors: + - code: '00212' + title: Entité non traitable + detail: Plusieurs délégations actives existent pour ce SIRET. + Le paramètre delegation_id est requis pour identifier la délégation. + source: + parameter: delegation_id + meta: {} + summary: Entité non traitable + description: Plusieurs délégations actives existent pour ce SIRET. + Le paramètre delegation_id est requis pour identifier la délégation. + schema: + "$ref": "#/components/schemas/Error" + '404': + description: Fondation non trouvée + content: + application/json: + examples: + entite_non_trouvee_44003: + value: + errors: + - code: '44003' + title: Entité non trouvée + detail: Le ou les paramètre(s) d'entrée n'existent pas, ne sont + pas connus, ou ne comportent aucune information pour cet appel. + Veuillez vérifier que votre recherche est couverte par le + périmètre de l'API. + source: + meta: + provider: SIAF + summary: Entité non trouvée + description: Le ou les paramètre(s) d'entrée n'existent pas, ne + sont pas connus, ou ne comportent aucune information pour cet + appel. Veuillez vérifier que votre recherche est couverte par + le périmètre de l'API. + schema: + "$ref": "#/components/schemas/Error" + '502': + description: Erreur du fournisseur + content: + application/json: + examples: + erreur_inconnue_du_fournisseur_de_donnees_44999: + value: + errors: + - code: '44999' + title: Erreur inconnue du fournisseur de données + detail: La réponse retournée par le fournisseur de données est + invalide et inconnue de notre service. L'équipe technique + a été notifiée de cette erreur pour investigation. + source: + meta: + provider: SIAF + summary: Erreur inconnue du fournisseur de données + description: La réponse retournée par le fournisseur de données + est invalide et inconnue de notre service. L'équipe technique + a été notifiée de cette erreur pour investigation. + erreur_interne_du_fournisseur_de_donnees_44000: + value: + errors: + - code: '44000' + title: Erreur interne du fournisseur de données + detail: La réponse retournée par le fournisseur de données est + invalide et a été identifié comme étant une erreur interne. + Si le problème persiste, consultez la page de status ou contactez + nous sur le support. + source: + meta: + provider: SIAF + summary: Erreur interne du fournisseur de données + description: La réponse retournée par le fournisseur de données + est invalide et a été identifié comme étant une erreur interne. + Si le problème persiste, consultez la page de status ou contactez + nous sur le support. + erreur_aupres_du_fournisseur_de_donnees_trop_de_requetes_44008: + value: + errors: + - code: '44008' + title: 'Erreur auprès du fournisseur de données : trop de requêtes' + detail: 'Erreur de fournisseur de donnée : Trop de requêtes + effectuées, veuillez réessayer plus tard.' + source: + meta: + provider: SIAF + summary: 'Erreur auprès du fournisseur de données : trop de requêtes' + description: 'Erreur de fournisseur de donnée : Trop de requêtes + effectuées, veuillez réessayer plus tard.' + erreur_temporaire_du_fournisseur_de_donnees_44011: + value: + errors: + - code: '44011' + title: Erreur temporaire du fournisseur de données + detail: Merci de réessayer dans quelques instants + source: + meta: + provider: SIAF + summary: Erreur temporaire du fournisseur de données + description: Merci de réessayer dans quelques instants + erreur_de_certificat_ssl_du_fournisseur_de_donnees_44009: + value: + errors: + - code: '44009' + title: Erreur de certificat SSL du fournisseur de données + detail: Le certificat SSL du fournisseur de données est invalide + ou expiré. + source: + meta: + provider: SIAF + summary: Erreur de certificat SSL du fournisseur de données + description: Le certificat SSL du fournisseur de données est invalide + ou expiré. + schema: + "$ref": "#/components/schemas/Error" + '504': + description: Erreur d'intermédiaire + content: + application/json: + examples: + timeout_error: + value: + errors: + - code: '44002' + title: Intermédiaire hors-délai + detail: Temps d’attente d’une réponse du fournisseur de données + écoulé. + source: + meta: + provider: SIAF + summary: Intermédiaire hors-délai + description: Temps d’attente d’une réponse du fournisseur de données + écoulé. + provider_unavailable_error: + value: + errors: + - code: '44001' + title: Service non disponible + detail: Service du fournisseur de données temporairement indisponible + ou en maintenance. + source: + meta: + provider: SIAF + summary: Service non disponible + description: Service du fournisseur de données temporairement indisponible + ou en maintenance. + network_error: + value: + errors: + - code: '00501' + title: Erreur réseau + detail: Problème de connexion au serveur distant. L'erreur peut + venir soit du fournisseur, soit de API Entreprise. Il s'agit + souvent d'une erreur temporaire. + source: + meta: + retry_in: 10 + summary: Erreur réseau + description: Problème de connexion au serveur distant. L'erreur + peut venir soit du fournisseur, soit de API Entreprise. Il s'agit + souvent d'une erreur temporaire. + dns_resolution_error: + value: + errors: + - code: '44004' + title: Erreur de résolution DNS + detail: Problème de résolution DNS de l'adresse du serveur + source: + meta: + provider: SIAF + summary: Erreur de résolution DNS + description: Problème de résolution DNS de l'adresse du serveur + schema: + "$ref": "#/components/schemas/Error" + '409': + description: Conflit + content: + application/json: + examples: + conflict_error: + value: + errors: + - code: '00015' + title: Conflit + detail: Une requête associé à votre jeton est déjà en cours + de traitement pour ces paramètres. Veuillez attendre la fin + du traitement avant d'effectuer une nouvelle requête. + source: + meta: {} + summary: Conflit + description: Une requête associé à votre jeton est déjà en cours + de traitement pour ces paramètres. Veuillez attendre la fin du + traitement avant d'effectuer une nouvelle requête. + schema: + "$ref": "#/components/schemas/Error" + x-codeSamples: + - lang: cURL + label: Ligne de commande + source: |- + curl -X GET \ + -H "Authorization: Bearer $token" \ + --url "https://staging.entreprise.api.gouv.fr/v3/ministere_interieur/siaf/fondations/13002526500013?context=Test+de+l%27API&object=Test+de+l%27API&recipient=10000001700010" "/v3/msa/etablissements/{siret}/conformite_cotisations": get: summary: Conformité cotisations de sécurité sociale agricole From d2ecd329eb1455413b8120816f0c0642372f1ac9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Delmaire=20Lo=C3=AFc?= Date: Sat, 15 Aug 2026 15:07:40 +0200 Subject: [PATCH 6/7] Release SDKs 0.3.0 with fondations resource Ruby and Node api_entreprise clients gain ministere_interieur.fondations(siren_or_siret_or_rnf), scaffolded from the regenerated OpenAPI spec. Minor bump per SemVer: new endpoint, no breaking change. The endpoint only answers on staging for now (prochainement mode), which the changelogs state so SDK users don't report production 501s as bugs. --- clients/node/api-entreprise/CHANGELOG.md | 7 +++++++ clients/node/api-entreprise/package-lock.json | 4 ++-- clients/node/api-entreprise/package.json | 2 +- .../src/resources/ministere_interieur.ts | 14 ++++++++++++++ clients/ruby/api_entreprise/CHANGELOG.md | 7 +++++++ clients/ruby/api_entreprise/Gemfile.lock | 4 ++-- .../resources/ministere_interieur.rb | 14 ++++++++++++++ .../api_entreprise/lib/api_entreprise/version.rb | 2 +- 8 files changed, 48 insertions(+), 6 deletions(-) diff --git a/clients/node/api-entreprise/CHANGELOG.md b/clients/node/api-entreprise/CHANGELOG.md index 71bf6d2574..01a795952a 100644 --- a/clients/node/api-entreprise/CHANGELOG.md +++ b/clients/node/api-entreprise/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## 0.3.0 + +### Added +- `ministere_interieur.fondations(siren_or_siret_or_rnf)` — Données fondations + (SIAF / Ministère de l'Intérieur), `/v3/ministere_interieur/siaf/fondations/{siren_or_siret_or_rnf}`. + Available on staging only for now (endpoint in "prochainement" mode). + ## 0.2.0 ### Added diff --git a/clients/node/api-entreprise/package-lock.json b/clients/node/api-entreprise/package-lock.json index ca3b7ca732..2e75781c3d 100644 --- a/clients/node/api-entreprise/package-lock.json +++ b/clients/node/api-entreprise/package-lock.json @@ -1,12 +1,12 @@ { "name": "@api-gouv-dinum/api-entreprise", - "version": "0.1.0", + "version": "0.3.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@api-gouv-dinum/api-entreprise", - "version": "0.1.0", + "version": "0.3.0", "license": "MIT", "devDependencies": { "@types/node": "^25.8.0", diff --git a/clients/node/api-entreprise/package.json b/clients/node/api-entreprise/package.json index bc21edbb01..1205e7065f 100644 --- a/clients/node/api-entreprise/package.json +++ b/clients/node/api-entreprise/package.json @@ -1,6 +1,6 @@ { "name": "@api-gouv-dinum/api-entreprise", - "version": "0.2.0", + "version": "0.3.0", "description": "Official Node.js client for API Entreprise v3", "type": "module", "main": "dist/index.cjs", diff --git a/clients/node/api-entreprise/src/resources/ministere_interieur.ts b/clients/node/api-entreprise/src/resources/ministere_interieur.ts index 2e333151bf..6397768507 100644 --- a/clients/node/api-entreprise/src/resources/ministere_interieur.ts +++ b/clients/node/api-entreprise/src/resources/ministere_interieur.ts @@ -39,4 +39,18 @@ export class MinistereInterieur { })(); return this.client.get(path, { params: { 'recipient': options.recipient, 'delegation_id': options.delegation_id, 'context': options.context, 'object': options.object } }); } + + /** Données fondations */ + async fondations(siren_or_siret_or_rnf: string, options: { version?: number; recipient?: string; delegation_id?: string; context?: string; object?: string } = {}) { + const resolvedVersion = options.version ?? 3; + const path = (() => { + switch (resolvedVersion) { + case 3: + return `/v3/ministere_interieur/siaf/fondations/${siren_or_siret_or_rnf}`; + default: + throw new Error(`version ${resolvedVersion} not available for /ministere_interieur/siaf/fondations/{siren_or_siret_or_rnf}; supported: [3]`); + } + })(); + return this.client.get(path, { params: { 'recipient': options.recipient, 'delegation_id': options.delegation_id, 'context': options.context, 'object': options.object } }); + } } diff --git a/clients/ruby/api_entreprise/CHANGELOG.md b/clients/ruby/api_entreprise/CHANGELOG.md index a03e896853..9fd13fdb6f 100644 --- a/clients/ruby/api_entreprise/CHANGELOG.md +++ b/clients/ruby/api_entreprise/CHANGELOG.md @@ -6,6 +6,13 @@ adheres to [Semantic Versioning](https://semver.org/). ## [Unreleased] +## [0.3.0] - 2026-08-15 + +### Added +- `ministere_interieur.fondations(siren_or_siret_or_rnf)` — Données fondations + (SIAF / Ministère de l'Intérieur), `/v3/ministere_interieur/siaf/fondations/{siren_or_siret_or_rnf}`. + Available on staging only for now (endpoint in "prochainement" mode). + ## [0.2.0] - 2026-05-19 ### Added diff --git a/clients/ruby/api_entreprise/Gemfile.lock b/clients/ruby/api_entreprise/Gemfile.lock index a224101417..a7daeabcf5 100644 --- a/clients/ruby/api_entreprise/Gemfile.lock +++ b/clients/ruby/api_entreprise/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - api_entreprise (0.2.0) + api_entreprise (0.3.0) faraday (~> 2.0) faraday-retry (~> 2.0) @@ -62,7 +62,7 @@ DEPENDENCIES CHECKSUMS addressable (2.9.0) sha256=7fdf6ac3660f7f4e867a0838be3f6cf722ace541dd97767fa42bc6cfa980c7af - api_entreprise (0.2.0) + api_entreprise (0.3.0) bigdecimal (4.1.1) sha256=1c09efab961da45203c8316b0cdaec0ff391dfadb952dd459584b63ebf8054ca crack (1.0.1) sha256=ff4a10390cd31d66440b7524eb1841874db86201d5b70032028553130b6d4c7e diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962 diff --git a/clients/ruby/api_entreprise/lib/api_entreprise/resources/ministere_interieur.rb b/clients/ruby/api_entreprise/lib/api_entreprise/resources/ministere_interieur.rb index a11dc4b36c..923384d10a 100644 --- a/clients/ruby/api_entreprise/lib/api_entreprise/resources/ministere_interieur.rb +++ b/clients/ruby/api_entreprise/lib/api_entreprise/resources/ministere_interieur.rb @@ -39,6 +39,20 @@ def documents(siret_or_rna, version: nil, recipient: nil, delegation_id: nil, co end @client.get(path, params: { "recipient" => recipient, "delegation_id" => delegation_id, "context" => context, "object" => object }.compact) end + + # Données fondations + # Logical endpoint: /ministere_interieur/siaf/fondations/{siren_or_siret_or_rnf} + # Versions available: [3] — default: 3 + def fondations(siren_or_siret_or_rnf, version: nil, recipient: nil, delegation_id: nil, context: nil, object: nil) + path = + case version || 3 + when 3 + "/v3/ministere_interieur/siaf/fondations/#{siren_or_siret_or_rnf}" + else + raise ArgumentError, "version #{version.inspect} not available for /ministere_interieur/siaf/fondations/{siren_or_siret_or_rnf}; supported: [3]" + end + @client.get(path, params: { "recipient" => recipient, "delegation_id" => delegation_id, "context" => context, "object" => object }.compact) + end end end end diff --git a/clients/ruby/api_entreprise/lib/api_entreprise/version.rb b/clients/ruby/api_entreprise/lib/api_entreprise/version.rb index 117f5e50d7..3540b0de8b 100644 --- a/clients/ruby/api_entreprise/lib/api_entreprise/version.rb +++ b/clients/ruby/api_entreprise/lib/api_entreprise/version.rb @@ -1,3 +1,3 @@ module ApiEntreprise - VERSION = '0.2.0'.freeze + VERSION = '0.3.0'.freeze end From 288df3f15bef1f0c185f60160b9e54a9fd5f293d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Delmaire=20Lo=C3=AFc?= Date: Wed, 19 Aug 2026 10:53:24 +0200 Subject: [PATCH 7/7] Namespace the fondations scope as fondations_mi_siaf The scope index is flat and shared by every API Entreprise endpoint, so a bare `fondations` would collide with any future foundations-related dataset coming from another provider. Suffixing with the provider and its information system (MI / SIAF) keeps the scope unambiguous, consistent with the endpoint's controller path, and readable in the token scope list shown to integrators. The staging token embeds every scope declared in authorizations.yml (checked by mocks' acceptance spec), hence its regeneration. --- commons/data/authorizations.yml | 2 +- mocks/tokens/default | 2 +- site/config/locales/api_entreprise/fr.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/commons/data/authorizations.yml b/commons/data/authorizations.yml index a040ca32d4..86193271a3 100644 --- a/commons/data/authorizations.yml +++ b/commons/data/authorizations.yml @@ -154,7 +154,7 @@ shared: - associations_donnees_protegees - associations_djepva api_entreprise/v3_and_more/mi/siaf/fondations: - - fondations + - fondations_mi_siaf api_entreprise/v3_and_more/mi/unites_legales_open_data: - associations - open_data diff --git a/mocks/tokens/default b/mocks/tokens/default index c9362a3522..9706c6d4c2 100644 --- a/mocks/tokens/default +++ b/mocks/tokens/default @@ -1 +1 @@ -eyJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiI2NjRkYmY4NC01YzcwLTRjZGYtYmMyZC1jZGIxODQ4ODNhZTUiLCJqdGkiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJzY29wZXMiOlsiYXNzb2NpYXRpb25zIiwib3Blbl9kYXRhIiwicHJvYnRwIiwiY290aXNhdGlvbnNfcHJvYnRwIiwiYXR0ZXN0YXRpb25zX2Zpc2NhbGVzIiwiYXR0ZXN0YXRpb25fZmlzY2FsZV9kZ2ZpcCIsImF0dGVzdGF0aW9uc19zb2NpYWxlcyIsImF0dGVzdGF0aW9uX3NvY2lhbGVfdXJzc2FmIiwiYmlsYW5zX2VudHJlcHJpc2VfYmRmIiwiYmlsYW5zX2JkZiIsImZudHBfY2FydGVfcHJvIiwiY2VydGlmaWNhdF9jbmV0cCIsImNlcnRpZmljYXRpb25fY25ldHAiLCJjZXJ0aWZpY2F0X29wcWliaSIsInF1YWxpYmF0IiwiY2VydGlmaWNhdF9yZ2VfYWRlbWUiLCJkb2N1bWVudHNfYXNzb2NpYXRpb24iLCJlbnRyZXByaXNlcyIsInVuaXRlc19sZWdhbGVzX2V0YWJsaXNzZW1lbnRzX2luc2VlIiwiZXRhYmxpc3NlbWVudHMiLCJleGVyY2ljZXMiLCJjaGlmZnJlX2FmZmFpcmVzX2RnZmlwIiwiZXh0cmFpdHNfcmNzIiwibGlhc3NlX2Zpc2NhbGUiLCJsaWFzc2VzX2Zpc2NhbGVzX2RnZmlwIiwiY2VydGlmaWNhdGlvbnNfcXVhbGlvcGlfZnJhbmNlX2NvbXBldGVuY2VzIiwiYXR0ZXN0YXRpb25fY290aXNhdGlvbnNfY29uZ2VzX3BheWVzX2Nob21hZ2VfaW50ZW1wZXJpZXNfY2lidHBfY25ldHAiLCJlb3JpX2RvdWFuZXMiLCJkYXRhX3N1YnZlbnRpb25fc3VidmVudGlvbnMiLCJsaWVuc19jYXBpdGFsaXN0aXF1ZXNfZGdmaXAiLCJjb252ZW50aW9uc19jb2xsZWN0aXZlcyIsIm1hbmRhdGFpcmVzX3NvY2lhdXhfaW5mb2dyZWZmZSIsImFjdGVzX2lucGkiLCJhc3NvY2lhdGlvbnNfZG9ubmVlc19wcm90ZWdlZXMiLCJhc3NvY2lhdGlvbnNfZGplcHZhIiwiZm9uZGF0aW9ucyIsIm1zYV9jb3Rpc2F0aW9ucyIsImNvdGlzYXRpb25zX21zYSIsImNlcnRpZmljYXRpb25fb3BxaWJpIiwiZW50cmVwcmlzZXNfYXJ0aXNhbmFsZXMiLCJlZmZlY3RpZnNfdXJzc2FmIiwiYmVuZWZpY2lhaXJlc19lZmZlY3RpZnNfaW5waSIsImNuYWZfcXVvdGllbnRfZmFtaWxpYWwiLCJjbmFmX2FsbG9jYXRhaXJlcyIsImNuYWZfZW5mYW50cyIsImNuYWZfYWRyZXNzZSIsImNvbXBsZW1lbnRhaXJlX3NhbnRlX3NvbGlkYWlyZSIsImFsbG9jYXRpb25fYWR1bHRlX2hhbmRpY2FwZSIsInJldmVudV9zb2xpZGFyaXRlX2FjdGl2ZSIsInJldmVudV9zb2xpZGFyaXRlX2FjdGl2ZV9tYWpvcmF0aW9uIiwiYWxsb2NhdGlvbl9zb3V0aWVuX2ZhbWlsaWFsIiwicHJpbWVfYWN0aXZpdGUiLCJwcmltZV9hY3Rpdml0ZV9tYWpvcmF0aW9uIiwiY25vdXNfc3RhdHV0X2JvdXJzaWVyIiwiY25vdXNfZWNoZWxvbl9ib3Vyc2UiLCJjbm91c19lbWFpbCIsImNub3VzX3BlcmlvZGVfdmVyc2VtZW50IiwiY25vdXNfc3RhdHV0X2JvdXJzZSIsImNub3VzX3ZpbGxlX2V0dWRlcyIsImNub3VzX2lkZW50aXRlIiwibWVzcmlfaWRlbnRpZmlhbnQiLCJtZXNyaV9pZGVudGl0ZSIsIm1lc3JpX2luc2NyaXB0aW9uX2V0dWRpYW50IiwibWVzcmlfaW5zY3JpcHRpb25fYXV0cmUiLCJtZXNyaV9hZG1pc3Npb24iLCJtZXNyaV9ldGFibGlzc2VtZW50cyIsInBvbGVfZW1wbG9pX2lkZW50aXRlIiwicG9sZV9lbXBsb2lfYWRyZXNzZSIsInBvbGVfZW1wbG9pX2NvbnRhY3QiLCJwb2xlX2VtcGxvaV9pbnNjcmlwdGlvbiIsInBvbGVfZW1wbG9pX3BhaWVtZW50cyIsIm1lbl9zdGF0dXRfc2NvbGFyaXRlIiwibWVuX3N0YXR1dF9ib3Vyc2llciIsIm1lbl9lY2hlbG9uX2JvdXJzZSIsImFudHNfZXh0cmFpdF9pbW1hdHJpY3VsYXRpb25fdmVoaWN1bGVfaWRlbnRpdGVfcGFydGljdWxpZXIiLCJhbnRzX2V4dHJhaXRfaW1tYXRyaWN1bGF0aW9uX3ZlaGljdWxlX2FkcmVzc2VfcGFydGljdWxpZXIiLCJhbnRzX2V4dHJhaXRfaW1tYXRyaWN1bGF0aW9uX3ZlaGljdWxlX3N0YXR1dF9yYXR0YWNoZW1lbnQiLCJhbnRzX2V4dHJhaXRfaW1tYXRyaWN1bGF0aW9uX3ZlaGljdWxlX2Rvbm5lZXNfaW1tYXRyaWN1bGF0aW9uX3ZlaGljdWxlIiwiYW50c19leHRyYWl0X2ltbWF0cmljdWxhdGlvbl92ZWhpY3VsZV9jYXJhY3RlcmlzdGlxdWVzX3RlY2huaXF1ZXNfdmVoaWN1bGUiLCJwb2xlX2VtcGxvaV9pZGVudGlmaWFudCIsIm1lbl9zdGF0dXRfaWRlbnRpdGUiLCJtZW5fc3RhdHV0X2V0YWJsaXNzZW1lbnQiLCJtZW5fc3RhdHV0X21vZHVsZV9lbGVtZW50YWlyZV9mb3JtYXRpb24iLCJtZW5fcmVnaW1lX3BlbnNpb25uYXQiLCJtZXNyaV9hZG1pc3Npb25zIiwibWVzcmlfYWRtaXNzaW9uX2luc2NyaXQiLCJtZXNyaV9hZG1pc3Npb25fcmVnaW1lX2Zvcm1hdGlvbiIsIm1lc3JpX2FkbWlzc2lvbl9jb21tdW5lX2V0dWRlcyIsIm1lc3JpX2FkbWlzc2lvbl9ldGFibGlzc2VtZW50X2V0dWRlcyIsImNuYXZfYWxsb2NhdGlvbl9lbmZhbnRfaGFuZGljYXBlIiwiY25hdl9hbGxvY2F0aW9uX3JlbnRyZWVfc2NvbGFpcmUiLCJjbm91c19pbmUiLCJkc25qX3N0YXR1dF9zZXJ2aWNlX25hdGlvbmFsIiwiY25hdl9wYXJ0aWNpcGF0aW9uX2ZhbWlsaWFsZV9lYWplX2FsbG9jYXRhaXJlcyIsImNuYXZfcGFydGljaXBhdGlvbl9mYW1pbGlhbGVfZWFqZV9lbmZhbnRzIiwiY25hdl9wYXJ0aWNpcGF0aW9uX2ZhbWlsaWFsZV9lYWplX2FkcmVzc2UiLCJjbmF2X3BhcnRpY2lwYXRpb25fZmFtaWxpYWxlX2VhamVfcGFyYW1ldHJlc19jYWxjdWwiLCJzZGhfc3RhdHV0X3Nwb3J0aWZfaWRlbnRpdGUiLCJzZGhfc3RhdHV0X3Nwb3J0aWZfZXN0X3Nwb3J0aWZfZGVfaGF1dF9uaXZlYXUiLCJzZGhfc3RhdHV0X3Nwb3J0aWZfYV9ldGVfc3BvcnRpZl9kZV9oYXV0X25pdmVhdSIsInNkaF9zdGF0dXRfc3BvcnRpZl9pbmZvcm1hdGlvbnNfc3RhdHV0Iiwic2RoX3N0YXR1dF9zcG9ydGlmX2luZm9ybWF0aW9uc19zdGF0dXRzX3ByZWNlZGVudHMiLCJnaXBfbWRzX3NlcnZpY2VfY2l2aXF1ZV9zdGF0dXRfYWN0dWVsIiwiZ2lwX21kc19zZXJ2aWNlX2NpdmlxdWVfc3RhdHV0X3Bhc3NlIiwiZ2lwX21kc19zZXJ2aWNlX2NpdmlxdWVfb3JnYW5pc21lX2FjY3VlaWwiLCJnaXBfbWRzX3NlcnZpY2VfY2l2aXF1ZV9kYXRlcyJdLCJzdWIiOiJzdGFnaW5nIiwiaWF0IjoxNzg2Nzk5MDc1LCJ2ZXJzaW9uIjoiMS4wIiwiZXhwIjoyMTAyNDE4Mjc1fQ.t5brTx92HQEWLx25o-JrqD9QoOZ2DxcpaSqH5ouuS8s \ No newline at end of file +eyJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiIwZThhZDA5MC02NTNkLTRjNWMtODI0ZC1jZGUwNTg3YTlhOWUiLCJqdGkiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJzY29wZXMiOlsiYXNzb2NpYXRpb25zIiwib3Blbl9kYXRhIiwicHJvYnRwIiwiY290aXNhdGlvbnNfcHJvYnRwIiwiYXR0ZXN0YXRpb25zX2Zpc2NhbGVzIiwiYXR0ZXN0YXRpb25fZmlzY2FsZV9kZ2ZpcCIsImF0dGVzdGF0aW9uc19zb2NpYWxlcyIsImF0dGVzdGF0aW9uX3NvY2lhbGVfdXJzc2FmIiwiYmlsYW5zX2VudHJlcHJpc2VfYmRmIiwiYmlsYW5zX2JkZiIsImZudHBfY2FydGVfcHJvIiwiY2VydGlmaWNhdF9jbmV0cCIsImNlcnRpZmljYXRpb25fY25ldHAiLCJjZXJ0aWZpY2F0X29wcWliaSIsInF1YWxpYmF0IiwiY2VydGlmaWNhdF9yZ2VfYWRlbWUiLCJkb2N1bWVudHNfYXNzb2NpYXRpb24iLCJlbnRyZXByaXNlcyIsInVuaXRlc19sZWdhbGVzX2V0YWJsaXNzZW1lbnRzX2luc2VlIiwiZXRhYmxpc3NlbWVudHMiLCJleGVyY2ljZXMiLCJjaGlmZnJlX2FmZmFpcmVzX2RnZmlwIiwiZXh0cmFpdHNfcmNzIiwibGlhc3NlX2Zpc2NhbGUiLCJsaWFzc2VzX2Zpc2NhbGVzX2RnZmlwIiwiY2VydGlmaWNhdGlvbnNfcXVhbGlvcGlfZnJhbmNlX2NvbXBldGVuY2VzIiwiYXR0ZXN0YXRpb25fY290aXNhdGlvbnNfY29uZ2VzX3BheWVzX2Nob21hZ2VfaW50ZW1wZXJpZXNfY2lidHBfY25ldHAiLCJlb3JpX2RvdWFuZXMiLCJkYXRhX3N1YnZlbnRpb25fc3VidmVudGlvbnMiLCJsaWVuc19jYXBpdGFsaXN0aXF1ZXNfZGdmaXAiLCJjb252ZW50aW9uc19jb2xsZWN0aXZlcyIsIm1hbmRhdGFpcmVzX3NvY2lhdXhfaW5mb2dyZWZmZSIsImFjdGVzX2lucGkiLCJhc3NvY2lhdGlvbnNfZG9ubmVlc19wcm90ZWdlZXMiLCJhc3NvY2lhdGlvbnNfZGplcHZhIiwiZm9uZGF0aW9uc19taV9zaWFmIiwibXNhX2NvdGlzYXRpb25zIiwiY290aXNhdGlvbnNfbXNhIiwiY2VydGlmaWNhdGlvbl9vcHFpYmkiLCJlbnRyZXByaXNlc19hcnRpc2FuYWxlcyIsImVmZmVjdGlmc191cnNzYWYiLCJiZW5lZmljaWFpcmVzX2VmZmVjdGlmc19pbnBpIiwiY25hZl9xdW90aWVudF9mYW1pbGlhbCIsImNuYWZfYWxsb2NhdGFpcmVzIiwiY25hZl9lbmZhbnRzIiwiY25hZl9hZHJlc3NlIiwiY29tcGxlbWVudGFpcmVfc2FudGVfc29saWRhaXJlIiwiYWxsb2NhdGlvbl9hZHVsdGVfaGFuZGljYXBlIiwicmV2ZW51X3NvbGlkYXJpdGVfYWN0aXZlIiwicmV2ZW51X3NvbGlkYXJpdGVfYWN0aXZlX21ham9yYXRpb24iLCJhbGxvY2F0aW9uX3NvdXRpZW5fZmFtaWxpYWwiLCJwcmltZV9hY3Rpdml0ZSIsInByaW1lX2FjdGl2aXRlX21ham9yYXRpb24iLCJjbm91c19zdGF0dXRfYm91cnNpZXIiLCJjbm91c19lY2hlbG9uX2JvdXJzZSIsImNub3VzX2VtYWlsIiwiY25vdXNfcGVyaW9kZV92ZXJzZW1lbnQiLCJjbm91c19zdGF0dXRfYm91cnNlIiwiY25vdXNfdmlsbGVfZXR1ZGVzIiwiY25vdXNfaWRlbnRpdGUiLCJtZXNyaV9pZGVudGlmaWFudCIsIm1lc3JpX2lkZW50aXRlIiwibWVzcmlfaW5zY3JpcHRpb25fZXR1ZGlhbnQiLCJtZXNyaV9pbnNjcmlwdGlvbl9hdXRyZSIsIm1lc3JpX2FkbWlzc2lvbiIsIm1lc3JpX2V0YWJsaXNzZW1lbnRzIiwicG9sZV9lbXBsb2lfaWRlbnRpdGUiLCJwb2xlX2VtcGxvaV9hZHJlc3NlIiwicG9sZV9lbXBsb2lfY29udGFjdCIsInBvbGVfZW1wbG9pX2luc2NyaXB0aW9uIiwicG9sZV9lbXBsb2lfcGFpZW1lbnRzIiwibWVuX3N0YXR1dF9zY29sYXJpdGUiLCJtZW5fc3RhdHV0X2JvdXJzaWVyIiwibWVuX2VjaGVsb25fYm91cnNlIiwiYW50c19leHRyYWl0X2ltbWF0cmljdWxhdGlvbl92ZWhpY3VsZV9pZGVudGl0ZV9wYXJ0aWN1bGllciIsImFudHNfZXh0cmFpdF9pbW1hdHJpY3VsYXRpb25fdmVoaWN1bGVfYWRyZXNzZV9wYXJ0aWN1bGllciIsImFudHNfZXh0cmFpdF9pbW1hdHJpY3VsYXRpb25fdmVoaWN1bGVfc3RhdHV0X3JhdHRhY2hlbWVudCIsImFudHNfZXh0cmFpdF9pbW1hdHJpY3VsYXRpb25fdmVoaWN1bGVfZG9ubmVlc19pbW1hdHJpY3VsYXRpb25fdmVoaWN1bGUiLCJhbnRzX2V4dHJhaXRfaW1tYXRyaWN1bGF0aW9uX3ZlaGljdWxlX2NhcmFjdGVyaXN0aXF1ZXNfdGVjaG5pcXVlc192ZWhpY3VsZSIsInBvbGVfZW1wbG9pX2lkZW50aWZpYW50IiwibWVuX3N0YXR1dF9pZGVudGl0ZSIsIm1lbl9zdGF0dXRfZXRhYmxpc3NlbWVudCIsIm1lbl9zdGF0dXRfbW9kdWxlX2VsZW1lbnRhaXJlX2Zvcm1hdGlvbiIsIm1lbl9yZWdpbWVfcGVuc2lvbm5hdCIsIm1lc3JpX2FkbWlzc2lvbnMiLCJtZXNyaV9hZG1pc3Npb25faW5zY3JpdCIsIm1lc3JpX2FkbWlzc2lvbl9yZWdpbWVfZm9ybWF0aW9uIiwibWVzcmlfYWRtaXNzaW9uX2NvbW11bmVfZXR1ZGVzIiwibWVzcmlfYWRtaXNzaW9uX2V0YWJsaXNzZW1lbnRfZXR1ZGVzIiwiY25hdl9hbGxvY2F0aW9uX2VuZmFudF9oYW5kaWNhcGUiLCJjbmF2X2FsbG9jYXRpb25fcmVudHJlZV9zY29sYWlyZSIsImNub3VzX2luZSIsImRzbmpfc3RhdHV0X3NlcnZpY2VfbmF0aW9uYWwiLCJjbmF2X3BhcnRpY2lwYXRpb25fZmFtaWxpYWxlX2VhamVfYWxsb2NhdGFpcmVzIiwiY25hdl9wYXJ0aWNpcGF0aW9uX2ZhbWlsaWFsZV9lYWplX2VuZmFudHMiLCJjbmF2X3BhcnRpY2lwYXRpb25fZmFtaWxpYWxlX2VhamVfYWRyZXNzZSIsImNuYXZfcGFydGljaXBhdGlvbl9mYW1pbGlhbGVfZWFqZV9wYXJhbWV0cmVzX2NhbGN1bCIsInNkaF9zdGF0dXRfc3BvcnRpZl9pZGVudGl0ZSIsInNkaF9zdGF0dXRfc3BvcnRpZl9lc3Rfc3BvcnRpZl9kZV9oYXV0X25pdmVhdSIsInNkaF9zdGF0dXRfc3BvcnRpZl9hX2V0ZV9zcG9ydGlmX2RlX2hhdXRfbml2ZWF1Iiwic2RoX3N0YXR1dF9zcG9ydGlmX2luZm9ybWF0aW9uc19zdGF0dXQiLCJzZGhfc3RhdHV0X3Nwb3J0aWZfaW5mb3JtYXRpb25zX3N0YXR1dHNfcHJlY2VkZW50cyIsImdpcF9tZHNfc2VydmljZV9jaXZpcXVlX3N0YXR1dF9hY3R1ZWwiLCJnaXBfbWRzX3NlcnZpY2VfY2l2aXF1ZV9zdGF0dXRfcGFzc2UiLCJnaXBfbWRzX3NlcnZpY2VfY2l2aXF1ZV9vcmdhbmlzbWVfYWNjdWVpbCIsImdpcF9tZHNfc2VydmljZV9jaXZpcXVlX2RhdGVzIl0sInN1YiI6InN0YWdpbmciLCJpYXQiOjE3ODcxMjk1ODAsInZlcnNpb24iOiIxLjAiLCJleHAiOjIxMDI3NDg3ODB9.2kb4Y0IM2PxyVmBT-MRYq4j8mWM7lIRZR2fuRFej4gc \ No newline at end of file diff --git a/site/config/locales/api_entreprise/fr.yml b/site/config/locales/api_entreprise/fr.yml index 61e92b3124..122718675e 100644 --- a/site/config/locales/api_entreprise/fr.yml +++ b/site/config/locales/api_entreprise/fr.yml @@ -104,7 +104,7 @@ fr: label: Infogreffe || API Mandataires sociaux associations_donnees_protegees: label: Djepva || API Données association - fondations: + fondations_mi_siaf: label: SIAF || API Données fondations associations_djepva: label: Djepva || API Données ouvertes association