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 diff --git a/commons/data/authorizations.yml b/commons/data/authorizations.yml index d648192cb7..86193271a3 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_mi_siaf 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/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/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 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..9706c6d4c2 100644 --- a/mocks/tokens/default +++ b/mocks/tokens/default @@ -1 +1 @@ -eyJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiIzNDkyZGRjOC05MWIzLTQwZTAtYmE0MC1jMjg5NGY3NDgwYTciLCJqdGkiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJzY29wZXMiOlsiYXNzb2NpYXRpb25zIiwib3Blbl9kYXRhIiwicHJvYnRwIiwiY290aXNhdGlvbnNfcHJvYnRwIiwiYXR0ZXN0YXRpb25zX2Zpc2NhbGVzIiwiYXR0ZXN0YXRpb25fZmlzY2FsZV9kZ2ZpcCIsImF0dGVzdGF0aW9uc19zb2NpYWxlcyIsImF0dGVzdGF0aW9uX3NvY2lhbGVfdXJzc2FmIiwiYmlsYW5zX2VudHJlcHJpc2VfYmRmIiwiYmlsYW5zX2JkZiIsImZudHBfY2FydGVfcHJvIiwiY2VydGlmaWNhdF9jbmV0cCIsImNlcnRpZmljYXRpb25fY25ldHAiLCJjZXJ0aWZpY2F0X29wcWliaSIsInF1YWxpYmF0IiwiY2VydGlmaWNhdF9yZ2VfYWRlbWUiLCJkb2N1bWVudHNfYXNzb2NpYXRpb24iLCJlbnRyZXByaXNlcyIsInVuaXRlc19sZWdhbGVzX2V0YWJsaXNzZW1lbnRzX2luc2VlIiwiZXRhYmxpc3NlbWVudHMiLCJleGVyY2ljZXMiLCJjaGlmZnJlX2FmZmFpcmVzX2RnZmlwIiwiZXh0cmFpdHNfcmNzIiwibGlhc3NlX2Zpc2NhbGUiLCJsaWFzc2VzX2Zpc2NhbGVzX2RnZmlwIiwiY2VydGlmaWNhdGlvbnNfcXVhbGlvcGlfZnJhbmNlX2NvbXBldGVuY2VzIiwiYXR0ZXN0YXRpb25fY290aXNhdGlvbnNfY29uZ2VzX3BheWVzX2Nob21hZ2VfaW50ZW1wZXJpZXNfY2lidHBfY25ldHAiLCJlb3JpX2RvdWFuZXMiLCJkYXRhX3N1YnZlbnRpb25fc3VidmVudGlvbnMiLCJsaWVuc19jYXBpdGFsaXN0aXF1ZXNfZGdmaXAiLCJjb252ZW50aW9uc19jb2xsZWN0aXZlcyIsIm1hbmRhdGFpcmVzX3NvY2lhdXhfaW5mb2dyZWZmZSIsImFjdGVzX2lucGkiLCJhc3NvY2lhdGlvbnNfZG9ubmVlc19wcm90ZWdlZXMiLCJhc3NvY2lhdGlvbnNfZGplcHZhIiwibXNhX2NvdGlzYXRpb25zIiwiY290aXNhdGlvbnNfbXNhIiwiY2VydGlmaWNhdGlvbl9vcHFpYmkiLCJlbnRyZXByaXNlc19hcnRpc2FuYWxlcyIsImVmZmVjdGlmc191cnNzYWYiLCJiZW5lZmljaWFpcmVzX2VmZmVjdGlmc19pbnBpIiwiY25hZl9xdW90aWVudF9mYW1pbGlhbCIsImNuYWZfYWxsb2NhdGFpcmVzIiwiY25hZl9lbmZhbnRzIiwiY25hZl9hZHJlc3NlIiwiY29tcGxlbWVudGFpcmVfc2FudGVfc29saWRhaXJlIiwiYWxsb2NhdGlvbl9hZHVsdGVfaGFuZGljYXBlIiwicmV2ZW51X3NvbGlkYXJpdGVfYWN0aXZlIiwicmV2ZW51X3NvbGlkYXJpdGVfYWN0aXZlX21ham9yYXRpb24iLCJhbGxvY2F0aW9uX3NvdXRpZW5fZmFtaWxpYWwiLCJwcmltZV9hY3Rpdml0ZSIsInByaW1lX2FjdGl2aXRlX21ham9yYXRpb24iLCJjbm91c19zdGF0dXRfYm91cnNpZXIiLCJjbm91c19lY2hlbG9uX2JvdXJzZSIsImNub3VzX2VtYWlsIiwiY25vdXNfcGVyaW9kZV92ZXJzZW1lbnQiLCJjbm91c19zdGF0dXRfYm91cnNlIiwiY25vdXNfdmlsbGVfZXR1ZGVzIiwiY25vdXNfaWRlbnRpdGUiLCJtZXNyaV9pZGVudGlmaWFudCIsIm1lc3JpX2lkZW50aXRlIiwibWVzcmlfaW5zY3JpcHRpb25fZXR1ZGlhbnQiLCJtZXNyaV9pbnNjcmlwdGlvbl9hdXRyZSIsIm1lc3JpX2FkbWlzc2lvbiIsIm1lc3JpX2V0YWJsaXNzZW1lbnRzIiwicG9sZV9lbXBsb2lfaWRlbnRpdGUiLCJwb2xlX2VtcGxvaV9hZHJlc3NlIiwicG9sZV9lbXBsb2lfY29udGFjdCIsInBvbGVfZW1wbG9pX2luc2NyaXB0aW9uIiwicG9sZV9lbXBsb2lfcGFpZW1lbnRzIiwibWVuX3N0YXR1dF9zY29sYXJpdGUiLCJtZW5fc3RhdHV0X2JvdXJzaWVyIiwibWVuX2VjaGVsb25fYm91cnNlIiwiYW50c19leHRyYWl0X2ltbWF0cmljdWxhdGlvbl92ZWhpY3VsZV9pZGVudGl0ZV9wYXJ0aWN1bGllciIsImFudHNfZXh0cmFpdF9pbW1hdHJpY3VsYXRpb25fdmVoaWN1bGVfYWRyZXNzZV9wYXJ0aWN1bGllciIsImFudHNfZXh0cmFpdF9pbW1hdHJpY3VsYXRpb25fdmVoaWN1bGVfc3RhdHV0X3JhdHRhY2hlbWVudCIsImFudHNfZXh0cmFpdF9pbW1hdHJpY3VsYXRpb25fdmVoaWN1bGVfZG9ubmVlc19pbW1hdHJpY3VsYXRpb25fdmVoaWN1bGUiLCJhbnRzX2V4dHJhaXRfaW1tYXRyaWN1bGF0aW9uX3ZlaGljdWxlX2NhcmFjdGVyaXN0aXF1ZXNfdGVjaG5pcXVlc192ZWhpY3VsZSIsInBvbGVfZW1wbG9pX2lkZW50aWZpYW50IiwibWVuX3N0YXR1dF9pZGVudGl0ZSIsIm1lbl9zdGF0dXRfZXRhYmxpc3NlbWVudCIsIm1lbl9zdGF0dXRfbW9kdWxlX2VsZW1lbnRhaXJlX2Zvcm1hdGlvbiIsIm1lbl9yZWdpbWVfcGVuc2lvbm5hdCIsIm1lc3JpX2FkbWlzc2lvbnMiLCJtZXNyaV9hZG1pc3Npb25faW5zY3JpdCIsIm1lc3JpX2FkbWlzc2lvbl9yZWdpbWVfZm9ybWF0aW9uIiwibWVzcmlfYWRtaXNzaW9uX2NvbW11bmVfZXR1ZGVzIiwibWVzcmlfYWRtaXNzaW9uX2V0YWJsaXNzZW1lbnRfZXR1ZGVzIiwiY25hdl9hbGxvY2F0aW9uX2VuZmFudF9oYW5kaWNhcGUiLCJjbmF2X2FsbG9jYXRpb25fcmVudHJlZV9zY29sYWlyZSIsImNub3VzX2luZSIsImRzbmpfc3RhdHV0X3NlcnZpY2VfbmF0aW9uYWwiLCJjbmF2X3BhcnRpY2lwYXRpb25fZmFtaWxpYWxlX2VhamVfYWxsb2NhdGFpcmVzIiwiY25hdl9wYXJ0aWNpcGF0aW9uX2ZhbWlsaWFsZV9lYWplX2VuZmFudHMiLCJjbmF2X3BhcnRpY2lwYXRpb25fZmFtaWxpYWxlX2VhamVfYWRyZXNzZSIsImNuYXZfcGFydGljaXBhdGlvbl9mYW1pbGlhbGVfZWFqZV9wYXJhbWV0cmVzX2NhbGN1bCIsInNkaF9zdGF0dXRfc3BvcnRpZl9pZGVudGl0ZSIsInNkaF9zdGF0dXRfc3BvcnRpZl9lc3Rfc3BvcnRpZl9kZV9oYXV0X25pdmVhdSIsInNkaF9zdGF0dXRfc3BvcnRpZl9hX2V0ZV9zcG9ydGlmX2RlX2hhdXRfbml2ZWF1Iiwic2RoX3N0YXR1dF9zcG9ydGlmX2luZm9ybWF0aW9uc19zdGF0dXQiLCJzZGhfc3RhdHV0X3Nwb3J0aWZfaW5mb3JtYXRpb25zX3N0YXR1dHNfcHJlY2VkZW50cyIsImdpcF9tZHNfc2VydmljZV9jaXZpcXVlX3N0YXR1dF9hY3R1ZWwiLCJnaXBfbWRzX3NlcnZpY2VfY2l2aXF1ZV9zdGF0dXRfcGFzc2UiLCJnaXBfbWRzX3NlcnZpY2VfY2l2aXF1ZV9vcmdhbmlzbWVfYWNjdWVpbCIsImdpcF9tZHNfc2VydmljZV9jaXZpcXVlX2RhdGVzIl0sInN1YiI6InN0YWdpbmciLCJpYXQiOjE3ODQ2MzQ0MjcsInZlcnNpb24iOiIxLjAiLCJleHAiOjIxMDAyNTM2Mjd9.v4umVXBY704AxC3laz_Cl5hBYXbKcvyuBw8nC2Db5Hc \ No newline at end of file +eyJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiIwZThhZDA5MC02NTNkLTRjNWMtODI0ZC1jZGUwNTg3YTlhOWUiLCJqdGkiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJzY29wZXMiOlsiYXNzb2NpYXRpb25zIiwib3Blbl9kYXRhIiwicHJvYnRwIiwiY290aXNhdGlvbnNfcHJvYnRwIiwiYXR0ZXN0YXRpb25zX2Zpc2NhbGVzIiwiYXR0ZXN0YXRpb25fZmlzY2FsZV9kZ2ZpcCIsImF0dGVzdGF0aW9uc19zb2NpYWxlcyIsImF0dGVzdGF0aW9uX3NvY2lhbGVfdXJzc2FmIiwiYmlsYW5zX2VudHJlcHJpc2VfYmRmIiwiYmlsYW5zX2JkZiIsImZudHBfY2FydGVfcHJvIiwiY2VydGlmaWNhdF9jbmV0cCIsImNlcnRpZmljYXRpb25fY25ldHAiLCJjZXJ0aWZpY2F0X29wcWliaSIsInF1YWxpYmF0IiwiY2VydGlmaWNhdF9yZ2VfYWRlbWUiLCJkb2N1bWVudHNfYXNzb2NpYXRpb24iLCJlbnRyZXByaXNlcyIsInVuaXRlc19sZWdhbGVzX2V0YWJsaXNzZW1lbnRzX2luc2VlIiwiZXRhYmxpc3NlbWVudHMiLCJleGVyY2ljZXMiLCJjaGlmZnJlX2FmZmFpcmVzX2RnZmlwIiwiZXh0cmFpdHNfcmNzIiwibGlhc3NlX2Zpc2NhbGUiLCJsaWFzc2VzX2Zpc2NhbGVzX2RnZmlwIiwiY2VydGlmaWNhdGlvbnNfcXVhbGlvcGlfZnJhbmNlX2NvbXBldGVuY2VzIiwiYXR0ZXN0YXRpb25fY290aXNhdGlvbnNfY29uZ2VzX3BheWVzX2Nob21hZ2VfaW50ZW1wZXJpZXNfY2lidHBfY25ldHAiLCJlb3JpX2RvdWFuZXMiLCJkYXRhX3N1YnZlbnRpb25fc3VidmVudGlvbnMiLCJsaWVuc19jYXBpdGFsaXN0aXF1ZXNfZGdmaXAiLCJjb252ZW50aW9uc19jb2xsZWN0aXZlcyIsIm1hbmRhdGFpcmVzX3NvY2lhdXhfaW5mb2dyZWZmZSIsImFjdGVzX2lucGkiLCJhc3NvY2lhdGlvbnNfZG9ubmVlc19wcm90ZWdlZXMiLCJhc3NvY2lhdGlvbnNfZGplcHZhIiwiZm9uZGF0aW9uc19taV9zaWFmIiwibXNhX2NvdGlzYXRpb25zIiwiY290aXNhdGlvbnNfbXNhIiwiY2VydGlmaWNhdGlvbl9vcHFpYmkiLCJlbnRyZXByaXNlc19hcnRpc2FuYWxlcyIsImVmZmVjdGlmc191cnNzYWYiLCJiZW5lZmljaWFpcmVzX2VmZmVjdGlmc19pbnBpIiwiY25hZl9xdW90aWVudF9mYW1pbGlhbCIsImNuYWZfYWxsb2NhdGFpcmVzIiwiY25hZl9lbmZhbnRzIiwiY25hZl9hZHJlc3NlIiwiY29tcGxlbWVudGFpcmVfc2FudGVfc29saWRhaXJlIiwiYWxsb2NhdGlvbl9hZHVsdGVfaGFuZGljYXBlIiwicmV2ZW51X3NvbGlkYXJpdGVfYWN0aXZlIiwicmV2ZW51X3NvbGlkYXJpdGVfYWN0aXZlX21ham9yYXRpb24iLCJhbGxvY2F0aW9uX3NvdXRpZW5fZmFtaWxpYWwiLCJwcmltZV9hY3Rpdml0ZSIsInByaW1lX2FjdGl2aXRlX21ham9yYXRpb24iLCJjbm91c19zdGF0dXRfYm91cnNpZXIiLCJjbm91c19lY2hlbG9uX2JvdXJzZSIsImNub3VzX2VtYWlsIiwiY25vdXNfcGVyaW9kZV92ZXJzZW1lbnQiLCJjbm91c19zdGF0dXRfYm91cnNlIiwiY25vdXNfdmlsbGVfZXR1ZGVzIiwiY25vdXNfaWRlbnRpdGUiLCJtZXNyaV9pZGVudGlmaWFudCIsIm1lc3JpX2lkZW50aXRlIiwibWVzcmlfaW5zY3JpcHRpb25fZXR1ZGlhbnQiLCJtZXNyaV9pbnNjcmlwdGlvbl9hdXRyZSIsIm1lc3JpX2FkbWlzc2lvbiIsIm1lc3JpX2V0YWJsaXNzZW1lbnRzIiwicG9sZV9lbXBsb2lfaWRlbnRpdGUiLCJwb2xlX2VtcGxvaV9hZHJlc3NlIiwicG9sZV9lbXBsb2lfY29udGFjdCIsInBvbGVfZW1wbG9pX2luc2NyaXB0aW9uIiwicG9sZV9lbXBsb2lfcGFpZW1lbnRzIiwibWVuX3N0YXR1dF9zY29sYXJpdGUiLCJtZW5fc3RhdHV0X2JvdXJzaWVyIiwibWVuX2VjaGVsb25fYm91cnNlIiwiYW50c19leHRyYWl0X2ltbWF0cmljdWxhdGlvbl92ZWhpY3VsZV9pZGVudGl0ZV9wYXJ0aWN1bGllciIsImFudHNfZXh0cmFpdF9pbW1hdHJpY3VsYXRpb25fdmVoaWN1bGVfYWRyZXNzZV9wYXJ0aWN1bGllciIsImFudHNfZXh0cmFpdF9pbW1hdHJpY3VsYXRpb25fdmVoaWN1bGVfc3RhdHV0X3JhdHRhY2hlbWVudCIsImFudHNfZXh0cmFpdF9pbW1hdHJpY3VsYXRpb25fdmVoaWN1bGVfZG9ubmVlc19pbW1hdHJpY3VsYXRpb25fdmVoaWN1bGUiLCJhbnRzX2V4dHJhaXRfaW1tYXRyaWN1bGF0aW9uX3ZlaGljdWxlX2NhcmFjdGVyaXN0aXF1ZXNfdGVjaG5pcXVlc192ZWhpY3VsZSIsInBvbGVfZW1wbG9pX2lkZW50aWZpYW50IiwibWVuX3N0YXR1dF9pZGVudGl0ZSIsIm1lbl9zdGF0dXRfZXRhYmxpc3NlbWVudCIsIm1lbl9zdGF0dXRfbW9kdWxlX2VsZW1lbnRhaXJlX2Zvcm1hdGlvbiIsIm1lbl9yZWdpbWVfcGVuc2lvbm5hdCIsIm1lc3JpX2FkbWlzc2lvbnMiLCJtZXNyaV9hZG1pc3Npb25faW5zY3JpdCIsIm1lc3JpX2FkbWlzc2lvbl9yZWdpbWVfZm9ybWF0aW9uIiwibWVzcmlfYWRtaXNzaW9uX2NvbW11bmVfZXR1ZGVzIiwibWVzcmlfYWRtaXNzaW9uX2V0YWJsaXNzZW1lbnRfZXR1ZGVzIiwiY25hdl9hbGxvY2F0aW9uX2VuZmFudF9oYW5kaWNhcGUiLCJjbmF2X2FsbG9jYXRpb25fcmVudHJlZV9zY29sYWlyZSIsImNub3VzX2luZSIsImRzbmpfc3RhdHV0X3NlcnZpY2VfbmF0aW9uYWwiLCJjbmF2X3BhcnRpY2lwYXRpb25fZmFtaWxpYWxlX2VhamVfYWxsb2NhdGFpcmVzIiwiY25hdl9wYXJ0aWNpcGF0aW9uX2ZhbWlsaWFsZV9lYWplX2VuZmFudHMiLCJjbmF2X3BhcnRpY2lwYXRpb25fZmFtaWxpYWxlX2VhamVfYWRyZXNzZSIsImNuYXZfcGFydGljaXBhdGlvbl9mYW1pbGlhbGVfZWFqZV9wYXJhbWV0cmVzX2NhbGN1bCIsInNkaF9zdGF0dXRfc3BvcnRpZl9pZGVudGl0ZSIsInNkaF9zdGF0dXRfc3BvcnRpZl9lc3Rfc3BvcnRpZl9kZV9oYXV0X25pdmVhdSIsInNkaF9zdGF0dXRfc3BvcnRpZl9hX2V0ZV9zcG9ydGlmX2RlX2hhdXRfbml2ZWF1Iiwic2RoX3N0YXR1dF9zcG9ydGlmX2luZm9ybWF0aW9uc19zdGF0dXQiLCJzZGhfc3RhdHV0X3Nwb3J0aWZfaW5mb3JtYXRpb25zX3N0YXR1dHNfcHJlY2VkZW50cyIsImdpcF9tZHNfc2VydmljZV9jaXZpcXVlX3N0YXR1dF9hY3R1ZWwiLCJnaXBfbWRzX3NlcnZpY2VfY2l2aXF1ZV9zdGF0dXRfcGFzc2UiLCJnaXBfbWRzX3NlcnZpY2VfY2l2aXF1ZV9vcmdhbmlzbWVfYWNjdWVpbCIsImdpcF9tZHNfc2VydmljZV9jaXZpcXVlX2RhdGVzIl0sInN1YiI6InN0YWdpbmciLCJpYXQiOjE3ODcxMjk1ODAsInZlcnNpb24iOiIxLjAiLCJleHAiOjIxMDI3NDg3ODB9.2kb4Y0IM2PxyVmBT-MRYq4j8mWM7lIRZR2fuRFej4gc \ No newline at end of file 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 4cad23404a..c43fe426c6 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,11 +16,19 @@ 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| 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/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/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/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 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, 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..122718675e 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_mi_siaf: + label: SIAF || API Données fondations associations_djepva: label: Djepva || API Données ouvertes association tags: