{
	"info": {
		"_postman_id": "royal-enfield-workflow-api",
		"name": "Royal Enfield Workflow API",
		"description": "Complete API collection for Royal Enfield Workflow Management System with prefilled payloads and detailed comments.",
		"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
		"_exporter_id": "royal-enfield-api-v1"
	},
	"auth": {
		"type": "bearer",
		"bearer": [
			{
				"key": "token",
				"value": "{{accessToken}}",
				"type": "string"
			}
		]
	},
	"variable": [
		{
			"key": "baseUrl",
			"value": "http://localhost:3000/api/v1",
			"type": "string"
		},
		{
			"key": "accessToken",
			"value": "",
			"type": "string"
		}
	],
	"item": [
		{
			"name": "Health Check",
			"item": [
				{
					"name": "Health Check",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/health",
							"host": ["{{baseUrl}}"],
							"path": ["health"]
						},
						"description": "Check if the API service is running and healthy"
					}
				}
			]
		},
		{
			"name": "Authentication",
			"item": [
				{
					"name": "Login with Username/Password",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  // Okta username (email)\n  \"username\": \"user@royalenfield.com\",\n  \n  // Okta password\n  \"password\": \"YourOktaPassword123\"\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/auth/login",
							"host": ["{{baseUrl}}"],
							"path": ["auth", "login"]
						},
						"description": "Authenticate with username (Okta email) and password.\n\nFlow:\n1. Validates credentials against Okta\n2. If user exists in Okta but not in our DB: creates user automatically\n3. Returns JWT access token and refresh token\n\nPerfect for:\n- Postman testing\n- Mobile apps\n- API clients\n- Development/testing\n\nResponse includes:\n- User profile (created if didn't exist)\n- Access token (24hr validity)\n- Refresh token (7 days validity)"
					},
					"response": [],
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"// Auto-save access token for subsequent requests",
									"if (pm.response.code === 200) {",
									"    var jsonData = pm.response.json();",
									"    if (jsonData.data && jsonData.data.accessToken) {",
									"        pm.collectionVariables.set('accessToken', jsonData.data.accessToken);",
									"        console.log('✅ Access token saved to collection variable');",
									"    }",
									"}"
								],
								"type": "text/javascript"
							}
						}
					]
				},
				{
					"name": "Token Exchange (Development)",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  // Email of the user for development token exchange\n  \"email\": \"user@example.com\",\n  \n  // User's full name\n  \"name\": \"John Doe\"\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/auth/token-exchange",
							"host": ["{{baseUrl}}"],
							"path": ["auth", "token-exchange"]
						},
						"description": "Development endpoint to exchange user credentials for JWT token (localhost only)"
					}
				},
				{
					"name": "SSO Callback",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  // Okta authorization code received from SSO redirect\n  \"code\": \"authorization_code_from_okta\",\n  \n  // State parameter for CSRF protection\n  \"state\": \"random_state_string\"\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/auth/sso-callback",
							"host": ["{{baseUrl}}"],
							"path": ["auth", "sso-callback"]
						},
						"description": "Handle SSO callback from Okta and exchange authorization code for tokens"
					}
				},
				{
					"name": "Refresh Token",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  // Refresh token received during login\n  \"refreshToken\": \"your_refresh_token_here\"\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/auth/refresh",
							"host": ["{{baseUrl}}"],
							"path": ["auth", "refresh"]
						},
						"description": "Get a new access token using refresh token"
					}
				},
				{
					"name": "Get Current User",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/auth/me",
							"host": ["{{baseUrl}}"],
							"path": ["auth", "me"]
						},
						"description": "Get current authenticated user details"
					}
				},
				{
					"name": "Validate Token",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/auth/validate",
							"host": ["{{baseUrl}}"],
							"path": ["auth", "validate"]
						},
						"description": "Validate current access token"
					}
				},
				{
					"name": "Logout",
					"request": {
						"method": "POST",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/auth/logout",
							"host": ["{{baseUrl}}"],
							"path": ["auth", "logout"]
						},
						"description": "Logout current user and clear tokens"
					}
				}
			]
		},
		{
			"name": "Configuration",
			"item": [
				{
					"name": "Get Public Config",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/config",
							"host": ["{{baseUrl}}"],
							"path": ["config"]
						},
						"description": "Get public system configuration (no auth required)"
					}
				}
			]
		},
		{
			"name": "Users",
			"item": [
				{
					"name": "Search Users",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/users/search?q=john",
							"host": ["{{baseUrl}}"],
							"path": ["users", "search"],
							"query": [
								{
									"key": "q",
									"value": "john",
									"description": "Search query - can search by email or name"
								}
							]
						},
						"description": "Search for users by email or name"
					}
				},
				{
					"name": "Ensure User Exists",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  // User's email address\n  \"email\": \"user@example.com\",\n  \n  // User's full name\n  \"name\": \"John Doe\"\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/users/ensure",
							"host": ["{{baseUrl}}"],
							"path": ["users", "ensure"]
						},
						"description": "Ensure user exists in database - creates if not exists"
					}
				},
				{
					"name": "Get Public Configurations",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/users/configurations",
							"host": ["{{baseUrl}}"],
							"path": ["users", "configurations"]
						},
						"description": "Get public configurations (document policy, workflow sharing, TAT settings)"
					}
				}
			]
		},
		{
			"name": "Workflows",
			"item": [
				{
					"name": "List All Workflows",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/workflows",
							"host": ["{{baseUrl}}"],
							"path": ["workflows"]
						},
						"description": "Get list of all workflows accessible to current user"
					}
				},
				{
					"name": "List My Requests (DEPRECATED)",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/workflows/my",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", "my"]
						},
						"description": "DEPRECATED - Use /participant-requests instead. Get workflows where user is participant"
					}
				},
				{
					"name": "List Participant Requests",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/workflows/participant-requests?page=1&limit=10",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", "participant-requests"],
							"query": [
								{
									"key": "page",
									"value": "1",
									"description": "Page number"
								},
								{
									"key": "limit",
									"value": "10",
									"description": "Items per page"
								},
								{
									"key": "status",
									"value": "",
									"description": "Filter by status (optional)",
									"disabled": true
								},
								{
									"key": "priority",
									"value": "",
									"description": "Filter by priority (optional)",
									"disabled": true
								}
							]
						},
						"description": "Get all requests where user is initiator OR participant (approver/spectator) - for regular users' All Requests page"
					}
				},
				{
					"name": "List My Initiated Requests",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/workflows/my-initiated?page=1&limit=10",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", "my-initiated"],
							"query": [
								{
									"key": "page",
									"value": "1",
									"description": "Page number"
								},
								{
									"key": "limit",
									"value": "10",
									"description": "Items per page"
								},
								{
									"key": "status",
									"value": "",
									"description": "Filter by status (optional)",
									"disabled": true
								}
							]
						},
						"description": "Get only requests where current user is the initiator - for My Requests page"
					}
				},
				{
					"name": "List Open For Me",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/workflows/open-for-me",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", "open-for-me"]
						},
						"description": "Get workflows that are open and require action from current user"
					}
				},
				{
					"name": "List Closed By Me",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/workflows/closed-by-me",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", "closed-by-me"]
						},
						"description": "Get workflows closed by current user"
					}
				},
				{
					"name": "Create Workflow (JSON) - Simplified",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"templateType\": \"CUSTOM\",\n  \"title\": \"Purchase Order Approval for Office Equipment\",\n  \"description\": \"Approval needed for purchasing new office equipment including laptops, monitors, and office furniture. Total budget: $50,000\",\n  \"priority\": \"STANDARD\",\n  \"approvalLevels\": [\n    {\n      \"email\": \"manager@royalenfield.com\",\n      \"tatHours\": 24\n    },\n    {\n      \"email\": \"director@royalenfield.com\",\n      \"tatHours\": 48\n    },\n    {\n      \"email\": \"cfo@royalenfield.com\",\n      \"tatHours\": 72\n    }\n  ],\n  \"spectators\": [\n    {\n      \"email\": \"hr@royalenfield.com\"\n    },\n    {\n      \"email\": \"finance@royalenfield.com\"\n    }\n  ]\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/workflows",
							"host": ["{{baseUrl}}"],
							"path": ["workflows"]
						},
						"description": "Create new workflow request with JSON payload. Backend automatically:\n- Finds/creates users from Okta/AD\n- Generates level names from designation/department\n- Auto-detects final approver (last level)\n- Sets proper permissions\n\nOnly email and tatHours required per approver!"
					}
				},
				{
					"name": "Create Workflow (Multipart with Files) - Simplified",
					"request": {
						"method": "POST",
						"header": [],
						"body": {
							"mode": "formdata",
							"formdata": [
								{
									"key": "payload",
									"value": "{\"templateType\":\"CUSTOM\",\"title\":\"Purchase Order Approval with Documents\",\"description\":\"Approval needed for office equipment purchase with supporting documents\",\"priority\":\"STANDARD\",\"approvalLevels\":[{\"email\":\"manager@royalenfield.com\",\"tatHours\":24},{\"email\":\"director@royalenfield.com\",\"tatHours\":48}],\"spectators\":[{\"email\":\"hr@royalenfield.com\"}]}",
									"type": "text",
									"description": "JSON payload with simplified format (email + tatHours only)"
								},
								{
									"key": "files",
									"type": "file",
									"src": [],
									"description": "Upload files (multiple files supported)"
								},
								{
									"key": "category",
									"value": "SUPPORTING",
									"type": "text",
									"description": "Document category: SUPPORTING | APPROVAL | REFERENCE | FINAL | OTHER"
								}
							]
						},
						"url": {
							"raw": "{{baseUrl}}/workflows/multipart",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", "multipart"]
						},
						"description": "Create workflow with file uploads. Backend automatically:\n- Finds/creates users from Okta/AD\n- Generates level names\n- Auto-detects final approver\n- Uploads and attaches documents\n\nOnly email and tatHours required per approver!"
					}
				},
				{
					"name": "Get Workflow Details",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/workflows/:id",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", ":id"],
							"variable": [
								{
									"key": "id",
									"value": "REQ-2024-0001",
									"description": "Workflow ID or Request Number"
								}
							]
						},
						"description": "Get basic workflow details by ID or request number"
					}
				},
				{
					"name": "Get Workflow Full Details",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/workflows/:id/details",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", ":id", "details"],
							"variable": [
								{
									"key": "id",
									"value": "REQ-2024-0001",
									"description": "Workflow ID or Request Number"
								}
							]
						},
						"description": "Get full workflow details with all related data (approvals, documents, participants)"
					}
				},
				{
					"name": "Update Workflow (JSON)",
					"request": {
						"method": "PUT",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  // Updated request title (optional)\n  \"requestTitle\": \"Updated Purchase Order for Office Equipment\",\n  \n  // Updated description (optional)\n  \"requestDescription\": \"Modified requirements for office equipment purchase\",\n  \n  // Updated priority (optional)\n  \"priority\": \"EXPRESS\",\n  \n  // Updated department (optional)\n  \"requestingDepartment\": \"IT\"\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/workflows/:id",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", ":id"],
							"variable": [
								{
									"key": "id",
									"value": "REQ-2024-0001"
								}
							]
						},
						"description": "Update workflow details (only allowed in DRAFT status)"
					}
				},
				{
					"name": "Update Workflow (Multipart)",
					"request": {
						"method": "PUT",
						"header": [],
						"body": {
							"mode": "formdata",
							"formdata": [
								{
									"key": "requestTitle",
									"value": "Updated Title",
									"type": "text"
								},
								{
									"key": "requestDescription",
									"value": "Updated Description",
									"type": "text"
								},
								{
									"key": "files",
									"type": "file",
									"src": []
								}
							]
						},
						"url": {
							"raw": "{{baseUrl}}/workflows/:id/multipart",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", ":id", "multipart"],
							"variable": [
								{
									"key": "id",
									"value": "REQ-2024-0001"
								}
							]
						},
						"description": "Update workflow with file uploads"
					}
				},
				{
					"name": "Submit Workflow",
					"request": {
						"method": "PATCH",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/workflows/:id/submit",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", ":id", "submit"],
							"variable": [
								{
									"key": "id",
									"value": "REQ-2024-0001"
								}
							]
						},
						"description": "Submit workflow for approval (changes status from DRAFT to OPEN)"
					}
				},
				{
					"name": "Add Approver at Level - Simplified",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"email\": \"newapprover@royalenfield.com\",\n  \"tatHours\": 24,\n  \"level\": 2\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/workflows/:id/approvers/at-level",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", ":id", "approvers", "at-level"],
							"variable": [
								{
									"key": "id",
									"value": "REQ-2024-0001",
									"description": "Workflow ID or Request Number"
								}
							]
						},
						"description": "Add a new approver at specific level. Backend automatically:\n- Finds/creates user from Okta/AD\n- Generates level name from designation/department\n- Shifts existing levels if needed\n- Updates final approver flag\n- Sends notifications\n\nOnly email, tatHours, and level required!"
					}
				},
				{
					"name": "Add Spectator - Simplified",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"email\": \"spectator@royalenfield.com\"\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/workflows/:id/participants/spectator",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", ":id", "participants", "spectator"],
							"variable": [
								{
									"key": "id",
									"value": "REQ-2024-0001",
									"description": "Workflow ID or Request Number"
								}
							]
						},
						"description": "Add a spectator to request. Backend automatically:\n- Finds/creates user from Okta/AD\n- Sets spectator permissions (view + comment, no download)\n- Sends notification\n\nOnly email required!"
					}
				},
				{
					"name": "Get Workflow Activity",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/workflows/:id/activity",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", ":id", "activity"],
							"variable": [
								{
									"key": "id",
									"value": "REQ-2024-0001"
								}
							]
						},
						"description": "Get activity log/history for a workflow"
					}
				},
				{
					"name": "Pause Workflow",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  // Reason for pausing the workflow\n  \"reason\": \"Waiting for additional documentation from vendor\",\n  \n  // Expected resume date (optional)\n  \"expectedResumeDate\": \"2024-12-30T00:00:00Z\"\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/workflows/:id/pause",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", ":id", "pause"],
							"variable": [
								{
									"key": "id",
									"value": "REQ-2024-0001"
								}
							]
						},
						"description": "Pause a workflow (approver only). Sets status to PAUSED."
					}
				},
				{
					"name": "Resume Workflow",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  // Reason for resuming (optional)\n  \"reason\": \"Documentation received, continuing approval process\"\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/workflows/:id/resume",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", ":id", "resume"],
							"variable": [
								{
									"key": "id",
									"value": "REQ-2024-0001"
								}
							]
						},
						"description": "Resume a paused workflow (approver who paused or initiator)"
					}
				},
				{
					"name": "Retrigger Pause",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  // Message to approver requesting resume\n  \"message\": \"Documents have been uploaded. Please review and resume the workflow.\"\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/workflows/:id/pause/retrigger",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", ":id", "pause", "retrigger"],
							"variable": [
								{
									"key": "id",
									"value": "REQ-2024-0001"
								}
							]
						},
						"description": "Initiator requests approver to resume paused workflow (sends notification)"
					}
				},
				{
					"name": "Get Pause Details",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/workflows/:id/pause",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", ":id", "pause"],
							"variable": [
								{
									"key": "id",
									"value": "REQ-2024-0001"
								}
							]
						},
						"description": "Get pause details for a workflow (pause history, current pause status)"
					}
				}
			]
		},
		{
			"name": "Approvals",
			"item": [
				{
					"name": "Get Approval Levels",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/workflows/:id/approvals",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", ":id", "approvals"],
							"variable": [
								{
									"key": "id",
									"value": "REQ-2024-0001"
								}
							]
						},
						"description": "Get all approval levels for a workflow"
					}
				},
				{
					"name": "Get Current Approval Level",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/workflows/:id/approvals/current",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", ":id", "approvals", "current"],
							"variable": [
								{
									"key": "id",
									"value": "REQ-2024-0001"
								}
							]
						},
						"description": "Get current active approval level"
					}
				},
				{
					"name": "Approve Level",
					"request": {
						"method": "PATCH",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  // Approval remark/comment\n  \"remark\": \"Approved. Budget allocation confirmed and all requirements are justified.\",\n  \n  // Whether to use AI-generated remark (optional)\n  \"useAiRemark\": false\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/workflows/:id/approvals/:levelId/approve",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", ":id", "approvals", ":levelId", "approve"],
							"variable": [
								{
									"key": "id",
									"value": "REQ-2024-0001"
								},
								{
									"key": "levelId",
									"value": "level-uuid-here"
								}
							]
						},
						"description": "Approve an approval level"
					}
				},
				{
					"name": "Reject Level",
					"request": {
						"method": "PATCH",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  // Rejection reason/remark (required)\n  \"remark\": \"Rejected due to insufficient budget justification. Please provide more details on cost breakdown.\",\n  \n  // Action: REJECT to reject\n  \"action\": \"REJECT\",\n  \n  // Whether to use AI-generated remark (optional)\n  \"useAiRemark\": false\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/workflows/:id/approvals/:levelId/reject",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", ":id", "approvals", ":levelId", "reject"],
							"variable": [
								{
									"key": "id",
									"value": "REQ-2024-0001"
								},
								{
									"key": "levelId",
									"value": "level-uuid-here"
								}
							]
						},
						"description": "Reject an approval level with reason"
					}
				},
				{
					"name": "Skip Approver",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  // Reason for skipping approver\n  \"reason\": \"Approver is on leave. Moving to next level.\"\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/workflows/:id/approvals/:levelId/skip",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", ":id", "approvals", ":levelId", "skip"],
							"variable": [
								{
									"key": "id",
									"value": "REQ-2024-0001"
								},
								{
									"key": "levelId",
									"value": "level-uuid-here"
								}
							]
						},
						"description": "Skip an approver level (only initiator or other approvers)"
					}
				}
			]
		},
		{
			"name": "Participants",
			"item": [
				{
					"name": "Add Approver",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  // Email of new approver to add\n  \"email\": \"new.approver@example.com\"\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/workflows/:id/participants/approver",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", ":id", "participants", "approver"],
							"variable": [
								{
									"key": "id",
									"value": "REQ-2024-0001"
								}
							]
						},
						"description": "Add an approver to the workflow"
					}
				},
				{
					"name": "Add Spectator",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  // Email of spectator to add\n  \"email\": \"spectator@example.com\"\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/workflows/:id/participants/spectator",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", ":id", "participants", "spectator"],
							"variable": [
								{
									"key": "id",
									"value": "REQ-2024-0001"
								}
							]
						},
						"description": "Add a spectator (view-only participant) to the workflow"
					}
				},
				{
					"name": "Add Approver At Specific Level",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  // Email of approver\n  \"email\": \"new.approver@example.com\",\n  \n  // TAT hours for this approver\n  \"tatHours\": 24,\n  \n  // Level number where to insert (existing levels will shift)\n  \"level\": 2\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/workflows/:id/approvers/at-level",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", ":id", "approvers", "at-level"],
							"variable": [
								{
									"key": "id",
									"value": "REQ-2024-0001"
								}
							]
						},
						"description": "Add approver at specific level with level shifting"
					}
				}
			]
		},
		{
			"name": "Documents",
			"item": [
				{
					"name": "Upload Document",
					"request": {
						"method": "POST",
						"header": [],
						"body": {
							"mode": "formdata",
							"formdata": [
								{
									"key": "file",
									"type": "file",
									"src": [],
									"description": "File to upload"
								},
								{
									"key": "requestId",
									"value": "request-uuid-here",
									"type": "text",
									"description": "Request/Workflow ID"
								},
								{
									"key": "category",
									"value": "SUPPORTING_DOCUMENT",
									"type": "text",
									"description": "Document category (optional)"
								}
							]
						},
						"url": {
							"raw": "{{baseUrl}}/documents",
							"host": ["{{baseUrl}}"],
							"path": ["documents"]
						},
						"description": "Upload a document/file"
					}
				},
				{
					"name": "Preview Document",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/workflows/documents/:documentId/preview",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", "documents", ":documentId", "preview"],
							"variable": [
								{
									"key": "documentId",
									"value": "document-uuid-here"
								}
							]
						},
						"description": "Preview document (inline viewing for images/PDFs)"
					}
				},
				{
					"name": "Download Document",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/workflows/documents/:documentId/download",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", "documents", ":documentId", "download"],
							"variable": [
								{
									"key": "documentId",
									"value": "document-uuid-here"
								}
							]
						},
						"description": "Download document as attachment"
					}
				}
			]
		},
		{
			"name": "Work Notes",
			"item": [
				{
					"name": "List Work Notes",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/workflows/:id/work-notes",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", ":id", "work-notes"],
							"variable": [
								{
									"key": "id",
									"value": "REQ-2024-0001"
								}
							]
						},
						"description": "Get all work notes for a workflow"
					}
				},
				{
					"name": "Create Work Note",
					"request": {
						"method": "POST",
						"header": [],
						"body": {
							"mode": "formdata",
							"formdata": [
								{
									"key": "content",
									"value": "This is a work note discussing the current status and next steps for approval.",
									"type": "text",
									"description": "Work note content/text"
								},
								{
									"key": "files",
									"type": "file",
									"src": [],
									"description": "Attachments (optional, multiple files)"
								}
							]
						},
						"url": {
							"raw": "{{baseUrl}}/workflows/:id/work-notes",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", ":id", "work-notes"],
							"variable": [
								{
									"key": "id",
									"value": "REQ-2024-0001"
								}
							]
						},
						"description": "Create a work note with optional file attachments"
					}
				},
				{
					"name": "Preview Work Note Attachment",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/workflows/work-notes/attachments/:attachmentId/preview",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", "work-notes", "attachments", ":attachmentId", "preview"],
							"variable": [
								{
									"key": "attachmentId",
									"value": "attachment-uuid-here"
								}
							]
						},
						"description": "Preview work note attachment"
					}
				},
				{
					"name": "Download Work Note Attachment",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/workflows/work-notes/attachments/:attachmentId/download",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", "work-notes", "attachments", ":attachmentId", "download"],
							"variable": [
								{
									"key": "attachmentId",
									"value": "attachment-uuid-here"
								}
							]
						},
						"description": "Download work note attachment"
					}
				}
			]
		},
		{
			"name": "Conclusions",
			"item": [
				{
					"name": "Generate Conclusion",
					"request": {
						"method": "POST",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/conclusions/:requestId/generate",
							"host": ["{{baseUrl}}"],
							"path": ["conclusions", ":requestId", "generate"],
							"variable": [
								{
									"key": "requestId",
									"value": "REQ-2024-0001"
								}
							]
						},
						"description": "Generate AI-powered conclusion remark for workflow (initiator only)"
					}
				},
				{
					"name": "Update Conclusion",
					"request": {
						"method": "PUT",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  // Updated conclusion text\n  \"conclusionRemark\": \"Project has been approved with all requirements met. Implementation will begin next quarter.\"\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/conclusions/:requestId",
							"host": ["{{baseUrl}}"],
							"path": ["conclusions", ":requestId"],
							"variable": [
								{
									"key": "requestId",
									"value": "REQ-2024-0001"
								}
							]
						},
						"description": "Update conclusion remark (edit by initiator)"
					}
				},
				{
					"name": "Finalize Conclusion",
					"request": {
						"method": "POST",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/conclusions/:requestId/finalize",
							"host": ["{{baseUrl}}"],
							"path": ["conclusions", ":requestId", "finalize"],
							"variable": [
								{
									"key": "requestId",
									"value": "REQ-2024-0001"
								}
							]
						},
						"description": "Finalize conclusion and close the workflow (initiator only)"
					}
				},
				{
					"name": "Get Conclusion",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/conclusions/:requestId",
							"host": ["{{baseUrl}}"],
							"path": ["conclusions", ":requestId"],
							"variable": [
								{
									"key": "requestId",
									"value": "REQ-2024-0001"
								}
							]
						},
						"description": "Get conclusion for a workflow"
					}
				}
			]
		},
		{
			"name": "Notifications",
			"item": [
				{
					"name": "Get User Notifications",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/notifications?page=1&limit=20&unreadOnly=false",
							"host": ["{{baseUrl}}"],
							"path": ["notifications"],
							"query": [
								{
									"key": "page",
									"value": "1",
									"description": "Page number (default: 1)"
								},
								{
									"key": "limit",
									"value": "20",
									"description": "Items per page (default: 20)"
								},
								{
									"key": "unreadOnly",
									"value": "false",
									"description": "Show only unread notifications"
								}
							]
						},
						"description": "Get user's notifications with pagination"
					}
				},
				{
					"name": "Get Unread Count",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/notifications/unread-count",
							"host": ["{{baseUrl}}"],
							"path": ["notifications", "unread-count"]
						},
						"description": "Get count of unread notifications"
					}
				},
				{
					"name": "Mark Notification as Read",
					"request": {
						"method": "PATCH",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/notifications/:notificationId/read",
							"host": ["{{baseUrl}}"],
							"path": ["notifications", ":notificationId", "read"],
							"variable": [
								{
									"key": "notificationId",
									"value": "notification-uuid-here"
								}
							]
						},
						"description": "Mark a specific notification as read"
					}
				},
				{
					"name": "Mark All as Read",
					"request": {
						"method": "POST",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/notifications/mark-all-read",
							"host": ["{{baseUrl}}"],
							"path": ["notifications", "mark-all-read"]
						},
						"description": "Mark all user notifications as read"
					}
				},
				{
					"name": "Delete Notification",
					"request": {
						"method": "DELETE",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/notifications/:notificationId",
							"host": ["{{baseUrl}}"],
							"path": ["notifications", ":notificationId"],
							"variable": [
								{
									"key": "notificationId",
									"value": "notification-uuid-here"
								}
							]
						},
						"description": "Delete a notification"
					}
				},
				{
					"name": "Subscribe to Push Notifications",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  // Push subscription object from browser\n  \"subscription\": {\n    \"endpoint\": \"https://fcm.googleapis.com/fcm/send/...\",\n    \"keys\": {\n      \"p256dh\": \"key-data-here\",\n      \"auth\": \"auth-data-here\"\n    }\n  }\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/workflows/notifications/subscribe",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", "notifications", "subscribe"]
						},
						"description": "Subscribe to push notifications"
					}
				},
				{
					"name": "Test Push Notification",
					"request": {
						"method": "POST",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/workflows/notifications/test",
							"host": ["{{baseUrl}}"],
							"path": ["workflows", "notifications", "test"]
						},
						"description": "Test push notification for current user"
					}
				}
			]
		},
		{
			"name": "Dashboard",
			"item": [
				{
					"name": "Get KPIs",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/dashboard/kpis",
							"host": ["{{baseUrl}}"],
							"path": ["dashboard", "kpis"]
						},
						"description": "Get KPI summary (all KPI cards)"
					}
				},
				{
					"name": "Get Request Statistics",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/dashboard/stats/requests",
							"host": ["{{baseUrl}}"],
							"path": ["dashboard", "stats", "requests"]
						},
						"description": "Get detailed request statistics"
					}
				},
				{
					"name": "Get TAT Efficiency",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/dashboard/stats/tat-efficiency",
							"host": ["{{baseUrl}}"],
							"path": ["dashboard", "stats", "tat-efficiency"]
						},
						"description": "Get TAT (Turn Around Time) efficiency metrics"
					}
				},
				{
					"name": "Get Approver Load",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/dashboard/stats/approver-load",
							"host": ["{{baseUrl}}"],
							"path": ["dashboard", "stats", "approver-load"]
						},
						"description": "Get approver load/workload statistics"
					}
				},
				{
					"name": "Get Engagement Statistics",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/dashboard/stats/engagement",
							"host": ["{{baseUrl}}"],
							"path": ["dashboard", "stats", "engagement"]
						},
						"description": "Get engagement and quality metrics"
					}
				},
				{
					"name": "Get AI Insights",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/dashboard/stats/ai-insights",
							"host": ["{{baseUrl}}"],
							"path": ["dashboard", "stats", "ai-insights"]
						},
						"description": "Get AI and closure insights"
					}
				},
				{
					"name": "Get AI Remark Utilization",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/dashboard/stats/ai-remark-utilization",
							"host": ["{{baseUrl}}"],
							"path": ["dashboard", "stats", "ai-remark-utilization"]
						},
						"description": "Get AI remark utilization with monthly trends"
					}
				},
				{
					"name": "Get Approver Performance",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/dashboard/stats/approver-performance",
							"host": ["{{baseUrl}}"],
							"path": ["dashboard", "stats", "approver-performance"]
						},
						"description": "Get approver performance metrics"
					}
				},
				{
					"name": "Get Recent Activity",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/dashboard/activity/recent",
							"host": ["{{baseUrl}}"],
							"path": ["dashboard", "activity", "recent"]
						},
						"description": "Get recent activity feed"
					}
				},
				{
					"name": "Get Critical Requests",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/dashboard/requests/critical",
							"host": ["{{baseUrl}}"],
							"path": ["dashboard", "requests", "critical"]
						},
						"description": "Get high priority/critical requests"
					}
				},
				{
					"name": "Get Upcoming Deadlines",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/dashboard/deadlines/upcoming",
							"host": ["{{baseUrl}}"],
							"path": ["dashboard", "deadlines", "upcoming"]
						},
						"description": "Get upcoming deadlines"
					}
				},
				{
					"name": "Get Department Statistics",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/dashboard/stats/by-department",
							"host": ["{{baseUrl}}"],
							"path": ["dashboard", "stats", "by-department"]
						},
						"description": "Get department-wise summary"
					}
				},
				{
					"name": "Get Priority Distribution",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/dashboard/stats/priority-distribution",
							"host": ["{{baseUrl}}"],
							"path": ["dashboard", "stats", "priority-distribution"]
						},
						"description": "Get priority distribution statistics"
					}
				},
				{
					"name": "Get Lifecycle Report",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/dashboard/reports/lifecycle?dateRange=month",
							"host": ["{{baseUrl}}"],
							"path": ["dashboard", "reports", "lifecycle"],
							"query": [
								{
									"key": "dateRange",
									"value": "month",
									"description": "Date range: today, week, month, quarter, year, all"
								},
								{
									"key": "startDate",
									"value": "",
									"description": "Custom start date (ISO format)",
									"disabled": true
								},
								{
									"key": "endDate",
									"value": "",
									"description": "Custom end date (ISO format)",
									"disabled": true
								}
							]
						},
						"description": "Get request lifecycle report with stage-wise breakdown"
					}
				},
				{
					"name": "Get Activity Log Report",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/dashboard/reports/activity-log?page=1&limit=50",
							"host": ["{{baseUrl}}"],
							"path": ["dashboard", "reports", "activity-log"],
							"query": [
								{
									"key": "page",
									"value": "1",
									"description": "Page number"
								},
								{
									"key": "limit",
									"value": "50",
									"description": "Items per page"
								},
								{
									"key": "dateRange",
									"value": "month",
									"description": "Date range filter",
									"disabled": true
								},
								{
									"key": "userId",
									"value": "",
									"description": "Filter by user ID",
									"disabled": true
								}
							]
						},
						"description": "Get enhanced user activity log report with detailed actions"
					}
				},
				{
					"name": "Get Workflow Aging Report",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/dashboard/reports/workflow-aging",
							"host": ["{{baseUrl}}"],
							"path": ["dashboard", "reports", "workflow-aging"]
						},
						"description": "Get workflow aging report showing requests by age bucket"
					}
				},
				{
					"name": "Get Departments Metadata",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/dashboard/metadata/departments",
							"host": ["{{baseUrl}}"],
							"path": ["dashboard", "metadata", "departments"]
						},
						"description": "Get list of all departments (for filtering)"
					}
				},
				{
					"name": "Get Requests By Approver",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/dashboard/requests/by-approver?approverId=approver-uuid-here&page=1&limit=10",
							"host": ["{{baseUrl}}"],
							"path": ["dashboard", "requests", "by-approver"],
							"query": [
								{
									"key": "approverId",
									"value": "approver-uuid-here",
									"description": "Approver's user ID"
								},
								{
									"key": "page",
									"value": "1",
									"description": "Page number"
								},
								{
									"key": "limit",
									"value": "10",
									"description": "Items per page"
								},
								{
									"key": "status",
									"value": "",
									"description": "Filter by status (optional)",
									"disabled": true
								}
							]
						},
						"description": "Get requests handled by a specific approver (for performance analysis)"
					}
				}
			]
		},
		{
			"name": "TAT (Turn Around Time)",
			"item": [
				{
					"name": "Get TAT Alerts by Request",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/tat/alerts/request/:requestId",
							"host": ["{{baseUrl}}"],
							"path": ["tat", "alerts", "request", ":requestId"],
							"variable": [
								{
									"key": "requestId",
									"value": "request-uuid-here"
								}
							]
						},
						"description": "Get all TAT alerts for a specific request"
					}
				},
				{
					"name": "Get TAT Alerts by Level",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/tat/alerts/level/:levelId",
							"host": ["{{baseUrl}}"],
							"path": ["tat", "alerts", "level", ":levelId"],
							"variable": [
								{
									"key": "levelId",
									"value": "level-uuid-here"
								}
							]
						},
						"description": "Get TAT alerts for a specific approval level"
					}
				},
				{
					"name": "Get TAT Compliance Summary",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/tat/compliance/summary?startDate=2024-01-01&endDate=2024-12-31",
							"host": ["{{baseUrl}}"],
							"path": ["tat", "compliance", "summary"],
							"query": [
								{
									"key": "startDate",
									"value": "2024-01-01",
									"description": "Start date (optional)"
								},
								{
									"key": "endDate",
									"value": "2024-12-31",
									"description": "End date (optional)"
								}
							]
						},
						"description": "Get TAT compliance summary with optional date range"
					}
				},
				{
					"name": "Get TAT Breach Report",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/tat/breaches",
							"host": ["{{baseUrl}}"],
							"path": ["tat", "breaches"]
						},
						"description": "Get TAT breach report (all breached requests)"
					}
				},
				{
					"name": "Get Approver TAT Performance",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/tat/performance/:approverId",
							"host": ["{{baseUrl}}"],
							"path": ["tat", "performance", ":approverId"],
							"variable": [
								{
									"key": "approverId",
									"value": "approver-uuid-here"
								}
							]
						},
						"description": "Get TAT performance metrics for a specific approver"
					}
				}
			]
		},
		{
			"name": "Admin",
			"item": [
				{
					"name": "Holiday Management",
					"item": [
						{
							"name": "Get All Holidays",
							"request": {
								"method": "GET",
								"header": [],
								"url": {
									"raw": "{{baseUrl}}/admin/holidays?year=2024",
									"host": ["{{baseUrl}}"],
									"path": ["admin", "holidays"],
									"query": [
										{
											"key": "year",
											"value": "2024",
											"description": "Filter by year (optional)"
										}
									]
								},
								"description": "Get all holidays with optional year filter (Admin only)"
							}
						},
						{
							"name": "Get Holiday Calendar",
							"request": {
								"method": "GET",
								"header": [],
								"url": {
									"raw": "{{baseUrl}}/admin/holidays/calendar/:year",
									"host": ["{{baseUrl}}"],
									"path": ["admin", "holidays", "calendar", ":year"],
									"variable": [
										{
											"key": "year",
											"value": "2024"
										}
									]
								},
								"description": "Get holiday calendar for a specific year (Admin only)"
							}
						},
						{
							"name": "Create Holiday",
							"request": {
								"method": "POST",
								"header": [
									{
										"key": "Content-Type",
										"value": "application/json"
									}
								],
								"body": {
									"mode": "raw",
									"raw": "{\n  // Holiday date in ISO format (YYYY-MM-DD)\n  \"holidayDate\": \"2024-12-25\",\n  \n  // Holiday name\n  \"holidayName\": \"Christmas Day\",\n  \n  // Description (optional)\n  \"description\": \"Christmas celebration - office closed\",\n  \n  // Holiday type: NATIONAL | REGIONAL | COMPANY_SPECIFIC\n  \"holidayType\": \"NATIONAL\",\n  \n  // Is recurring every year\n  \"isRecurring\": true,\n  \n  // Applicable departments (optional) - empty array means all departments\n  \"applicableDepartments\": [],\n  \n  // Applicable regions (optional)\n  \"applicableRegions\": [\"ALL\"]\n}"
								},
								"url": {
									"raw": "{{baseUrl}}/admin/holidays",
									"host": ["{{baseUrl}}"],
									"path": ["admin", "holidays"]
								},
								"description": "Create a new holiday (Admin only)"
							}
						},
						{
							"name": "Update Holiday",
							"request": {
								"method": "PUT",
								"header": [
									{
										"key": "Content-Type",
										"value": "application/json"
									}
								],
								"body": {
									"mode": "raw",
									"raw": "{\n  // Updated holiday name (optional)\n  \"holidayName\": \"Christmas Day - Updated\",\n  \n  // Updated description (optional)\n  \"description\": \"Updated description\",\n  \n  // Updated holiday type (optional)\n  \"holidayType\": \"NATIONAL\",\n  \n  // Updated recurring flag (optional)\n  \"isRecurring\": true\n}"
								},
								"url": {
									"raw": "{{baseUrl}}/admin/holidays/:holidayId",
									"host": ["{{baseUrl}}"],
									"path": ["admin", "holidays", ":holidayId"],
									"variable": [
										{
											"key": "holidayId",
											"value": "holiday-uuid-here"
										}
									]
								},
								"description": "Update a holiday (Admin only)"
							}
						},
						{
							"name": "Delete Holiday",
							"request": {
								"method": "DELETE",
								"header": [],
								"url": {
									"raw": "{{baseUrl}}/admin/holidays/:holidayId",
									"host": ["{{baseUrl}}"],
									"path": ["admin", "holidays", ":holidayId"],
									"variable": [
										{
											"key": "holidayId",
											"value": "holiday-uuid-here"
										}
									]
								},
								"description": "Delete (deactivate) a holiday (Admin only)"
							}
						},
						{
							"name": "Bulk Import Holidays",
							"request": {
								"method": "POST",
								"header": [
									{
										"key": "Content-Type",
										"value": "application/json"
									}
								],
								"body": {
									"mode": "raw",
									"raw": "{\n  // Array of holidays to import\n  \"holidays\": [\n    {\n      \"holidayDate\": \"2024-01-01\",\n      \"holidayName\": \"New Year's Day\",\n      \"description\": \"New Year celebration\",\n      \"holidayType\": \"NATIONAL\",\n      \"isRecurring\": true\n    },\n    {\n      \"holidayDate\": \"2024-01-26\",\n      \"holidayName\": \"Republic Day\",\n      \"description\": \"Indian Republic Day\",\n      \"holidayType\": \"NATIONAL\",\n      \"isRecurring\": true\n    },\n    {\n      \"holidayDate\": \"2024-08-15\",\n      \"holidayName\": \"Independence Day\",\n      \"description\": \"Indian Independence Day\",\n      \"holidayType\": \"NATIONAL\",\n      \"isRecurring\": true\n    }\n  ]\n}"
								},
								"url": {
									"raw": "{{baseUrl}}/admin/holidays/bulk-import",
									"host": ["{{baseUrl}}"],
									"path": ["admin", "holidays", "bulk-import"]
								},
								"description": "Bulk import holidays from JSON array (Admin only)"
							}
						}
					]
				},
				{
					"name": "Configuration Management",
					"item": [
						{
							"name": "Get All Configurations",
							"request": {
								"method": "GET",
								"header": [],
								"url": {
									"raw": "{{baseUrl}}/admin/configurations?category=TAT",
									"host": ["{{baseUrl}}"],
									"path": ["admin", "configurations"],
									"query": [
										{
											"key": "category",
											"value": "TAT",
											"description": "Filter by category (optional): TAT, AI, NOTIFICATION, SYSTEM"
										}
									]
								},
								"description": "Get all admin configurations with optional category filter (Admin only)"
							}
						},
						{
							"name": "Update Configuration",
							"request": {
								"method": "PUT",
								"header": [
									{
										"key": "Content-Type",
										"value": "application/json"
									}
								],
								"body": {
									"mode": "raw",
									"raw": "{\n  // New configuration value (type depends on config key)\n  \"configValue\": \"50\"\n}"
								},
								"url": {
									"raw": "{{baseUrl}}/admin/configurations/:configKey",
									"host": ["{{baseUrl}}"],
									"path": ["admin", "configurations", ":configKey"],
									"variable": [
										{
											"key": "configKey",
											"value": "TAT_THRESHOLD_1",
											"description": "Config key to update"
										}
									]
								},
								"description": "Update a configuration value (Admin only)"
							}
						},
						{
							"name": "Reset Configuration",
							"request": {
								"method": "POST",
								"header": [],
								"url": {
									"raw": "{{baseUrl}}/admin/configurations/:configKey/reset",
									"host": ["{{baseUrl}}"],
									"path": ["admin", "configurations", ":configKey", "reset"],
									"variable": [
										{
											"key": "configKey",
											"value": "TAT_THRESHOLD_1"
										}
									]
								},
								"description": "Reset configuration to default value (Admin only)"
							}
						}
					]
				},
				{
					"name": "User Role Management (RBAC)",
					"item": [
						{
							"name": "Assign Role by Email",
							"request": {
								"method": "POST",
								"header": [
									{
										"key": "Content-Type",
										"value": "application/json"
									}
								],
								"body": {
									"mode": "raw",
									"raw": "{\n  // User's email address\n  \"email\": \"user@example.com\",\n  \n  // Role to assign: USER | MANAGEMENT | ADMIN\n  \"role\": \"MANAGEMENT\"\n}"
								},
								"url": {
									"raw": "{{baseUrl}}/admin/users/assign-role",
									"host": ["{{baseUrl}}"],
									"path": ["admin", "users", "assign-role"]
								},
								"description": "Assign role to user by email - creates user from Okta if doesn't exist (Admin only)"
							}
						},
						{
							"name": "Update User Role",
							"request": {
								"method": "PUT",
								"header": [
									{
										"key": "Content-Type",
										"value": "application/json"
									}
								],
								"body": {
									"mode": "raw",
									"raw": "{\n  // New role: USER | MANAGEMENT | ADMIN\n  \"role\": \"ADMIN\"\n}"
								},
								"url": {
									"raw": "{{baseUrl}}/admin/users/:userId/role",
									"host": ["{{baseUrl}}"],
									"path": ["admin", "users", ":userId", "role"],
									"variable": [
										{
											"key": "userId",
											"value": "user-uuid-here"
										}
									]
								},
								"description": "Update user's role (Admin only)"
							}
						},
						{
							"name": "Get Users By Role",
							"request": {
								"method": "GET",
								"header": [],
								"url": {
									"raw": "{{baseUrl}}/admin/users/by-role?role=ADMIN",
									"host": ["{{baseUrl}}"],
									"path": ["admin", "users", "by-role"],
									"query": [
										{
											"key": "role",
											"value": "ADMIN",
											"description": "Filter by role: ADMIN | MANAGEMENT | USER"
										}
									]
								},
								"description": "Get all users filtered by role (Admin only)"
							}
						},
						{
							"name": "Get Role Statistics",
							"request": {
								"method": "GET",
								"header": [],
								"url": {
									"raw": "{{baseUrl}}/admin/users/role-statistics",
									"host": ["{{baseUrl}}"],
									"path": ["admin", "users", "role-statistics"]
								},
								"description": "Get count of users in each role (Admin only)"
							}
						}
					]
				}
			]
		},
		{
			"name": "AI Service",
			"item": [
				{
					"name": "Get AI Status",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/ai/status",
							"host": ["{{baseUrl}}"],
							"path": ["ai", "status"]
						},
						"description": "Get AI service status (availability and provider)"
					}
				},
				{
					"name": "Reinitialize AI Service",
					"request": {
						"method": "POST",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/ai/reinitialize",
							"host": ["{{baseUrl}}"],
							"path": ["ai", "reinitialize"]
						},
						"description": "Reinitialize AI service after configuration change (Admin only)"
					}
				}
			]
		},
		{
			"name": "Summaries",
			"item": [
				{
					"name": "Create Summary",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  // Request ID of the closed workflow\n  \"requestId\": \"request-uuid-here\",\n  \n  // Summary title (optional - defaults to request title)\n  \"title\": \"Summary: Purchase Order Approval\",\n  \n  // Summary content/notes (optional - can be AI generated)\n  \"content\": \"This purchase order was approved with all requirements met.\",\n  \n  // Whether to generate AI summary\n  \"generateAISummary\": true\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/summaries",
							"host": ["{{baseUrl}}"],
							"path": ["summaries"]
						},
						"description": "Create a summary for a closed workflow request (initiator only)"
					}
				},
				{
					"name": "List My Summaries",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/summaries/my?page=1&limit=10",
							"host": ["{{baseUrl}}"],
							"path": ["summaries", "my"],
							"query": [
								{
									"key": "page",
									"value": "1",
									"description": "Page number"
								},
								{
									"key": "limit",
									"value": "10",
									"description": "Items per page"
								}
							]
						},
						"description": "List summaries created by current user"
					}
				},
				{
					"name": "List Shared Summaries",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/summaries/shared?page=1&limit=10",
							"host": ["{{baseUrl}}"],
							"path": ["summaries", "shared"],
							"query": [
								{
									"key": "page",
									"value": "1",
									"description": "Page number"
								},
								{
									"key": "limit",
									"value": "10",
									"description": "Items per page"
								}
							]
						},
						"description": "List summaries shared with current user"
					}
				},
				{
					"name": "Get Summary By Request ID",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/summaries/request/:requestId",
							"host": ["{{baseUrl}}"],
							"path": ["summaries", "request", ":requestId"],
							"variable": [
								{
									"key": "requestId",
									"value": "request-uuid-here",
									"description": "Request ID to get summary for"
								}
							]
						},
						"description": "Get summary by workflow request ID"
					}
				},
				{
					"name": "Get Summary Details",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/summaries/:summaryId",
							"host": ["{{baseUrl}}"],
							"path": ["summaries", ":summaryId"],
							"variable": [
								{
									"key": "summaryId",
									"value": "summary-uuid-here",
									"description": "Summary ID"
								}
							]
						},
						"description": "Get summary details by summary ID"
					}
				},
				{
					"name": "Share Summary",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  // Array of user IDs to share with\n  \"userIds\": [\"user-uuid-1\", \"user-uuid-2\"],\n  \n  // Optional message to include\n  \"message\": \"Please review this workflow summary\",\n  \n  // Optional: Share with all participants of the original request\n  \"shareWithParticipants\": false\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/summaries/:summaryId/share",
							"host": ["{{baseUrl}}"],
							"path": ["summaries", ":summaryId", "share"],
							"variable": [
								{
									"key": "summaryId",
									"value": "summary-uuid-here"
								}
							]
						},
						"description": "Share summary with other users"
					}
				},
				{
					"name": "Get Shared Recipients",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/summaries/:summaryId/recipients",
							"host": ["{{baseUrl}}"],
							"path": ["summaries", ":summaryId", "recipients"],
							"variable": [
								{
									"key": "summaryId",
									"value": "summary-uuid-here"
								}
							]
						},
						"description": "Get list of users this summary has been shared with"
					}
				},
				{
					"name": "Mark Shared Summary as Viewed",
					"request": {
						"method": "PATCH",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/summaries/shared/:sharedSummaryId/view",
							"host": ["{{baseUrl}}"],
							"path": ["summaries", "shared", ":sharedSummaryId", "view"],
							"variable": [
								{
									"key": "sharedSummaryId",
									"value": "shared-summary-uuid-here",
									"description": "Shared summary record ID"
								}
							]
						},
						"description": "Mark a shared summary as viewed by current user"
					}
				}
			]
		},
		{
			"name": "Debug & Testing",
			"item": [
				{
					"name": "Get TAT Jobs for Request",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/debug/tat-jobs/:requestId",
							"host": ["{{baseUrl}}"],
							"path": ["debug", "tat-jobs", ":requestId"],
							"variable": [
								{
									"key": "requestId",
									"value": "request-uuid-here"
								}
							]
						},
						"description": "Debug endpoint to check scheduled TAT jobs for a request"
					}
				},
				{
					"name": "Get All TAT Jobs",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/debug/tat-jobs",
							"host": ["{{baseUrl}}"],
							"path": ["debug", "tat-jobs"]
						},
						"description": "Debug endpoint to check all queued TAT jobs"
					}
				},
				{
					"name": "Calculate TAT Times",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  // Start time in ISO format (optional, defaults to now)\n  \"startTime\": \"2024-01-15T09:00:00Z\",\n  \n  // TAT hours\n  \"tatHours\": 24,\n  \n  // Priority: STANDARD | EXPRESS\n  \"priority\": \"STANDARD\"\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/debug/tat-calculate",
							"host": ["{{baseUrl}}"],
							"path": ["debug", "tat-calculate"]
						},
						"description": "Debug endpoint to test TAT time calculations"
					}
				},
				{
					"name": "Get Queue Status",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/debug/queue-status",
							"host": ["{{baseUrl}}"],
							"path": ["debug", "queue-status"]
						},
						"description": "Debug endpoint to check queue and worker status"
					}
				},
				{
					"name": "Trigger Test TAT",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  // Test request ID\n  \"requestId\": \"test-request-123\",\n  \n  // Test level ID\n  \"levelId\": \"test-level-456\",\n  \n  // Test approver ID\n  \"approverId\": \"test-approver-789\"\n}"
						},
						"url": {
							"raw": "{{baseUrl}}/debug/trigger-test-tat",
							"host": ["{{baseUrl}}"],
							"path": ["debug", "trigger-test-tat"]
						},
						"description": "Debug endpoint to manually trigger a test TAT job (fires in 5 seconds)"
					}
				}
			]
		}
	]
}

