{
  "info": {
    "name": "AO & Cotations — Fleet",
    "description": "Appel d'Offres (RFQ) workflow + cotation OCR / manual entry + comparator + lessor catalog. Base URL: dev2.dadycar.fr. Set {{token}}; {{ao_id}}, {{cotation_id}}, {{vendor_id}}, {{commande_id}}, {{lessor_id}} per environment.",
    "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://dev2.dadycar.fr" },
    { "key": "token", "value": "" },
    { "key": "ao_id", "value": "1" },
    { "key": "cotation_id", "value": "1" },
    { "key": "vendor_id", "value": "1" },
    { "key": "commande_id", "value": "1" },
    { "key": "lessor_id", "value": "1" }
  ],
  "item": [
    {
      "name": "Appels d'Offres",
      "item": [
        {
          "name": "AO — List",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": {
              "raw": "{{base_url}}/api/v1/fleet/ao/list?per_page=10&sort_by=deadline&sort_dir=desc",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "fleet", "ao", "list"],
              "query": [
                { "key": "per_page", "value": "10" },
                { "key": "sort_by", "value": "deadline" },
                { "key": "sort_dir", "value": "desc" },
                { "key": "status_filter", "value": "sent", "disabled": true },
                { "key": "search_query", "value": "", "disabled": true }
              ]
            }
          }
        },
        { "name": "AO — KPIs",   "request": { "method": "GET", "header": [], "url": "{{base_url}}/api/v1/fleet/ao/kpis" } },
        { "name": "AO — Export", "request": { "method": "GET", "header": [], "url": "{{base_url}}/api/v1/fleet/ao/export" } },

        { "name": "AO — Available Commandes (picker)", "request": { "method": "GET", "header": [], "url": "{{base_url}}/api/v1/fleet/ao/available-commandes" } },
        { "name": "AO — Available Lessors (picker)",   "request": { "method": "GET", "header": [], "url": "{{base_url}}/api/v1/fleet/ao/available-lessors" } },

        {
          "name": "AO — Options (statuses / services / sorts / cotation-statuses / ocr-confidence)",
          "item": [
            { "name": "statuses",         "request": { "method": "GET", "header": [], "url": "{{base_url}}/api/v1/fleet/ao/options/statuses" } },
            { "name": "services",         "request": { "method": "GET", "header": [], "url": "{{base_url}}/api/v1/fleet/ao/options/services" } },
            { "name": "sorts",            "request": { "method": "GET", "header": [], "url": "{{base_url}}/api/v1/fleet/ao/options/sorts" } },
            { "name": "cotation-statuses","request": { "method": "GET", "header": [], "url": "{{base_url}}/api/v1/fleet/ao/options/cotation-statuses" } },
            { "name": "ocr-confidence",   "request": { "method": "GET", "header": [], "url": "{{base_url}}/api/v1/fleet/ao/options/ocr-confidence" } }
          ]
        },

        { "name": "AO — Show",             "request": { "method": "GET", "header": [], "url": "{{base_url}}/api/v1/fleet/ao/show/{{ao_id}}" } },
        { "name": "AO — Edit details",     "request": { "method": "GET", "header": [], "url": "{{base_url}}/api/v1/fleet/ao/{{ao_id}}/edit-details" } },
        { "name": "AO — List Cotations",   "request": { "method": "GET", "header": [], "url": "{{base_url}}/api/v1/fleet/ao/{{ao_id}}/cotations" } },
        { "name": "AO — Comparator",       "request": { "method": "GET", "header": [], "url": "{{base_url}}/api/v1/fleet/ao/{{ao_id}}/comparatif" } },
        { "name": "AO — PDF",              "request": { "method": "GET", "header": [], "url": "{{base_url}}/api/v1/fleet/ao/{{ao_id}}/pdf" } }
      ]
    },
    {
      "name": "AO — Brief lifecycle",
      "item": [
        {
          "name": "AO — Store (draft)",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"commande_id\": {{commande_id}},\n  \"services\": [\"maintenance\", \"assurance\", \"pneus\", \"assistance_24h\"],\n  \"lessor_ids\": [1, 2, 3, 4],\n  \"exigences_particulieres\": \"Livraison impérative avant le 15/07/2026.\",\n  \"deadline_response\": \"2026-06-15\"\n}" },
            "url": "{{base_url}}/api/v1/fleet/ao/store"
          }
        },
        {
          "name": "AO — Store-and-Send (one shot)",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"commande_id\": {{commande_id}},\n  \"services\": [\"maintenance\", \"assurance\", \"pneus\", \"assistance_24h\"],\n  \"lessor_ids\": [1, 2, 3, 4],\n  \"deadline_response\": \"2026-06-15\",\n  \"send\": true\n}" },
            "url": "{{base_url}}/api/v1/fleet/ao/store"
          }
        },
        {
          "name": "AO — Update (draft only)",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"services\": [\"maintenance\", \"assurance\"],\n  \"lessor_ids\": [1, 3],\n  \"exigences_particulieres\": \"…\",\n  \"deadline_response\": \"2026-06-20\"\n}" },
            "url": "{{base_url}}/api/v1/fleet/ao/update/{{ao_id}}"
          }
        },
        { "name": "AO — Send",        "request": { "method": "POST", "header": [], "url": "{{base_url}}/api/v1/fleet/ao/{{ao_id}}/send" } },
        {
          "name": "AO — Select Cotation",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"cotation_id\": {{cotation_id}}\n}" },
            "url": "{{base_url}}/api/v1/fleet/ao/{{ao_id}}/select-cotation"
          }
        },
        { "name": "AO — Issue BC",    "request": { "method": "POST", "header": [], "url": "{{base_url}}/api/v1/fleet/ao/{{ao_id}}/issue-bc" } },
        { "name": "AO — Cancel",      "request": { "method": "POST", "header": [], "url": "{{base_url}}/api/v1/fleet/ao/{{ao_id}}/cancel" } },
        { "name": "AO — Close",       "request": { "method": "POST", "header": [], "url": "{{base_url}}/api/v1/fleet/ao/{{ao_id}}/close" } },
        { "name": "AO — Delete",      "request": { "method": "DELETE", "header": [], "url": "{{base_url}}/api/v1/fleet/ao/delete/{{ao_id}}" } }
      ]
    },
    {
      "name": "Cotations",
      "item": [
        { "name": "Cotation — Show", "request": { "method": "GET", "header": [], "url": "{{base_url}}/api/v1/fleet/ao/cotations/{{cotation_id}}" } },
        {
          "name": "Cotation — Upload (OCR)",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "formdata",
              "formdata": [
                { "key": "vendor_id", "value": "{{vendor_id}}", "type": "text" },
                { "key": "file", "type": "file" },
                { "key": "loyer_mensuel_ht", "value": "748", "type": "text" },
                { "key": "duree_contrat_mois", "value": "48", "type": "text" },
                { "key": "kilometrage_annuel", "value": "25000", "type": "text" },
                { "key": "delai_livraison_jours", "value": "45", "type": "text" },
                { "key": "valeur_residuelle_pct", "value": "28", "type": "text" },
                { "key": "validite_offre", "value": "2026-06-19", "type": "text" },
                { "key": "maintenance_inclus", "value": "1", "type": "text" },
                { "key": "assurance_inclus", "value": "1", "type": "text" },
                { "key": "franchise_assurance", "value": "500", "type": "text" },
                { "key": "pneus_inclus", "value": "1", "type": "text" },
                { "key": "assistance_24h_inclus", "value": "1", "type": "text" },
                { "key": "vehicule_remplacement_inclus", "value": "0", "type": "text" },
                { "key": "ocr_confidence[loyer_mensuel_ht]", "value": "haute", "type": "text" },
                { "key": "ocr_confidence[delai_livraison_jours]", "value": "moyenne", "type": "text" },
                { "key": "ocr_confidence[vehicule_remplacement_inclus]", "value": "faible", "type": "text" }
              ]
            },
            "url": "{{base_url}}/api/v1/fleet/ao/{{ao_id}}/cotations/upload"
          }
        },
        {
          "name": "Cotation — Manual entry (Saisir)",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"vendor_id\": {{vendor_id}},\n  \"loyer_mensuel_ht\": 760,\n  \"duree_contrat_mois\": 48,\n  \"kilometrage_annuel\": 25000,\n  \"delai_livraison_jours\": 35,\n  \"valeur_residuelle_pct\": 27,\n  \"validite_offre\": \"2026-06-19\",\n  \"maintenance_inclus\": true,\n  \"assurance_inclus\": true,\n  \"franchise_assurance\": 600,\n  \"pneus_inclus\": true,\n  \"assistance_24h_inclus\": true,\n  \"vehicule_remplacement_inclus\": true,\n  \"comment\": \"Saisie manuelle\"\n}" },
            "url": "{{base_url}}/api/v1/fleet/ao/{{ao_id}}/cotations/manual"
          }
        },
        {
          "name": "Cotation — Verify (commit OCR)",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"loyer_mensuel_ht\": 748,\n  \"duree_contrat_mois\": 48,\n  \"kilometrage_annuel\": 25000,\n  \"delai_livraison_jours\": 45,\n  \"valeur_residuelle_pct\": 28,\n  \"validite_offre\": \"2026-06-19\",\n  \"maintenance_inclus\": true,\n  \"assurance_inclus\": true,\n  \"franchise_assurance\": 500,\n  \"pneus_inclus\": true,\n  \"assistance_24h_inclus\": true,\n  \"vehicule_remplacement_inclus\": false,\n  \"comment\": \"Validée\"\n}" },
            "url": "{{base_url}}/api/v1/fleet/ao/cotations/{{cotation_id}}/verify"
          }
        },
        {
          "name": "Cotation — Reject",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"comment\": \"Offre incomplète\"\n}" },
            "url": "{{base_url}}/api/v1/fleet/ao/cotations/{{cotation_id}}/reject"
          }
        },
        {
          "name": "Cotation — Auto-save / patch fields",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"vehicule_remplacement_inclus\": true\n}" },
            "url": "{{base_url}}/api/v1/fleet/ao/cotations/{{cotation_id}}/update"
          }
        }
      ]
    },
    {
      "name": "Loueurs (lessors / vendors classified as Renters)",
      "item": [
        {
          "name": "Loueurs — List",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/v1/fleet/loueurs/list?per_page=20&tab=actifs",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "fleet", "loueurs", "list"],
              "query": [
                { "key": "per_page", "value": "20" },
                { "key": "tab", "value": "actifs", "description": "tous | actifs | archives" },
                { "key": "search_query", "value": "", "disabled": true },
                { "key": "specialisations[0]", "value": "ve", "disabled": true }
              ]
            }
          }
        },
        { "name": "Loueurs — KPIs",                  "request": { "method": "GET", "header": [], "url": "{{base_url}}/api/v1/fleet/loueurs/kpis" } },
        { "name": "Loueurs — Specialisation options","request": { "method": "GET", "header": [], "url": "{{base_url}}/api/v1/fleet/loueurs/options/specialisations" } },
        { "name": "Loueurs — Show",                  "request": { "method": "GET", "header": [], "url": "{{base_url}}/api/v1/fleet/loueurs/show/{{lessor_id}}" } },
        {
          "name": "Loueurs — Store",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"Arval\",\n  \"email\": \"cotations@arval.fr\",\n  \"website\": \"arval.fr\",\n  \"domaines_email\": [\"arval.fr\", \"arval-bnp.com\"],\n  \"specialisations\": [\"generaliste\", \"ve\", \"premium\"],\n  \"avatar_color\": \"#1e40af\",\n  \"score_sla\": 88\n}" },
            "url": "{{base_url}}/api/v1/fleet/loueurs/store"
          }
        },
        {
          "name": "Loueurs — Update",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"score_sla\": 90,\n  \"specialisations\": [\"generaliste\", \"ve\"]\n}" },
            "url": "{{base_url}}/api/v1/fleet/loueurs/update/{{lessor_id}}"
          }
        },
        { "name": "Loueurs — Archive",   "request": { "method": "POST",   "header": [], "url": "{{base_url}}/api/v1/fleet/loueurs/{{lessor_id}}/archive" } },
        { "name": "Loueurs — Restore",   "request": { "method": "POST",   "header": [], "url": "{{base_url}}/api/v1/fleet/loueurs/{{lessor_id}}/restore" } },
        { "name": "Loueurs — Delete",    "request": { "method": "DELETE", "header": [], "url": "{{base_url}}/api/v1/fleet/loueurs/delete/{{lessor_id}}" } }
      ]
    }
  ]
}
