{
 "openapi": "3.1.0",
 "info": {
  "title": "API de Chiffres publics",
  "version": "1.1.0",
  "summary": "Les chiffres officiels de l'argent public et des grands débats en France, chacun avec sa source, son lien et sa date.",
  "description": "Fichiers JSON statiques, sans clé ni inscription, lisibles depuis n'importe quel site. Dans la v1, aucun champ n'est retiré ni renommé et aucun point d'accès ne disparaît ; de nouveaux champs ou points d'accès peuvent s'ajouter. Un changement incompatible ouvrirait /api/v2/, annoncé ici, et la v1 resterait servie au moins douze mois.",
  "license": {
   "name": "CC BY 4.0",
   "identifier": "CC-BY-4.0"
  },
  "contact": {
   "email": "contact@chiffrespublics.fr"
  }
 },
 "servers": [
  {
   "url": "https://chiffrespublics.fr/api/v1",
   "description": "API en ligne"
  }
 ],
 "security": [],
 "tags": [
  {
   "name": "Sommaire",
   "description": "Sommaire, versions et description."
  },
  {
   "name": "Comptes publics",
   "description": "Dépenses et recettes publiques par catégorie (Eurostat, Insee)."
  },
  {
   "name": "Grands débats",
   "description": "Les chiffres relus de chaque grand débat."
  },
  {
   "name": "Chiffres",
   "description": "Tous les chiffres publiés."
  }
 ],
 "paths": {
  "/index.json": {
   "get": {
    "operationId": "sommaire",
    "summary": "Sommaire de l'API",
    "tags": [
     "Sommaire"
    ],
    "responses": {
     "200": {
      "description": "Le sommaire.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Index"
        }
       }
      }
     },
     "404": {
      "description": "Fichier inconnu : le serveur renvoie une page d'erreur HTML."
     }
    }
   }
  },
  "/dernieres-donnees.json": {
   "get": {
    "operationId": "dernieresDonnees",
    "summary": "Grands totaux de la dernière année",
    "tags": [
     "Comptes publics"
    ],
    "responses": {
     "200": {
      "description": "Les totaux.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/DernieresDonnees"
        }
       }
      }
     },
     "404": {
      "description": "Fichier inconnu : le serveur renvoie une page d'erreur HTML."
     }
    }
   }
  },
  "/depenses/{categorie}.json": {
   "get": {
    "operationId": "depense",
    "summary": "Une catégorie de dépense publique",
    "tags": [
     "Comptes publics"
    ],
    "parameters": [
     {
      "name": "categorie",
      "in": "path",
      "required": true,
      "description": "Nom de la catégorie.",
      "schema": {
       "type": "string",
       "enum": [
        "administration-dette",
        "culture-sport",
        "defense",
        "economie",
        "enseignement",
        "environnement",
        "logement-equipements",
        "protection-sociale",
        "retraites",
        "sante",
        "securite-justice"
       ]
      }
     }
    ],
    "responses": {
     "200": {
      "description": "La catégorie.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Categorie"
        }
       }
      }
     },
     "404": {
      "description": "Fichier inconnu : le serveur renvoie une page d'erreur HTML."
     }
    }
   }
  },
  "/recettes/{categorie}.json": {
   "get": {
    "operationId": "recette",
    "summary": "Une catégorie de recettes publiques",
    "tags": [
     "Comptes publics"
    ],
    "parameters": [
     {
      "name": "categorie",
      "in": "path",
      "required": true,
      "description": "Nom de la catégorie.",
      "schema": {
       "type": "string",
       "enum": [
        "autres-impots-patrimoine",
        "cotisations-sociales",
        "droits-de-succession",
        "impot-sur-le-revenu-csg",
        "impot-sur-les-societes",
        "impots-sur-la-production",
        "recettes-non-fiscales",
        "taxes-sur-les-produits",
        "tva"
       ]
      }
     }
    ],
    "responses": {
     "200": {
      "description": "La catégorie.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Categorie"
        }
       }
      }
     },
     "404": {
      "description": "Fichier inconnu : le serveur renvoie une page d'erreur HTML."
     }
    }
   }
  },
  "/grands-debats.json": {
   "get": {
    "operationId": "grandsDebats",
    "summary": "Liste des grands débats",
    "tags": [
     "Grands débats"
    ],
    "responses": {
     "200": {
      "description": "La liste.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GrandsDebats"
        }
       }
      }
     },
     "404": {
      "description": "Fichier inconnu : le serveur renvoie une page d'erreur HTML."
     }
    }
   }
  },
  "/grands-debats/{sujet}.json": {
   "get": {
    "operationId": "grandDebat",
    "summary": "Un grand débat et ses chiffres",
    "tags": [
     "Grands débats"
    ],
    "parameters": [
     {
      "name": "sujet",
      "in": "path",
      "required": true,
      "description": "Sujet du débat.",
      "schema": {
       "type": "string",
       "enum": [
        "aides-sociales",
        "chomage",
        "climat",
        "ecole-niveau",
        "etrangers-delinquance",
        "fraude",
        "immigration-contributions",
        "immigration-cout",
        "immigration-emploi",
        "immigration-flux",
        "immigration-population",
        "inegalites-riches",
        "insecurite",
        "logement",
        "pauvrete",
        "pouvoir-achat",
        "salaires",
        "sante-acces",
        "violences-sexuelles"
       ]
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Le débat.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GrandDebat"
        }
       }
      }
     },
     "404": {
      "description": "Fichier inconnu : le serveur renvoie une page d'erreur HTML."
     }
    }
   }
  },
  "/chiffres.json": {
   "get": {
    "operationId": "chiffres",
    "summary": "Tous les chiffres publiés",
    "tags": [
     "Chiffres"
    ],
    "responses": {
     "200": {
      "description": "Tous les chiffres.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Chiffres"
        }
       }
      }
     },
     "404": {
      "description": "Fichier inconnu : le serveur renvoie une page d'erreur HTML."
     }
    }
   }
  },
  "/debats/{nom}.json": {
   "get": {
    "operationId": "debatV0",
    "summary": "Chiffres débattus de la première version",
    "tags": [
     "Grands débats"
    ],
    "parameters": [
     {
      "name": "nom",
      "in": "path",
      "required": true,
      "description": "Nom du chiffre débattu.",
      "schema": {
       "type": "string",
       "enum": [
        "aide-a-l-ukraine",
        "aides-aux-entreprises",
        "niches-fiscales",
        "retraites",
        "taxe-zucman"
       ]
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Le chiffre débattu.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "404": {
      "description": "Fichier inconnu : le serveur renvoie une page d'erreur HTML."
     }
    }
   }
  },
  "/changelog.json": {
   "get": {
    "operationId": "changelog",
    "summary": "Journal des versions",
    "tags": [
     "Sommaire"
    ],
    "responses": {
     "200": {
      "description": "Les versions.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Changelog"
        }
       }
      }
     },
     "404": {
      "description": "Fichier inconnu : le serveur renvoie une page d'erreur HTML."
     }
    }
   }
  },
  "/openapi.json": {
   "get": {
    "operationId": "openapi",
    "summary": "Cette description OpenAPI",
    "tags": [
     "Sommaire"
    ],
    "responses": {
     "200": {
      "description": "La description.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "404": {
      "description": "Fichier inconnu : le serveur renvoie une page d'erreur HTML."
     }
    }
   }
  }
 },
 "components": {
  "schemas": {
   "Source": {
    "type": "object",
    "required": [
     "organisme",
     "url"
    ],
    "properties": {
     "id": {
      "type": [
       "string",
       "null"
      ]
     },
     "organisme": {
      "type": [
       "string",
       "null"
      ]
     },
     "titre": {
      "type": [
       "string",
       "null"
      ]
     },
     "url": {
      "type": [
       "string",
       "null"
      ]
     },
     "page": {
      "type": [
       "string",
       "null"
      ]
     },
     "publie": {
      "type": [
       "string",
       "null"
      ]
     }
    }
   },
   "Chiffre": {
    "type": "object",
    "required": [
     "id",
     "libelle",
     "valeur",
     "unite",
     "periode",
     "source"
    ],
    "properties": {
     "id": {
      "type": "string"
     },
     "libelle": {
      "type": "string"
     },
     "valeur": {
      "type": [
       "number",
       "integer",
       "string"
      ]
     },
     "unite": {
      "type": [
       "string",
       "null"
      ]
     },
     "periode": {
      "type": [
       "string",
       "null"
      ]
     },
     "nature": {
      "type": [
       "string",
       "null"
      ]
     },
     "statut_relecture": {
      "type": [
       "string",
       "null"
      ]
     },
     "calcul": {
      "type": [
       "string",
       "null"
      ]
     },
     "base_de_comparaison": {
      "type": [
       "string",
       "null"
      ]
     },
     "emplacement": {
      "type": [
       "string",
       "null"
      ]
     },
     "source": {
      "$ref": "#/components/schemas/Source"
     },
     "pages": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "api": {
      "type": [
       "string",
       "null"
      ]
     },
     "a_savoir": {
      "type": [
       "string",
       "null"
      ]
     },
     "mis_a_jour": {
      "type": [
       "string",
       "null"
      ]
     },
     "relu_le": {
      "type": [
       "string",
       "null"
      ]
     },
     "fichier_relu": {
      "type": [
       "object",
       "null"
      ],
      "properties": {
       "sha256": {
        "type": "string"
       },
       "octets": {
        "type": "integer"
       },
       "lu_le": {
        "type": "string"
       }
      }
     }
    }
   },
   "Index": {
    "type": "object",
    "required": [
     "version",
     "mise_a_jour",
     "licence",
     "endpoints"
    ],
    "properties": {
     "site": {
      "type": "string"
     },
     "version": {
      "type": "string"
     },
     "mise_a_jour": {
      "type": "string"
     },
     "licence": {
      "type": "string"
     },
     "documentation": {
      "type": "string"
     },
     "openapi": {
      "type": "string"
     },
     "changelog": {
      "type": "string"
     },
     "acces": {
      "type": "string"
     },
     "points_d_acces": {
      "type": "array",
      "items": {
       "type": "object",
       "properties": {
        "chemin": {
         "type": "string"
        },
        "description": {
         "type": "string"
        }
       }
      }
     },
     "endpoints": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    }
   },
   "DernieresDonnees": {
    "type": "object",
    "required": [
     "annee",
     "depenses_millions_euros",
     "recettes_millions_euros",
     "source"
    ],
    "properties": {
     "annee": {
      "type": [
       "integer",
       "string"
      ]
     },
     "depenses_millions_euros": {
      "type": [
       "number",
       "integer"
      ]
     },
     "recettes_millions_euros": {
      "type": [
       "number",
       "integer"
      ]
     },
     "solde_millions_euros": {
      "type": [
       "number",
       "integer"
      ]
     },
     "dette_pct_pib": {
      "type": [
       "number",
       "integer"
      ]
     },
     "pib_millions_euros": {
      "type": [
       "number",
       "integer"
      ]
     },
     "population_milliers": {
      "type": [
       "number",
       "integer"
      ]
     },
     "source": {
      "type": "object"
     },
     "page": {
      "type": "string"
     }
    }
   },
   "Categorie": {
    "type": "object",
    "required": [
     "categorie",
     "page",
     "eurostat"
    ],
    "properties": {
     "categorie": {
      "type": "string"
     },
     "question": {
      "type": "string"
     },
     "page": {
      "type": "string"
     },
     "eurostat": {
      "type": "object",
      "required": [
       "annee",
       "france_millions_euros",
       "france_pct_pib",
       "source"
      ],
      "properties": {
       "annee": {
        "type": [
         "integer",
         "string"
        ]
       },
       "france_millions_euros": {
        "type": [
         "number",
         "integer"
        ]
       },
       "france_pct_pib": {
        "type": [
         "number",
         "integer"
        ]
       },
       "france_euros_par_habitant": {
        "type": [
         "number",
         "integer"
        ]
       },
       "zone_euro_pct_pib": {
        "type": [
         "number",
         "integer",
         "null"
        ]
       },
       "tableau": {
        "type": "string"
       },
       "source": {
        "type": "object"
       },
       "pib": {
        "type": "object"
       },
       "sous_postes": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "code": {
           "type": "string"
          },
          "libelle": {
           "type": "string"
          },
          "france_millions_euros": {
           "type": [
            "number",
            "integer",
            "null"
           ]
          }
         }
        }
       }
      }
     },
     "chiffres_nationaux_verifies": {
      "type": "array",
      "items": {
       "type": "object"
      }
     },
     "derniere_valeur_insee": {}
    }
   },
   "GrandsDebats": {
    "type": "object",
    "required": [
     "nombre",
     "sujets"
    ],
    "properties": {
     "mise_a_jour": {
      "type": "string"
     },
     "nombre": {
      "type": "integer"
     },
     "sujets": {
      "type": "array",
      "items": {
       "type": "object",
       "required": [
        "sujet",
        "titre",
        "api"
       ],
       "properties": {
        "sujet": {
         "type": "string"
        },
        "titre": {
         "type": "string"
        },
        "question": {
         "type": "string"
        },
        "theme": {
         "type": [
          "string",
          "null"
         ]
        },
        "nombre_de_chiffres": {
         "type": "integer"
        },
        "page": {
         "type": "string"
        },
        "api": {
         "type": "string"
        },
        "series": {
         "type": "array",
         "items": {
          "type": "object",
          "properties": {
           "id": {
            "type": "string"
           },
           "libelle": {
            "type": "string"
           }
          }
         }
        }
       }
      }
     }
    }
   },
   "GrandDebat": {
    "type": "object",
    "required": [
     "id",
     "sujet",
     "titre",
     "question",
     "chiffres",
     "sources"
    ],
    "properties": {
     "id": {
      "type": "string"
     },
     "sujet": {
      "type": "string"
     },
     "titre": {
      "type": "string"
     },
     "question": {
      "type": "string"
     },
     "theme": {
      "type": [
       "string",
       "null"
      ]
     },
     "page": {
      "type": "string"
     },
     "mise_a_jour": {
      "type": [
       "string",
       "null"
      ]
     },
     "resume": {
      "type": [
       "string",
       "null"
      ]
     },
     "contexte": {
      "type": [
       "string",
       "null"
      ]
     },
     "nombre_de_chiffres": {
      "type": "integer"
     },
     "chiffres": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Chiffre"
      }
     },
     "tableaux": {
      "type": "array",
      "items": {
       "type": "object",
       "required": [
        "id",
        "titre",
        "colonnes",
        "lignes"
       ],
       "properties": {
        "id": {
         "type": "string"
        },
        "titre": {
         "type": "string"
        },
        "unite": {
         "type": [
          "string",
          "null"
         ]
        },
        "periode": {
         "type": [
          "string",
          "null"
         ]
        },
        "colonnes": {
         "type": "array"
        },
        "lignes": {
         "type": "array"
        },
        "note": {
         "type": [
          "string",
          "null"
         ]
        },
        "a_savoir": {
         "type": [
          "string",
          "null"
         ]
        },
        "sources": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/Source"
         }
        }
       }
      }
     },
     "series": {
      "type": "array",
      "items": {
       "type": "object",
       "required": [
        "id",
        "libelle",
        "points"
       ],
       "properties": {
        "id": {
         "type": "string"
        },
        "libelle": {
         "type": "string"
        },
        "unite": {
         "type": [
          "string",
          "null"
         ]
        },
        "frequence": {
         "type": [
          "string",
          "null"
         ]
        },
        "source": {
         "$ref": "#/components/schemas/Source"
        },
        "points": {
         "type": "array",
         "items": {
          "type": "object",
          "required": [
           "periode",
           "valeur"
          ],
          "properties": {
           "periode": {
            "type": "string"
           },
           "valeur": {
            "type": [
             "number",
             "integer",
             "null"
            ]
           }
          }
         }
        }
       }
      }
     },
     "sources": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Source"
      }
     }
    }
   },
   "Chiffres": {
    "type": "object",
    "required": [
     "nombre",
     "chiffres"
    ],
    "properties": {
     "mise_a_jour": {
      "type": "string"
     },
     "nombre": {
      "type": "integer"
     },
     "lecture": {
      "type": "string"
     },
     "chiffres": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Chiffre"
      }
     }
    }
   },
   "Changelog": {
    "type": "object",
    "required": [
     "version_actuelle",
     "versions"
    ],
    "properties": {
     "version_actuelle": {
      "type": "string"
     },
     "regle": {
      "type": "string"
     },
     "versions": {
      "type": "array",
      "items": {
       "type": "object",
       "required": [
        "version",
        "date",
        "changements"
       ],
       "properties": {
        "version": {
         "type": "string"
        },
        "date": {
         "type": "string"
        },
        "changements": {
         "type": "array",
         "items": {
          "type": "string"
         }
        }
       }
      }
     }
    }
   }
  }
 }
}