{
  "info": {
    "name": "Rapport TAI (FI-12) — Fleet",
    "description": "API for the **Taxe Annuelle Incitative (TAI)** report (code FI-12) — the LOM green-fleet incentive tax (loi 2025-127 art. 28 · CIBS L.421-132-x · BOI-AIS-MOB-10-30-40).\n\n**Setup**: set `{{token}}` to a valid auth.service bearer token (company user with `view_reports`; `create_reports` for download/generate writes). `{{base_url}}` defaults to prod (api.fleet.dadycar.fr) — switch to your dev host if needed.\n\n**FE model — generic everywhere except ONE bespoke page:**\n- *Generic* (standard report machinery): catalog, header, generate-config, preview, **exports** (`POST /download {format, exercice}`), generate/generations, schedules.\n- *Special*: the on-page rendering. The TAI page is NOT rows-of-cards, so render a dedicated component that consumes `GET /tai/console` (+ `GET /tai/vehicles` for pagination). The generic `/preview` is only a catalog aperçu.\n\n**Key behaviours:**\n- `console`: `{ meta, banner, calculation{…, detail{step1_ecart, step2_taux, step3_tarif}}, verdissement, kpis, exercices, declaration, vehicles (first 10), vehicles_meta }`. `meta.is_provisional` always true (PROVISOIRE state/watermark); `meta.is_projection` true for future exercices → `banner.projection_note` (PHEV-from-2027 note).\n- **Non assujettie ⇒ TAI 0**: `banner.subject=false` (taille flotte annuelle < seuil 100) → not liable, `calculation.tai_amount=0`.\n- `vehicles[].classification` ∈ `vfe` · `fec` · `non_vfe` · `a_completer` · `hors_champ`; `immobilisation:true` → ❄ marker.\n- `declaration.regime` (`reel_normal` | `rsi` | `unknown`) from company settings → render `declaration.guidance[regime]`. We do NOT télétransmet.\n- **Downloads are synchronous** → handle response as a **blob**. The modal's 3 documents = `format` pdf|xlsx|csv. PDF carries a PROVISOIRE watermark while provisional. CSV = data.gouv.fr etalab declaration (naf/cj need `companies:backfill-insee`).",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": { "type": "bearer", "bearer": [{ "key": "token", "value": "{{token}}", "type": "string" }] },
  "variable": [
    { "key": "base_url", "value": "https://api.fleet.dadycar.fr" },
    { "key": "token", "value": "" },
    { "key": "report_code", "value": "FI-12" },
    { "key": "exercice", "value": "2026" }
  ],
  "item": [
    {
      "name": "1 — Catalog & report (standard)",
      "item": [
        {
          "name": "Catalog (Fiscalité)",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "description": "Reports catalog filtered to the Fiscalité domain — FI-12 appears here like any report (is_new, formats pdf/xlsx/csv).",
            "url": {
              "raw": "{{base_url}}/api/v1/fleet/reports/catalog?domain=fiscalite",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "fleet", "reports", "catalog"],
              "query": [{ "key": "domain", "value": "fiscalite" }]
            }
          }
        },
        {
          "name": "Header",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "description": "Report card: title \"Taxe Annuelle Incitative (TAI)\", Fiscalité badge, enabled formats (pdf, xlsx, csv).",
            "url": { "raw": "{{base_url}}/api/v1/fleet/reports/{{report_code}}/header", "host": ["{{base_url}}"], "path": ["api", "v1", "fleet", "reports", "{{report_code}}", "header"] }
          }
        },
        {
          "name": "Generate config (filters)",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "description": "Filter schema. `data.fields` = [ exercice (6 options \"Exercice 2026 — cible 18 % · 4 000 €\"…), site_id ]. Same exercice options embedded in console.exercices.",
            "url": { "raw": "{{base_url}}/api/v1/fleet/reports/{{report_code}}/generate-config", "host": ["{{base_url}}"], "path": ["api", "v1", "fleet", "reports", "{{report_code}}", "generate-config"] }
          }
        },
        {
          "name": "Preview (catalog aperçu)",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "description": "Generic rows-of-cards aperçu for catalog browsing (kpi + table cards). The REAL page uses /tai/console. Append ?mock_data=1 for illustrative values.",
            "url": { "raw": "{{base_url}}/api/v1/fleet/reports/{{report_code}}/preview", "host": ["{{base_url}}"], "path": ["api", "v1", "fleet", "reports", "{{report_code}}", "preview"] }
          }
        }
      ]
    },
    {
      "name": "2 — TAI console (NEW — the bespoke page)",
      "item": [
        {
          "name": "Console — current exercice",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "description": "Full TAI page payload: banner (assujettissement, registre, taille flotte annuelle, SIREN, status badge), calculation (formula + détail 4 steps), verdissement gauge, 4 KPIs, exercices dropdown (6), declaration block, first 10 classified vehicles + vehicles_meta. Refetch on exercice/site change.",
            "url": {
              "raw": "{{base_url}}/api/v1/fleet/reports/{{report_code}}/tai/console?exercice={{exercice}}&site_id=all",
              "host": ["{{base_url}}"], "path": ["api", "v1", "fleet", "reports", "{{report_code}}", "tai", "console"],
              "query": [{ "key": "exercice", "value": "{{exercice}}" }, { "key": "site_id", "value": "all" }]
            }
          }
        },
        {
          "name": "Console — 2025 (barème 15% / 2 000 €)",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "description": "2025 = period 1 mars → 31 déc, cible 15 %, tarif 2 000 €. If taille flotte annuelle < seuil 100 → banner.subject=false, calculation.tai_amount=0.",
            "url": {
              "raw": "{{base_url}}/api/v1/fleet/reports/{{report_code}}/tai/console?exercice=2025&site_id=all",
              "host": ["{{base_url}}"], "path": ["api", "v1", "fleet", "reports", "{{report_code}}", "tai", "console"],
              "query": [{ "key": "exercice", "value": "2025" }, { "key": "site_id", "value": "all" }]
            }
          }
        },
        {
          "name": "Console — 2027 (projection + PHEV cutoff)",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "description": "Future exercise → meta.is_projection=true + banner.projection_note (\"… PHEV ne sont plus considérés comme VFE à compter de 2027.\"). Cible 25 %, tarif 5 000 €.",
            "url": {
              "raw": "{{base_url}}/api/v1/fleet/reports/{{report_code}}/tai/console?exercice=2027&site_id=all",
              "host": ["{{base_url}}"], "path": ["api", "v1", "fleet", "reports", "{{report_code}}", "tai", "console"],
              "query": [{ "key": "exercice", "value": "2027" }, { "key": "site_id", "value": "all" }]
            }
          }
        },
        {
          "name": "Vehicles — paginated table",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "description": "Classified table (the prototype's 10/page grid). data[] rows: immatriculation, energie, co2_wltp, categorie, jours, immobilisation, veh_an, classification(+label), coeff, pondere. meta: page, per_page, total, last_page, to_complete.",
            "url": {
              "raw": "{{base_url}}/api/v1/fleet/reports/{{report_code}}/tai/vehicles?exercice={{exercice}}&site_id=all&page=1&per_page=10",
              "host": ["{{base_url}}"], "path": ["api", "v1", "fleet", "reports", "{{report_code}}", "tai", "vehicles"],
              "query": [{ "key": "exercice", "value": "{{exercice}}" }, { "key": "site_id", "value": "all" }, { "key": "page", "value": "1" }, { "key": "per_page", "value": "10" }]
            }
          }
        },
        {
          "name": "Vehicles — only à compléter",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "description": "Rows missing énergie/CO₂ (classification=a_completer) — drives the \"N à compléter\" badge + provisional status.",
            "url": {
              "raw": "{{base_url}}/api/v1/fleet/reports/{{report_code}}/tai/vehicles?exercice={{exercice}}&only_incomplete=true",
              "host": ["{{base_url}}"], "path": ["api", "v1", "fleet", "reports", "{{report_code}}", "tai", "vehicles"],
              "query": [{ "key": "exercice", "value": "{{exercice}}" }, { "key": "only_incomplete", "value": "true" }]
            }
          }
        }
      ]
    },
    {
      "name": "3 — Déclarer & exporter",
      "item": [
        {
          "name": "Download PDF — Fiche 2854-FC-SD",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "description": "Synchronous generate-and-download → PDF attachment (handle as blob). PROVISOIRE watermark while provisional. Requires create_reports.",
            "body": { "mode": "raw", "raw": "{\n  \"format\": \"pdf\",\n  \"exercice\": {{exercice}},\n  \"site_id\": \"all\"\n}" },
            "url": { "raw": "{{base_url}}/api/v1/fleet/reports/{{report_code}}/download", "host": ["{{base_url}}"], "path": ["api", "v1", "fleet", "reports", "{{report_code}}", "download"] }
          }
        },
        {
          "name": "Download XLSX — État récapitulatif",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "description": "XLSX, 2 sheets (Récapitulatif du calcul + Détail par véhicule pondéré). Handle as blob.",
            "body": { "mode": "raw", "raw": "{\n  \"format\": \"xlsx\",\n  \"exercice\": {{exercice}},\n  \"site_id\": \"all\"\n}" },
            "url": { "raw": "{{base_url}}/api/v1/fleet/reports/{{report_code}}/download", "host": ["{{base_url}}"], "path": ["api", "v1", "fleet", "reports", "{{report_code}}", "download"] }
          }
        },
        {
          "name": "Download CSV — Déclaration data.gouv.fr",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "description": "CSV verdissement declaration (etalab schema, header + aggregate row) — upload-ready to data.gouv.fr. Same content as FI-08. naf/cj come from INSEE backfill. Handle as blob.",
            "body": { "mode": "raw", "raw": "{\n  \"format\": \"csv\",\n  \"exercice\": {{exercice}},\n  \"site_id\": \"all\"\n}" },
            "url": { "raw": "{{base_url}}/api/v1/fleet/reports/{{report_code}}/download", "host": ["{{base_url}}"], "path": ["api", "v1", "fleet", "reports", "{{report_code}}", "download"] }
          }
        },
        {
          "name": "Generate (async) — optional",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "description": "Queues a generation (returns a generation row). Poll \"Generations history\" until status=done then use download_path. Use the synchronous /download above unless you need async.",
            "body": { "mode": "raw", "raw": "{\n  \"format\": \"pdf\",\n  \"exercice\": {{exercice}},\n  \"site_id\": \"all\"\n}" },
            "url": { "raw": "{{base_url}}/api/v1/fleet/reports/{{report_code}}/generate", "host": ["{{base_url}}"], "path": ["api", "v1", "fleet", "reports", "{{report_code}}", "generate"] }
          }
        },
        {
          "name": "Generations history",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "description": "Async generation history (optional filters: format, status, user_id).",
            "url": { "raw": "{{base_url}}/api/v1/fleet/reports/{{report_code}}/generations", "host": ["{{base_url}}"], "path": ["api", "v1", "fleet", "reports", "{{report_code}}", "generations"] }
          }
        }
      ]
    },
    {
      "name": "4 — Scheduling (standard)",
      "item": [
        {
          "name": "Schedules (list)",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "description": "Existing schedules for the current user (one per entreprise). Standard report scheduling — no TAI specifics.",
            "url": { "raw": "{{base_url}}/api/v1/fleet/reports/{{report_code}}/schedules", "host": ["{{base_url}}"], "path": ["api", "v1", "fleet", "reports", "{{report_code}}", "schedules"] }
          }
        },
        {
          "name": "Schedule options",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "description": "Select options for the schedule form: companies, frequencies, periods, enabled formats.",
            "url": { "raw": "{{base_url}}/api/v1/fleet/reports/{{report_code}}/schedules/options", "host": ["{{base_url}}"], "path": ["api", "v1", "fleet", "reports", "{{report_code}}", "schedules", "options"] }
          }
        }
      ]
    }
  ]
}
