{
	"info": {
		"_postman_id": "admin-platform-api-collection",
		"name": "Admin Platform API",
		"description": "Fleet43 Admin Platform - Full CRUD APIs for managing companies, users, vehicles, subscriptions, and sites.\n\n**Auth:** Sanctum Bearer Token\n**Role:** superadministrator\n\n**Setup:**\n1. Run the \"Login\" request first\n2. The token is auto-saved to the `admin_token` variable\n3. All other requests use it automatically",
		"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
	},
	"variable": [
		{
			"key": "base_url",
			"value": "http://localhost:8000/api/admin",
			"type": "string"
		},
		{
			"key": "admin_token",
			"value": "",
			"type": "string"
		},
		{
			"key": "company_id",
			"value": "1",
			"type": "string"
		},
		{
			"key": "user_id",
			"value": "1",
			"type": "string"
		},
		{
			"key": "vehicle_id",
			"value": "1",
			"type": "string"
		},
		{
			"key": "site_id",
			"value": "1",
			"type": "string"
		},
		{
			"key": "plan_id",
			"value": "1",
			"type": "string"
		}
	],
	"auth": {
		"type": "bearer",
		"bearer": [
			{
				"key": "token",
				"value": "{{admin_token}}",
				"type": "string"
			}
		]
	},
	"item": [
		{
			"name": "Auth",
			"item": [
				{
					"name": "Login",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"var jsonData = pm.response.json();",
									"if (jsonData.status && jsonData.data && jsonData.data.token) {",
									"    pm.collectionVariables.set('admin_token', jsonData.data.token);",
									"    console.log('Token saved successfully');",
									"}"
								],
								"type": "text/javascript"
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							},
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"email\": \"admin@fleet43.com\",\n    \"password\": \"password\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/auth/login",
							"host": ["{{base_url}}"],
							"path": ["auth", "login"]
						},
						"description": "Login as superadministrator. Token is auto-saved to `admin_token` variable."
					},
					"response": []
				},
				{
					"name": "Logout",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							}
						],
						"url": {
							"raw": "{{base_url}}/auth/logout",
							"host": ["{{base_url}}"],
							"path": ["auth", "logout"]
						},
						"description": "Revoke the current access token."
					},
					"response": []
				},
				{
					"name": "Me (Profile)",
					"request": {
						"method": "GET",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							}
						],
						"url": {
							"raw": "{{base_url}}/auth/me",
							"host": ["{{base_url}}"],
							"path": ["auth", "me"]
						},
						"description": "Get the authenticated admin's profile."
					},
					"response": []
				}
			],
			"description": "Authentication endpoints. Login is public, logout and me require a token."
		},
		{
			"name": "Dashboard",
			"item": [
				{
					"name": "Get Stats",
					"request": {
						"method": "GET",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							}
						],
						"url": {
							"raw": "{{base_url}}/dashboard/stats",
							"host": ["{{base_url}}"],
							"path": ["dashboard", "stats"]
						},
						"description": "Platform-wide statistics: companies, vehicles, users, subscriptions, sites, and plan distribution."
					},
					"response": []
				}
			],
			"description": "Dashboard overview and platform statistics."
		},
		{
			"name": "Companies",
			"item": [
				{
					"name": "List Companies",
					"request": {
						"method": "GET",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							}
						],
						"url": {
							"raw": "{{base_url}}/companies?per_page=15&order_by=created_at&order=DESC",
							"host": ["{{base_url}}"],
							"path": ["companies"],
							"query": [
								{
									"key": "per_page",
									"value": "15",
									"description": "Items per page (default: 15)"
								},
								{
									"key": "order_by",
									"value": "created_at",
									"description": "Sort field (default: created_at)"
								},
								{
									"key": "order",
									"value": "DESC",
									"description": "Sort direction: ASC or DESC"
								},
								{
									"key": "search",
									"value": "",
									"description": "Search by name, email, first_name, last_name, phone",
									"disabled": true
								},
								{
									"key": "status",
									"value": "1",
									"description": "Filter by status: 0=pending, 1=active, 2=disabled",
									"disabled": true
								},
								{
									"key": "subscription_plan_id",
									"value": "1",
									"description": "Filter by subscription plan ID",
									"disabled": true
								}
							]
						},
						"description": "Paginated list of companies with search and filters."
					},
					"response": []
				},
				{
					"name": "Show Company",
					"request": {
						"method": "GET",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							}
						],
						"url": {
							"raw": "{{base_url}}/companies/{{company_id}}",
							"host": ["{{base_url}}"],
							"path": ["companies", "{{company_id}}"]
						},
						"description": "Get full company details including related counts and subscription info."
					},
					"response": []
				},
				{
					"name": "Create Company",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							},
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"name\": \"Acme Corp\",\n    \"siret\": \"12345678901234\",\n    \"first_name\": \"John\",\n    \"last_name\": \"Doe\",\n    \"email\": \"john@acmecorp.com\",\n    \"phone\": \"0612345678\",\n    \"password\": \"password123\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/companies",
							"host": ["{{base_url}}"],
							"path": ["companies"]
						},
						"description": "Create a new company. Registers in auth service and creates default subscription."
					},
					"response": []
				},
				{
					"name": "Update Company",
					"request": {
						"method": "PUT",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							},
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"name\": \"Acme Corp Updated\",\n    \"first_name\": \"John\",\n    \"last_name\": \"Smith\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/companies/{{company_id}}",
							"host": ["{{base_url}}"],
							"path": ["companies", "{{company_id}}"]
						},
						"description": "Partial update of company fields."
					},
					"response": []
				},
				{
					"name": "Delete Company",
					"request": {
						"method": "DELETE",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							}
						],
						"url": {
							"raw": "{{base_url}}/companies/{{company_id}}",
							"host": ["{{base_url}}"],
							"path": ["companies", "{{company_id}}"]
						},
						"description": "Soft delete a company and all related data (vehicles, sites, employees, etc.)."
					},
					"response": []
				},
				{
					"name": "Restore Company",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							}
						],
						"url": {
							"raw": "{{base_url}}/companies/{{company_id}}/restore",
							"host": ["{{base_url}}"],
							"path": ["companies", "{{company_id}}", "restore"]
						},
						"description": "Restore a soft-deleted company and all related data."
					},
					"response": []
				},
				{
					"name": "Toggle Company Status",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							}
						],
						"url": {
							"raw": "{{base_url}}/companies/{{company_id}}/toggle-status",
							"host": ["{{base_url}}"],
							"path": ["companies", "{{company_id}}", "toggle-status"]
						},
						"description": "Toggle company between active and disabled status."
					},
					"response": []
				},
				{
					"name": "Impersonate Company",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							}
						],
						"url": {
							"raw": "{{base_url}}/companies/{{company_id}}/impersonate",
							"host": ["{{base_url}}"],
							"path": ["companies", "{{company_id}}", "impersonate"]
						},
						"description": "Generate an auth token for a company account (admin impersonation)."
					},
					"response": []
				}
			],
			"description": "Manage companies (Users with 'company' role)."
		},
		{
			"name": "Users",
			"item": [
				{
					"name": "List Users",
					"request": {
						"method": "GET",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							}
						],
						"url": {
							"raw": "{{base_url}}/users?per_page=15&order_by=created_at&order=DESC",
							"host": ["{{base_url}}"],
							"path": ["users"],
							"query": [
								{
									"key": "per_page",
									"value": "15"
								},
								{
									"key": "order_by",
									"value": "created_at"
								},
								{
									"key": "order",
									"value": "DESC"
								},
								{
									"key": "search",
									"value": "",
									"description": "Search by first_name, last_name, email, name, phone",
									"disabled": true
								},
								{
									"key": "role",
									"value": "company",
									"description": "Filter by role: company, driver, site-manager, company-client",
									"disabled": true
								},
								{
									"key": "status",
									"value": "1",
									"description": "Filter by status: 0=pending, 1=active, 2=disabled",
									"disabled": true
								},
								{
									"key": "company_id",
									"value": "1",
									"description": "Filter by parent company (user_id)",
									"disabled": true
								}
							]
						},
						"description": "Paginated list of all users with filters."
					},
					"response": []
				},
				{
					"name": "Show User",
					"request": {
						"method": "GET",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							}
						],
						"url": {
							"raw": "{{base_url}}/users/{{user_id}}",
							"host": ["{{base_url}}"],
							"path": ["users", "{{user_id}}"]
						},
						"description": "Get full user details."
					},
					"response": []
				},
				{
					"name": "Create User",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							},
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"email\": \"jane@example.com\",\n    \"phone\": \"0698765432\",\n    \"password\": \"password123\",\n    \"role\": \"driver\",\n    \"user_id\": 1,\n    \"status\": \"1\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/users",
							"host": ["{{base_url}}"],
							"path": ["users"]
						},
						"description": "Create a new user with a role. Roles: company, driver, site-manager, company-client."
					},
					"response": []
				},
				{
					"name": "Update User",
					"request": {
						"method": "PUT",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							},
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Updated\",\n    \"preferred_language\": \"fr\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/users/{{user_id}}",
							"host": ["{{base_url}}"],
							"path": ["users", "{{user_id}}"]
						},
						"description": "Partial update of user fields."
					},
					"response": []
				},
				{
					"name": "Delete User",
					"request": {
						"method": "DELETE",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							}
						],
						"url": {
							"raw": "{{base_url}}/users/{{user_id}}",
							"host": ["{{base_url}}"],
							"path": ["users", "{{user_id}}"]
						},
						"description": "Soft delete a user and revoke all tokens."
					},
					"response": []
				},
				{
					"name": "Toggle User Status",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							}
						],
						"url": {
							"raw": "{{base_url}}/users/{{user_id}}/toggle-status",
							"host": ["{{base_url}}"],
							"path": ["users", "{{user_id}}", "toggle-status"]
						},
						"description": "Toggle user between active and disabled status."
					},
					"response": []
				},
				{
					"name": "Verify Email",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							}
						],
						"url": {
							"raw": "{{base_url}}/users/{{user_id}}/verify-email",
							"host": ["{{base_url}}"],
							"path": ["users", "{{user_id}}", "verify-email"]
						},
						"description": "Force verify a user's email address."
					},
					"response": []
				},
				{
					"name": "Reset Password",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							},
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"password\": \"newpassword123\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/users/{{user_id}}/reset-password",
							"host": ["{{base_url}}"],
							"path": ["users", "{{user_id}}", "reset-password"]
						},
						"description": "Reset a user's password."
					},
					"response": []
				}
			],
			"description": "Manage all users across the platform."
		},
		{
			"name": "Vehicles",
			"item": [
				{
					"name": "List Vehicles",
					"request": {
						"method": "GET",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							}
						],
						"url": {
							"raw": "{{base_url}}/vehicles?per_page=15&order_by=created_at&order=DESC",
							"host": ["{{base_url}}"],
							"path": ["vehicles"],
							"query": [
								{
									"key": "per_page",
									"value": "15"
								},
								{
									"key": "order_by",
									"value": "created_at"
								},
								{
									"key": "order",
									"value": "DESC"
								},
								{
									"key": "search",
									"value": "",
									"description": "Search by numberplate, vin, mark, model",
									"disabled": true
								},
								{
									"key": "company_id",
									"value": "1",
									"description": "Filter by company (user_id)",
									"disabled": true
								},
								{
									"key": "connection_status",
									"value": "C",
									"description": "Filter: N=not connected, E=eligible, P=pending, C=connected",
									"disabled": true
								},
								{
									"key": "motor_type",
									"value": "diesel",
									"description": "Filter by motor/fuel type",
									"disabled": true
								},
								{
									"key": "status",
									"value": "",
									"description": "Filter by vehicle status",
									"disabled": true
								}
							]
						},
						"description": "Paginated list of all vehicles with filters."
					},
					"response": []
				},
				{
					"name": "Show Vehicle",
					"request": {
						"method": "GET",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							}
						],
						"url": {
							"raw": "{{base_url}}/vehicles/{{vehicle_id}}",
							"host": ["{{base_url}}"],
							"path": ["vehicles", "{{vehicle_id}}"]
						},
						"description": "Get full vehicle details including company, site, device, and driver."
					},
					"response": []
				},
				{
					"name": "Update Vehicle",
					"request": {
						"method": "PUT",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							},
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"numberplate\": \"AB-123-CD\",\n    \"mark\": \"Renault\",\n    \"model\": \"Zoe\",\n    \"motor_type\": \"electric\",\n    \"site_id\": 1,\n    \"driver_id\": null\n}"
						},
						"url": {
							"raw": "{{base_url}}/vehicles/{{vehicle_id}}",
							"host": ["{{base_url}}"],
							"path": ["vehicles", "{{vehicle_id}}"]
						},
						"description": "Partial update of vehicle fields."
					},
					"response": []
				},
				{
					"name": "Delete Vehicle",
					"request": {
						"method": "DELETE",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							}
						],
						"url": {
							"raw": "{{base_url}}/vehicles/{{vehicle_id}}",
							"host": ["{{base_url}}"],
							"path": ["vehicles", "{{vehicle_id}}"]
						},
						"description": "Soft delete a vehicle."
					},
					"response": []
				}
			],
			"description": "Manage all fleet vehicles across companies."
		},
		{
			"name": "Subscriptions",
			"item": [
				{
					"name": "List Subscriptions",
					"request": {
						"method": "GET",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							}
						],
						"url": {
							"raw": "{{base_url}}/subscriptions?per_page=15&order_by=created_at&order=DESC",
							"host": ["{{base_url}}"],
							"path": ["subscriptions"],
							"query": [
								{
									"key": "per_page",
									"value": "15"
								},
								{
									"key": "order_by",
									"value": "created_at"
								},
								{
									"key": "order",
									"value": "DESC"
								},
								{
									"key": "subscription_plan_id",
									"value": "1",
									"description": "Filter by plan ID",
									"disabled": true
								},
								{
									"key": "status",
									"value": "A",
									"description": "Filter by status (A=active)",
									"disabled": true
								},
								{
									"key": "is_trial",
									"value": "true",
									"description": "Filter trial subscriptions",
									"disabled": true
								}
							]
						},
						"description": "Paginated list of all subscriptions with filters."
					},
					"response": []
				},
				{
					"name": "List Plans",
					"request": {
						"method": "GET",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							}
						],
						"url": {
							"raw": "{{base_url}}/subscriptions/plans",
							"host": ["{{base_url}}"],
							"path": ["subscriptions", "plans"]
						},
						"description": "Get all subscription plans with features and company counts."
					},
					"response": []
				},
				{
					"name": "Create Plan",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							},
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"name\": \"enterprise\",\n    \"display_name\": \"Enterprise\",\n    \"display_name_fr\": \"Entreprise\",\n    \"display_name_en\": \"Enterprise\",\n    \"description\": \"Full-featured enterprise plan\",\n    \"original_price\": 99.99,\n    \"discounted_price\": 79.99,\n    \"discount_percentage\": 20,\n    \"billing_frequency\": \"monthly\",\n    \"is_active\": true,\n    \"is_popular\": false,\n    \"unlimited\": false,\n    \"display_order\": 3\n}"
						},
						"url": {
							"raw": "{{base_url}}/subscriptions/plans",
							"host": ["{{base_url}}"],
							"path": ["subscriptions", "plans"]
						},
						"description": "Create a new subscription plan."
					},
					"response": []
				},
				{
					"name": "Update Plan",
					"request": {
						"method": "PUT",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							},
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"display_name\": \"Enterprise Pro\",\n    \"original_price\": 149.99,\n    \"is_popular\": true\n}"
						},
						"url": {
							"raw": "{{base_url}}/subscriptions/plans/{{plan_id}}",
							"host": ["{{base_url}}"],
							"path": ["subscriptions", "plans", "{{plan_id}}"]
						},
						"description": "Partial update of a subscription plan."
					},
					"response": []
				},
				{
					"name": "Update Company Plan",
					"request": {
						"method": "PUT",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							},
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"subscription_plan_id\": 2\n}"
						},
						"url": {
							"raw": "{{base_url}}/subscriptions/{{company_id}}/plan",
							"host": ["{{base_url}}"],
							"path": ["subscriptions", "{{company_id}}", "plan"]
						},
						"description": "Change a company's subscription plan."
					},
					"response": []
				}
			],
			"description": "Manage subscriptions and subscription plans."
		},
		{
			"name": "Sites",
			"item": [
				{
					"name": "List Sites",
					"request": {
						"method": "GET",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							}
						],
						"url": {
							"raw": "{{base_url}}/sites?per_page=15&order_by=created_at&order=DESC",
							"host": ["{{base_url}}"],
							"path": ["sites"],
							"query": [
								{
									"key": "per_page",
									"value": "15"
								},
								{
									"key": "order_by",
									"value": "created_at"
								},
								{
									"key": "order",
									"value": "DESC"
								},
								{
									"key": "search",
									"value": "",
									"description": "Search by name, address, city",
									"disabled": true
								},
								{
									"key": "company_id",
									"value": "1",
									"description": "Filter by company (user_id)",
									"disabled": true
								}
							]
						},
						"description": "Paginated list of all sites with filters."
					},
					"response": []
				},
				{
					"name": "Show Site",
					"request": {
						"method": "GET",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							}
						],
						"url": {
							"raw": "{{base_url}}/sites/{{site_id}}",
							"host": ["{{base_url}}"],
							"path": ["sites", "{{site_id}}"]
						},
						"description": "Get full site details including company, manager, and parent site."
					},
					"response": []
				},
				{
					"name": "Update Site",
					"request": {
						"method": "PUT",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							},
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"name\": \"Paris HQ\",\n    \"address\": \"10 Rue de Rivoli\",\n    \"city\": \"Paris\",\n    \"postal_code\": \"75001\",\n    \"capacity\": 50,\n    \"manager_id\": 1\n}"
						},
						"url": {
							"raw": "{{base_url}}/sites/{{site_id}}",
							"host": ["{{base_url}}"],
							"path": ["sites", "{{site_id}}"]
						},
						"description": "Partial update of site fields."
					},
					"response": []
				},
				{
					"name": "Delete Site",
					"request": {
						"method": "DELETE",
						"header": [
							{
								"key": "Accept",
								"value": "application/json"
							}
						],
						"url": {
							"raw": "{{base_url}}/sites/{{site_id}}",
							"host": ["{{base_url}}"],
							"path": ["sites", "{{site_id}}"]
						},
						"description": "Soft delete a site."
					},
					"response": []
				}
			],
			"description": "Manage all sites/locations across companies."
		}
	]
}
