{
  "info": {
    "name": "Private Mode (Revamp) — Fleet",
    "description": "Settings → Private Mode revamp. Rules (reusable named schedules), Vehicles overview, and History. Base URL points to dev2.dadycar.fr. Set {{token}} to a valid auth.service bearer token (a company user with operational_parameters permissions: view for reads, edit for writes, delete for delete actions). All routes are under /api/v1/fleet/settings/private-mode.",
    "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": "rule_id", "value": "1" },
    { "key": "vehicle_id", "value": "1" }
  ],
  "item": [
    {
      "name": "Rules tab",
      "item": [
        {
          "name": "Rules — List",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": {
              "raw": "{{base_url}}/api/v1/fleet/settings/private-mode/rules?per_page=10&sort_by=created_at&sort_dir=desc",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "fleet", "settings", "private-mode", "rules"],
              "query": [
                { "key": "per_page", "value": "10" },
                { "key": "sort_by", "value": "created_at" },
                { "key": "sort_dir", "value": "desc" },
                { "key": "type", "value": "scheduled", "disabled": true },
                { "key": "is_active", "value": "true", "disabled": true },
                { "key": "search_query", "value": "", "disabled": true }
              ]
            }
          }
        },
        {
          "name": "Rule — Show",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": {
              "raw": "{{base_url}}/api/v1/fleet/settings/private-mode/rules/show/{{rule_id}}",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "fleet", "settings", "private-mode", "rules", "show", "{{rule_id}}"]
            }
          }
        },
        {
          "name": "Rule — Create (scheduled)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Accept", "value": "application/json" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Evening Hours\",\n  \"type\": \"scheduled\",\n  \"days_of_week\": [1, 2, 3, 4, 5],\n  \"start_time\": \"18:00\",\n  \"end_time\": \"06:00\",\n  \"specific_dates\": [],\n  \"is_active\": true,\n  \"vehicle_ids\": [{{vehicle_id}}]\n}"
            },
            "url": {
              "raw": "{{base_url}}/api/v1/fleet/settings/private-mode/rules/store",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "fleet", "settings", "private-mode", "rules", "store"]
            },
            "description": "type=scheduled requires start_time + end_time (H:i). days_of_week is optional (empty/omitted = applies every day; 0=Sunday..6=Saturday). For an automatic rule use: { \"name\": \"Weekends & Holidays\", \"type\": \"automatic\", \"is_active\": true, \"vehicle_ids\": [] } — days/times not required."
          }
        },
        {
          "name": "Rule — Update",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Accept", "value": "application/json" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Evening Hours (updated)\",\n  \"type\": \"scheduled\",\n  \"days_of_week\": [1, 2, 3, 4, 5, 6, 0],\n  \"start_time\": \"20:00\",\n  \"end_time\": \"07:00\",\n  \"is_active\": true\n}"
            },
            "url": {
              "raw": "{{base_url}}/api/v1/fleet/settings/private-mode/rules/update/{{rule_id}}",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "fleet", "settings", "private-mode", "rules", "update", "{{rule_id}}"]
            },
            "description": "All fields optional (sometimes). Pass vehicle_ids to replace the assigned set; omit to leave assignments unchanged."
          }
        },
        {
          "name": "Rule — Assign Vehicles (Nouvelle Configuration)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Accept", "value": "application/json" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"vehicle_ids\": [{{vehicle_id}}]\n}"
            },
            "url": {
              "raw": "{{base_url}}/api/v1/fleet/settings/private-mode/rules/{{rule_id}}/assign-vehicles",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "fleet", "settings", "private-mode", "rules", "{{rule_id}}", "assign-vehicles"]
            },
            "description": "Adds vehicles to the rule without detaching existing ones (syncWithoutDetaching)."
          }
        },
        {
          "name": "Rule — Remove Vehicle",
          "request": {
            "method": "DELETE",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": {
              "raw": "{{base_url}}/api/v1/fleet/settings/private-mode/rules/{{rule_id}}/vehicles/{{vehicle_id}}",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "fleet", "settings", "private-mode", "rules", "{{rule_id}}", "vehicles", "{{vehicle_id}}"]
            }
          }
        },
        {
          "name": "Rule — Delete",
          "request": {
            "method": "DELETE",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": {
              "raw": "{{base_url}}/api/v1/fleet/settings/private-mode/rules/delete/{{rule_id}}",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "fleet", "settings", "private-mode", "rules", "delete", "{{rule_id}}"]
            }
          }
        }
      ]
    },
    {
      "name": "Vehicles overview tab",
      "item": [
        {
          "name": "Vehicles — List",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": {
              "raw": "{{base_url}}/api/v1/fleet/settings/private-mode/vehicles?per_page=10",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "fleet", "settings", "private-mode", "vehicles"],
              "query": [
                { "key": "per_page", "value": "10" },
                { "key": "fonction", "value": "VF", "disabled": true },
                { "key": "driver_id", "value": "", "disabled": true },
                { "key": "site_id", "value": "", "disabled": true },
                { "key": "custom_status_id", "value": "", "disabled": true },
                { "key": "search_query", "value": "", "disabled": true }
              ]
            },
            "description": "Filter values come from the /vehicles/options/* endpoints (each returns {value,label}). fonction = vehicle_classification code (VF/VS/VU). status in the response is the company custom status object {id,label,color}."
          }
        },
        {
          "name": "Options — Fonctions",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": {
              "raw": "{{base_url}}/api/v1/fleet/settings/private-mode/vehicles/options/fonctions",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "fleet", "settings", "private-mode", "vehicles", "options", "fonctions"]
            },
            "description": "Returns [{ value, label }]. value is the vehicle_classification code (use it as the `fonction` filter param on the vehicles list)."
          }
        },
        {
          "name": "Options — Drivers",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": {
              "raw": "{{base_url}}/api/v1/fleet/settings/private-mode/vehicles/options/drivers",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "fleet", "settings", "private-mode", "vehicles", "options", "drivers"]
            },
            "description": "Returns [{ value, label }] — value is the driver user id (use as `driver_id` filter)."
          }
        },
        {
          "name": "Options — Sites",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": {
              "raw": "{{base_url}}/api/v1/fleet/settings/private-mode/vehicles/options/sites",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "fleet", "settings", "private-mode", "vehicles", "options", "sites"]
            },
            "description": "Returns [{ value, label }] — value is the site id (use as `site_id` filter)."
          }
        },
        {
          "name": "Options — Statuses",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": {
              "raw": "{{base_url}}/api/v1/fleet/settings/private-mode/vehicles/options/statuses",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "fleet", "settings", "private-mode", "vehicles", "options", "statuses"]
            },
            "description": "Returns [{ value, label, color }] — company custom statuses. value is the custom_status_id (use as `custom_status_id` filter)."
          }
        },
        {
          "name": "Vehicle — Assign Rule (Actions dropdown)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Accept", "value": "application/json" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"rule_id\": {{rule_id}}\n}"
            },
            "url": {
              "raw": "{{base_url}}/api/v1/fleet/settings/private-mode/vehicles/{{vehicle_id}}/assign-rule",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "fleet", "settings", "private-mode", "vehicles", "{{vehicle_id}}", "assign-rule"]
            }
          }
        }
      ]
    },
    {
      "name": "History tab",
      "item": [
        {
          "name": "History — List",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/json" }],
            "url": {
              "raw": "{{base_url}}/api/v1/fleet/settings/private-mode/history?per_page=10",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "fleet", "settings", "private-mode", "history"],
              "query": [
                { "key": "per_page", "value": "10" },
                { "key": "vehicle_id", "value": "", "disabled": true },
                { "key": "type", "value": "rule", "disabled": true }
              ]
            },
            "description": "type filter accepts: rule | automatic | manual."
          }
        }
      ]
    }
  ]
}
