{ "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": "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": "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", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/workflows/my", "host": ["{{baseUrl}}"], "path": ["workflows", "my"] }, "description": "Get workflows initiated by current user" } }, { "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)", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n // Request title - brief description\n \"requestTitle\": \"Purchase Order Approval for Office Equipment\",\n \n // Detailed description of the request\n \"requestDescription\": \"Approval needed for purchasing new office equipment including laptops, monitors, and office furniture. Total budget: $50,000\",\n \n // Priority: STANDARD | EXPRESS\n \"priority\": \"STANDARD\",\n \n // Department requesting approval\n \"requestingDepartment\": \"IT\",\n \n // Category of request\n \"requestCategory\": \"PURCHASE_ORDER\",\n \n // Approvers list - array of approval levels\n \"approvers\": [\n {\n // Approver's email\n \"email\": \"manager@example.com\",\n \n // TAT (Turn Around Time) in hours\n \"tatHours\": 24,\n \n // Level number (sequential)\n \"level\": 1\n },\n {\n \"email\": \"director@example.com\",\n \"tatHours\": 48,\n \"level\": 2\n },\n {\n \"email\": \"cfo@example.com\",\n \"tatHours\": 72,\n \"level\": 3\n }\n ],\n \n // Spectators (optional) - users who can view but not approve\n \"spectators\": [\n {\n \"email\": \"hr@example.com\"\n },\n {\n \"email\": \"finance@example.com\"\n }\n ],\n \n // Document IDs (if documents uploaded separately)\n \"documentIds\": []\n}" }, "url": { "raw": "{{baseUrl}}/workflows", "host": ["{{baseUrl}}"], "path": ["workflows"] }, "description": "Create new workflow request with JSON payload" } }, { "name": "Create Workflow (Multipart with Files)", "request": { "method": "POST", "header": [], "body": { "mode": "formdata", "formdata": [ { "key": "requestTitle", "value": "Purchase Order Approval for Office Equipment", "type": "text", "description": "Request title" }, { "key": "requestDescription", "value": "Approval needed for purchasing new office equipment", "type": "text", "description": "Detailed description" }, { "key": "priority", "value": "STANDARD", "type": "text", "description": "STANDARD or EXPRESS" }, { "key": "requestingDepartment", "value": "IT", "type": "text", "description": "Department name" }, { "key": "requestCategory", "value": "PURCHASE_ORDER", "type": "text", "description": "Category of request" }, { "key": "approvers", "value": "[{\"email\":\"manager@example.com\",\"tatHours\":24,\"level\":1},{\"email\":\"director@example.com\",\"tatHours\":48,\"level\":2}]", "type": "text", "description": "JSON array of approvers" }, { "key": "spectators", "value": "[{\"email\":\"hr@example.com\"}]", "type": "text", "description": "JSON array of spectators (optional)" }, { "key": "files", "type": "file", "src": [], "description": "Upload files (multiple files supported)" } ] }, "url": { "raw": "{{baseUrl}}/workflows/multipart", "host": ["{{baseUrl}}"], "path": ["workflows", "multipart"] }, "description": "Create workflow with file uploads using multipart/form-data" } }, { "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": "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": "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": "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": "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)" } } ] } ] }