{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/insourcia-io/json-schema/insourcia-io-company-schema.json",
  "title": "Company",
  "description": "Fiche société. Un champ sans valeur est omis de la réponse, et un bloc sans donnée\n(`cessions`, `marches_publics`, `subventions`, `brevets`, `salons`, `ifrs`, `credit_risk`)\nest absent.\n",
  "x-generated": "2026-11-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/insourcia-io-openapi.yaml#/components/schemas/Company",
  "type": "object",
  "properties": {
    "siren": {
      "type": "string"
    },
    "denomination": {
      "type": "string"
    },
    "denomination_usuelle": {
      "type": "string",
      "description": "Dénomination usuelle déclarée au registre, quand elle diffère de la dénomination."
    },
    "sigle": {
      "type": "string"
    },
    "noms_alternatifs": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Enseignes et noms commerciaux des établissements : les autres noms sous lesquels la société est connue."
    },
    "lei": {
      "type": "string",
      "description": "Legal Entity Identifier (ISO 17442), 20 caractères alphanumériques. Présent uniquement pour les sociétés référencées ESEF/GLEIF (en général cotées)."
    },
    "forme_juridique": {
      "type": "string",
      "description": "Libellé de la forme juridique (nomenclature INSEE des catégories juridiques)."
    },
    "date_creation": {
      "type": "string",
      "format": "date"
    },
    "date_immatriculation": {
      "type": "string",
      "format": "date",
      "description": "Date d'immatriculation au RCS (peut différer de la date de création)."
    },
    "date_cloture_exercice": {
      "type": "string",
      "pattern": "^[0-3][0-9]-[01][0-9]$",
      "description": "Date de clôture comptable récurrente, au format JJ-MM."
    },
    "statut": {
      "type": "string",
      "enum": [
        "ACTIVE",
        "DISSOLVED"
      ],
      "description": "Statut au registre. DISSOLVED = dissoute ou radiée ; une société en procédure collective reste ACTIVE jusqu'à sa radiation."
    },
    "date_radiation": {
      "type": "string",
      "description": "Date de radiation, souvent ABSENTE d'une société pourtant dissoute : environ 9,9 millions des 12,4 millions de sociétés DISSOLVED n'en portent aucune. Ne pas déduire le statut de ce champ : lire `statut`, qui fait foi."
    },
    "successeur": {
      "type": "object",
      "description": "Société qui a repris celle-ci (fusion, absorption), quand elle est connue.",
      "properties": {
        "siren": {
          "type": "string"
        },
        "denomination": {
          "type": "string"
        }
      }
    },
    "capital": {
      "type": "number",
      "description": "Capital social en euros"
    },
    "siege": {
      "type": "object",
      "properties": {
        "adresse": {
          "type": "string",
          "description": "Forme d'affichage : rue, code postal et ville en une chaîne. Pour remplir des champs séparés, utiliser `rue`, `ville` et `code_postal` plutôt que de redécouper celle-ci."
        },
        "rue": {
          "type": "string",
          "description": "Ligne de rue seule, sans code postal ni ville."
        },
        "ville": {
          "type": "string"
        },
        "code_postal": {
          "type": "string"
        },
        "departement": {
          "type": "string"
        },
        "region": {
          "type": "string"
        }
      }
    },
    "activite": {
      "type": "object",
      "properties": {
        "code_ape": {
          "type": "string",
          "description": "Code APE (NAF rév. 2), au format `NN.NNL`."
        },
        "libelle": {
          "type": "string"
        },
        "objet_social": {
          "type": "string",
          "description": "Objet social déclaré, tronqué à 500 caractères."
        },
        "description": {
          "type": "string",
          "description": "Description de l'activité, tronquée à 500 caractères."
        }
      }
    },
    "effectif": {
      "type": "object",
      "properties": {
        "tranche": {
          "type": "string"
        },
        "exact_france": {
          "type": "integer",
          "description": "Effectif moyen déclaré dans les derniers comptes, quand il est connu."
        }
      }
    },
    "contact": {
      "type": "object",
      "properties": {
        "site_internet": {
          "type": "string"
        },
        "linkedin_url": {
          "type": "string",
          "description": "Présent seulement quand un profil a été apparié avec certitude."
        }
      }
    },
    "financier": {
      "type": "object",
      "description": "Métriques du dernier exercice. Le dernier exercice est le plus récent disponible,\nquel que soit son type de bilan (`type_bilan`) : pour un groupe, ce peut être un\nexercice consolidé (K) comme un exercice social (C). L'historique par type se lit\nsur `/companies/{siren}/financials` (paramètre `type_bilan`).\n",
      "properties": {
        "annee": {
          "type": "integer",
          "description": "Année de l'exercice"
        },
        "date_cloture": {
          "type": "string",
          "format": "date",
          "description": "Date de clôture de l'exercice"
        },
        "type_bilan": {
          "type": "string",
          "enum": [
            "K",
            "C",
            "S",
            "B",
            "A"
          ],
          "description": "Type de bilan : K = consolidé, C = complet (social), S = simplifié, B = banque, A = assurance."
        },
        "ca": {
          "type": "number",
          "description": "Chiffre d'affaires en euros"
        },
        "croissance_ca_pct": {
          "type": "number",
          "description": "Croissance du chiffre d'affaires sur un an, en %."
        },
        "resultat_net": {
          "type": "number",
          "description": "Résultat net en euros"
        },
        "marge_nette_pct": {
          "type": "number",
          "description": "Marge nette en %"
        },
        "ebitda": {
          "type": "number",
          "description": "EBITDA (excédent brut d'exploitation) en euros"
        },
        "marge_ebitda_pct": {
          "type": "number",
          "description": "Marge d'EBITDA en %"
        },
        "dette_nette": {
          "type": "number",
          "description": "Dette nette en euros (dettes financières moins trésorerie)"
        },
        "effectif_moyen": {
          "type": "integer"
        }
      }
    },
    "dirigeants": {
      "type": "array",
      "description": "Les 10 premiers dirigeants actifs directs, décisionnaires en premier. Liste complète : `/companies/{siren}/directors`.",
      "items": {
        "$ref": "#/$defs/DirectorSummary"
      }
    },
    "dirigeants_count": {
      "type": "integer",
      "description": "Nombre total de dirigeants actifs directs (présent seulement au-delà de 10)"
    },
    "ifrs": {
      "type": "object",
      "description": "Agrégats IFRS (comptes consolidés) du dernier exercice publié, pour les sociétés cotées. Détail : `/companies/{siren}/financials`.",
      "properties": {
        "annee": {
          "type": "integer"
        },
        "chiffre_affaires": {
          "type": "number"
        },
        "resultat_net": {
          "type": "number"
        },
        "ebitda": {
          "type": "number"
        },
        "total_actif": {
          "type": "number"
        }
      }
    },
    "credit_risk": {
      "type": "object",
      "additionalProperties": true,
      "description": "Réservé aux abonnements, servi sur demande. Score de crédit : même forme que le bloc `risk` de `/companies/{siren}/risk` (grade, probabilité de défaut du grade par horizon, facteurs, date). Absent si la société n'est pas scorée."
    },
    "estimation_financiere": {
      "$ref": "#/$defs/EstimationFinanciere"
    },
    "estimation_financiere_exercices": {
      "type": "array",
      "description": "Réservé aux abonnements. Les autres exercices estimés (antérieurs, ou intercalés entre deux CA publiés), triés par année. Même forme que `estimation_financiere`. Un exercice est écarté seulement si un CA est publié pour CET exercice. Liste vide s'il n'y en a pas.",
      "items": {
        "$ref": "#/$defs/EstimationFinanciere"
      }
    },
    "signaux": {
      "type": "object",
      "properties": {
        "is_cotee": {
          "type": "boolean"
        },
        "procedure_collective": {
          "type": "boolean",
          "description": "HISTORIQUE : la société a connu une procédure collective, close ou non."
        },
        "en_liquidation": {
          "type": "boolean",
          "description": "HISTORIQUE : a connu une liquidation judiciaire. Reste true après clôture."
        },
        "en_redressement": {
          "type": "boolean",
          "description": "HISTORIQUE : a connu un redressement judiciaire."
        },
        "en_sauvegarde": {
          "type": "boolean",
          "description": "HISTORIQUE : a connu une sauvegarde."
        },
        "en_conciliation": {
          "type": "boolean",
          "description": "HISTORIQUE : a connu une conciliation."
        },
        "procedure_en_cours": {
          "type": "boolean",
          "description": "ÉTAT COURANT : période d'observation ou liquidation en cours."
        },
        "plan_en_cours": {
          "type": "boolean",
          "description": "ÉTAT COURANT : un plan arrêté est en cours d'exécution."
        },
        "type_procedure_en_cours": {
          "type": [
            "string",
            "null"
          ],
          "description": "État courant fixé par le dernier jugement. null si aucune procédure en cours.",
          "enum": [
            "liquidation",
            "redressement",
            "sauvegarde",
            "conciliation",
            "autre",
            "accord_homologue",
            "plan_redressement",
            "plan_sauvegarde",
            "plan_cession"
          ]
        },
        "date_procedure_en_cours": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "Date du jugement ayant fixé l'état courant."
        },
        "comptes_confidentiels": {
          "type": "boolean"
        },
        "procedure_historique": {
          "type": "array",
          "description": "Historique des procédures collectives, trié par date décroissante (présent si des données existent)",
          "items": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "description": "Type de procédure (Liquidation judiciaire, Redressement judiciaire, Procédure de sauvegarde)"
              },
              "date": {
                "type": "string",
                "description": "Date du jugement (AAAA-MM-JJ)"
              },
              "tribunal": {
                "type": "string",
                "description": "Tribunal qui a rendu le jugement"
              },
              "jugement": {
                "type": "string",
                "description": "Nature du jugement (présent si disponible)"
              }
            }
          }
        },
        "a_fusionne": {
          "type": "boolean",
          "description": "La société a participé à une fusion."
        },
        "nb_modifications_capital": {
          "type": "integer"
        },
        "derniere_augmentation_capital_date": {
          "type": "string",
          "format": "date"
        },
        "nb_transferts_siege": {
          "type": "integer"
        },
        "nb_changements_denomination": {
          "type": "integer"
        },
        "est_societe_mission": {
          "type": "boolean"
        },
        "est_ess": {
          "type": "boolean",
          "description": "Société de l'économie sociale et solidaire"
        },
        "reconstitution_capitaux_propres": {
          "type": "boolean",
          "description": "Capitaux propres devenus inférieurs à la moitié du capital social, publié au registre."
        },
        "dernier_depot_date": {
          "type": "string",
          "format": "date",
          "description": "Date du dernier dépôt de comptes"
        },
        "nb_depots_comptes": {
          "type": "integer",
          "description": "Nombre de dépôts de comptes connus"
        }
      }
    },
    "cessions": {
      "type": "object",
      "description": "Cessions de fonds de commerce publiées au BODACC où la société est partie.",
      "properties": {
        "total": {
          "type": "integer"
        },
        "derniere_date": {
          "type": "string",
          "format": "date"
        },
        "historique": {
          "type": "array",
          "description": "Les 20 plus récentes, par date décroissante",
          "items": {
            "type": "object",
            "properties": {
              "date": {
                "type": "string",
                "format": "date",
                "description": "Date de parution"
              },
              "type": {
                "type": "string"
              },
              "cedant_nom": {
                "type": "string"
              },
              "cedant_siren": {
                "type": "string"
              },
              "cessionnaire_nom": {
                "type": "string"
              },
              "cessionnaire_siren": {
                "type": "string"
              },
              "activite": {
                "type": "string",
                "description": "Activité cédée"
              },
              "prix": {
                "type": "number",
                "description": "Prix de vente en euros"
              }
            }
          }
        }
      }
    },
    "marches_publics": {
      "type": "object",
      "description": "Marchés publics (données DECP) dont la société est titulaire.",
      "properties": {
        "nb_marches": {
          "type": "integer"
        },
        "montant_total": {
          "type": [
            "number",
            "null"
          ]
        },
        "dernier_marche_date": {
          "type": "string",
          "format": "date"
        },
        "types_marches": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "par_annee": {
          "type": "array",
          "description": "Agrégats par année, la plus récente d'abord",
          "items": {
            "type": "object",
            "properties": {
              "annee": {
                "type": "integer"
              },
              "nb_marches": {
                "type": "integer"
              },
              "nb_titulaire": {
                "type": "integer"
              },
              "nb_acheteur": {
                "type": "integer"
              },
              "montant_total": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "null quand la société est à la fois titulaire et acheteur dans l'année : additionner les deux rôles n'aurait pas de sens. Lire alors `montant_titulaire` et `montant_acheteur`."
              },
              "montant_titulaire": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "montant_acheteur": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "nb_montants_a_verifier": {
                "type": "integer",
                "description": "Marchés titulaires d'au moins 100 M€ : montant à vérifier (plafond d'accord-cadre ou valeur aberrante possibles)."
              },
              "types_marches": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "principaux_acheteurs": {
                "type": "array",
                "items": {}
              },
              "premiere_notification": {
                "type": "string",
                "format": "date"
              },
              "derniere_notification": {
                "type": "string",
                "format": "date"
              }
            }
          }
        }
      }
    },
    "subventions": {
      "type": "object",
      "description": "Subventions publiques reçues.",
      "properties": {
        "nb_subventions": {
          "type": "integer"
        },
        "montant_total": {
          "type": "number"
        },
        "derniere_date": {
          "type": "string",
          "format": "date"
        },
        "regions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "brevets": {
      "type": "object",
      "properties": {
        "nb_brevets": {
          "type": "integer"
        },
        "nb_brevets_actifs": {
          "type": "integer"
        }
      }
    },
    "salons": {
      "type": "object",
      "description": "Participations à des salons professionnels.",
      "properties": {
        "nb_participations": {
          "type": "integer"
        },
        "secteurs": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "dernier_salon_annee": {
          "type": "integer"
        }
      }
    }
  },
  "$defs": {
    "DirectorSummary": {
      "type": "object",
      "properties": {
        "type_personne": {
          "type": "string",
          "enum": [
            "PP",
            "PM"
          ],
          "description": "PP = personne physique, PM = personne morale"
        },
        "nom": {
          "type": "string"
        },
        "prenom": {
          "type": "string"
        },
        "role": {
          "type": "string"
        },
        "denomination_pm": {
          "type": "string",
          "description": "Dénomination si personne morale"
        },
        "siren_pm": {
          "type": "string",
          "description": "SIREN si personne morale"
        }
      }
    },
    "EstimationFinanciere": {
      "type": [
        "object",
        "null"
      ],
      "description": "ESTIMATION du chiffre d'affaires et de la rentabilité, à partir du bilan, pour les sociétés dont le compte de résultat est confidentiel. Null dès qu'un CA est publié pour l'exercice estimé ou un exercice postérieur. Ce n'est jamais un chiffre déposé : ne pas l'additionner à des CA publies.",
      "properties": {
        "nature": {
          "type": "string",
          "enum": [
            "estimation"
          ]
        },
        "exercice": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Exercice estimé (année de clôture)"
        },
        "chiffre_affaires": {
          "type": "object",
          "description": "Fourchette de CA en euros, arrondie au millier, qui contient le vrai CA 8 fois sur 10",
          "properties": {
            "min": {
              "type": "number"
            },
            "max": {
              "type": "number"
            }
          }
        },
        "confiance": {
          "type": "string",
          "enum": [
            "haute",
            "moyenne",
            "faible"
          ],
          "description": "Selon la richesse du bilan : erreur typique ~13 % (haute), 17-22 % (moyenne), 26-34 % (faible)"
        },
        "rentabilite": {
          "type": "object",
          "properties": {
            "tranche_marge_ebe": {
              "type": [
                "string",
                "null"
              ],
              "enum": [
                "deficit",
                "0-5",
                "5-15",
                ">15",
                null
              ],
              "description": "Tranche de marge d'EBE (EBE / CA, en %). Null si le modèle ne la fournit pas."
            },
            "probabilite_deficit": {
              "type": [
                "number",
                "null"
              ],
              "description": "Probabilité calibrée que l'EBE soit négatif (0 à 1). Null si le modèle ne la fournit pas."
            }
          }
        },
        "ebe": {
          "type": "object",
          "description": "Fourchette d'EBE en euros, arrondie au millier. Absente quand le modèle ne la publie pas pour cet exercice. Même nature que le CA estimé : jamais un chiffre déposé.",
          "properties": {
            "min": {
              "type": "number"
            },
            "max": {
              "type": "number"
            }
          }
        },
        "as_of": {
          "type": [
            "string",
            "null"
          ],
          "format": "date"
        },
        "model": {
          "type": "string"
        }
      }
    }
  }
}