{"info":{"_postman_id":"2000d1f5-8d30-4d79-9a6a-dd4053a86f91","name":"Travel Requests Manager","description":"<html><head></head><body><h1 id=\"travel-request-api-collection\">Travel Request API Collection</h1>\n<p>Corporate travel request management API with JWT authentication, role-based access control, and event-driven notifications.</p>\n<h2 id=\"quick-start\">Quick Start</h2>\n<ol>\n<li>Login with one of the pre-configured users</li>\n<li>The JWT token is automatically saved and applied to subsequent requests</li>\n<li>Explore endpoints organized by role (User / Admin)</li>\n</ol>\n<h2 id=\"pre-configured-users\">Pre-configured Users</h2>\n<ul>\n<li><strong>Admin</strong>: <a href=\"mailto:admin@travelrequests.com\">admin@travelrequests.com</a> / admin123</li>\n<li><strong>User</strong>: <a href=\"mailto:user@travelrequests.com\">user@travelrequests.com</a> / user123</li>\n</ul>\n<h2 id=\"branches\">Branches</h2>\n<ul>\n<li><strong>main</strong>: Core endpoints (Auth + Travel Requests)</li>\n<li><strong>feature/enhanced-cancellation</strong>: Adds multi-step cancellation flow for approved requests</li>\n</ul>\n<h2 id=\"i18n-support\">i18n Support</h2>\n<p>Add <code>Accept-Language: pt-BR</code> header to get responses in Portuguese. Default is English.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"Travel Request API Collection","slug":"travel-request-api-collection"}],"owner":"2620805","collectionId":"2000d1f5-8d30-4d79-9a6a-dd4053a86f91","publishedId":"2sBXinJWj9","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-03-31T20:04:31.000Z"},"item":[{"name":"0 - Auth","item":[{"name":"Register","event":[{"listen":"test","script":{"exec":["var res = pm.response.json();","if (res.access_token) {","    var role = res.user && res.user.role ? res.user.role : 'user';","    pm.environment.set('authenticated_' + role + '_token', res.access_token);","    pm.environment.set('jwt_token', res.access_token);","}"],"type":"text/javascript","id":"49626235-c6c0-4da8-a28d-44c117689dd6"}}],"id":"3c7e66fe-8ae8-4b58-b539-1f21f7f3e4a7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"name\": \"New User\",\n    \"email\": \"newuser@example.com\",\n    \"password\": \"password123\",\n    \"password_confirmation\": \"password123\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/v1/auth/register","urlObject":{"path":["auth","register"],"host":["http://localhost:8000/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"3c7e66fe-8ae8-4b58-b539-1f21f7f3e4a7"},{"name":"Login (User)","event":[{"listen":"test","script":{"exec":["var res = pm.response.json();","if (res.access_token) {","    pm.environment.set('authenticated_user_token', res.access_token);","    pm.environment.set('jwt_token', res.access_token);","}"],"type":"text/javascript","id":"884910ed-8688-42fe-a18b-15b467d74553"}}],"id":"3eb39681-4856-46ba-8ad2-b1d6a0893c4b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"email\": \"user@travelrequests.com\",\n    \"password\": \"user123\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/v1/auth/login","urlObject":{"path":["auth","login"],"host":["http://localhost:8000/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"3eb39681-4856-46ba-8ad2-b1d6a0893c4b"},{"name":"Login (Admin)","event":[{"listen":"test","script":{"exec":["var res = pm.response.json();","if (res.access_token) {","    pm.environment.set('authenticated_admin_token', res.access_token);","    pm.environment.set('jwt_token', res.access_token);","}"],"type":"text/javascript","id":"ebcc18ef-dbdb-4056-8a66-adf6f8f6df8b"}}],"id":"47bffae8-c25e-4bec-be62-74377ec6f979","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"email\": \"admin@travelrequests.com\",\n    \"password\": \"admin123\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/v1/auth/login","urlObject":{"path":["auth","login"],"host":["http://localhost:8000/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"47bffae8-c25e-4bec-be62-74377ec6f979"},{"name":"Me (Profile)","id":"6f5be500-5a9e-44bc-b674-83f01fc4f8ee","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"http://localhost:8000/api/v1/auth/me","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"5d4d3ef5-2ad5-471a-9b0a-ca16d8bdbe4d","id":"5d4d3ef5-2ad5-471a-9b0a-ca16d8bdbe4d","name":"0 - Auth","type":"folder"}},"urlObject":{"path":["auth","me"],"host":["http://localhost:8000/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"6f5be500-5a9e-44bc-b674-83f01fc4f8ee"},{"name":"Refresh Token","event":[{"listen":"test","script":{"exec":["var res = pm.response.json();","if (res.access_token) {","    pm.environment.set('jwt_token', res.access_token);","}"],"type":"text/javascript","id":"2e66455c-248b-4037-990f-0e111de2aed1"}}],"id":"ccd51b8d-3277-4812-9bf8-3675e6c49375","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json"}],"url":"http://localhost:8000/api/v1/auth/refresh","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"5d4d3ef5-2ad5-471a-9b0a-ca16d8bdbe4d","id":"5d4d3ef5-2ad5-471a-9b0a-ca16d8bdbe4d","name":"0 - Auth","type":"folder"}},"urlObject":{"path":["auth","refresh"],"host":["http://localhost:8000/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"ccd51b8d-3277-4812-9bf8-3675e6c49375"},{"name":"Logout","id":"c4ff9039-c524-46d8-a19a-71e65f9e3968","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json"}],"url":"http://localhost:8000/api/v1/auth/logout","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"5d4d3ef5-2ad5-471a-9b0a-ca16d8bdbe4d","id":"5d4d3ef5-2ad5-471a-9b0a-ca16d8bdbe4d","name":"0 - Auth","type":"folder"}},"urlObject":{"path":["auth","logout"],"host":["http://localhost:8000/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"c4ff9039-c524-46d8-a19a-71e65f9e3968"}],"id":"5d4d3ef5-2ad5-471a-9b0a-ca16d8bdbe4d","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"_postman_id":"5d4d3ef5-2ad5-471a-9b0a-ca16d8bdbe4d","description":""},{"name":"1 - User Routes","item":[{"name":"Create Travel Request","id":"5cd849af-cb26-483b-b795-5436cdc2c6ee","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"destination\": \"London\",\n    \"departure_date\": \"2026-06-15\",\n    \"return_date\": \"2026-06-22\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/v1/travel-requests","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9c0024ac-4bd9-4554-91ae-b904ad433e5e","id":"9c0024ac-4bd9-4554-91ae-b904ad433e5e","name":"1 - User Routes","type":"folder"}},"urlObject":{"path":["travel-requests"],"host":["http://localhost:8000/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"5cd849af-cb26-483b-b795-5436cdc2c6ee"},{"name":"List Travel Requests","id":"1814f088-4fe4-40ae-b8b6-4290edd0dc7b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"http://localhost:8000/api/v1/travel-requests","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9c0024ac-4bd9-4554-91ae-b904ad433e5e","id":"9c0024ac-4bd9-4554-91ae-b904ad433e5e","name":"1 - User Routes","type":"folder"}},"urlObject":{"path":["travel-requests"],"host":["http://localhost:8000/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"1814f088-4fe4-40ae-b8b6-4290edd0dc7b"},{"name":"List with Filters","id":"f7f6d142-14b2-4caf-bc0a-81247e159f74","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"http://localhost:8000/api/v1/travel-requests?status=requested&destination=London&per_page=10","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9c0024ac-4bd9-4554-91ae-b904ad433e5e","id":"9c0024ac-4bd9-4554-91ae-b904ad433e5e","name":"1 - User Routes","type":"folder"}},"urlObject":{"path":["travel-requests"],"host":["http://localhost:8000/api/v1"],"query":[{"key":"status","value":"requested"},{"key":"destination","value":"London"},{"key":"per_page","value":"10"},{"disabled":true,"key":"departure_date_start","value":"2026-01-01"},{"disabled":true,"key":"departure_date_end","value":"2026-12-31"},{"disabled":true,"key":"start_date","value":"2026-01-01"},{"disabled":true,"key":"end_date","value":"2026-12-31"}],"variable":[]}},"response":[],"_postman_id":"f7f6d142-14b2-4caf-bc0a-81247e159f74"},{"name":"View Travel Request","id":"512e4902-6e59-4def-af34-6e3844e51d77","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"http://localhost:8000/api/v1/travel-requests/1","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9c0024ac-4bd9-4554-91ae-b904ad433e5e","id":"9c0024ac-4bd9-4554-91ae-b904ad433e5e","name":"1 - User Routes","type":"folder"}},"urlObject":{"path":["travel-requests","1"],"host":["http://localhost:8000/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"512e4902-6e59-4def-af34-6e3844e51d77"},{"name":"Cancel Travel Request","id":"01c6fc1e-91ce-46c5-99b9-0dd1552c212d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"cancellation_reason\": \"Plans changed\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/v1/travel-requests/1/cancel","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9c0024ac-4bd9-4554-91ae-b904ad433e5e","id":"9c0024ac-4bd9-4554-91ae-b904ad433e5e","name":"1 - User Routes","type":"folder"}},"urlObject":{"path":["travel-requests","1","cancel"],"host":["http://localhost:8000/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"01c6fc1e-91ce-46c5-99b9-0dd1552c212d"}],"id":"9c0024ac-4bd9-4554-91ae-b904ad433e5e","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"_postman_id":"9c0024ac-4bd9-4554-91ae-b904ad433e5e","description":""},{"name":"2 - Admin Routes","item":[{"name":"Update Travel Request Status (Approve)","id":"481f1d23-7d1c-45cb-a4aa-66ea4b7c51e8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"status\": \"approved\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/v1/travel-requests/1","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"b6a06932-bb6d-4e6b-8143-870d2b240dd0","id":"b6a06932-bb6d-4e6b-8143-870d2b240dd0","name":"2 - Admin Routes","type":"folder"}},"urlObject":{"path":["travel-requests","1"],"host":["http://localhost:8000/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"481f1d23-7d1c-45cb-a4aa-66ea4b7c51e8"},{"name":"Update Travel Request Status (Cancel)","id":"ed8867be-a6a7-46d6-a315-8bf64dc37a13","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"status\": \"canceled\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/v1/travel-requests/1","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"b6a06932-bb6d-4e6b-8143-870d2b240dd0","id":"b6a06932-bb6d-4e6b-8143-870d2b240dd0","name":"2 - Admin Routes","type":"folder"}},"urlObject":{"path":["travel-requests","1"],"host":["http://localhost:8000/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"ed8867be-a6a7-46d6-a315-8bf64dc37a13"}],"id":"b6a06932-bb6d-4e6b-8143-870d2b240dd0","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"_postman_id":"b6a06932-bb6d-4e6b-8143-870d2b240dd0","description":""},{"name":"3 - Enhanced Cancellation (feature branch)","item":[{"name":"Request Cancellation (approved order)","id":"6a72818d-f34b-49ab-9c37-083a50a9eac2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"cancellation_reason\": \"Meeting was rescheduled, need to cancel this approved trip.\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/v1/travel-requests/1/request-cancellation","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"992024fb-3a09-4e86-8d2e-23cc89452db2","id":"992024fb-3a09-4e86-8d2e-23cc89452db2","name":"3 - Enhanced Cancellation (feature branch)","type":"folder"}},"urlObject":{"path":["travel-requests","1","request-cancellation"],"host":["http://localhost:8000/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"6a72818d-f34b-49ab-9c37-083a50a9eac2"},{"name":"Confirm Cancellation (with token)","id":"804de67f-5252-4899-97f0-879253e8e7da","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"token\": \"PASTE_TOKEN_FROM_REQUEST_CANCELLATION_RESPONSE\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/v1/travel-requests/1/confirm-cancellation","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"992024fb-3a09-4e86-8d2e-23cc89452db2","id":"992024fb-3a09-4e86-8d2e-23cc89452db2","name":"3 - Enhanced Cancellation (feature branch)","type":"folder"}},"urlObject":{"path":["travel-requests","1","confirm-cancellation"],"host":["http://localhost:8000/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"804de67f-5252-4899-97f0-879253e8e7da"},{"name":"Admin: Approve Cancellation","id":"b8fc11c1-9346-4b3c-8c92-39eb8cfdf1c0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json"}],"url":"http://localhost:8000/api/v1/admin/travel-requests/1/approve-cancellation","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"992024fb-3a09-4e86-8d2e-23cc89452db2","id":"992024fb-3a09-4e86-8d2e-23cc89452db2","name":"3 - Enhanced Cancellation (feature branch)","type":"folder"}},"urlObject":{"path":["admin","travel-requests","1","approve-cancellation"],"host":["http://localhost:8000/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"b8fc11c1-9346-4b3c-8c92-39eb8cfdf1c0"},{"name":"Admin: Reject Cancellation","id":"3d1952a1-2e69-45e0-b429-76093de05ed2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"cancellation_reason\": \"Business trip is mandatory.\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/v1/admin/travel-requests/1/reject-cancellation","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"992024fb-3a09-4e86-8d2e-23cc89452db2","id":"992024fb-3a09-4e86-8d2e-23cc89452db2","name":"3 - Enhanced Cancellation (feature branch)","type":"folder"}},"urlObject":{"path":["admin","travel-requests","1","reject-cancellation"],"host":["http://localhost:8000/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"3d1952a1-2e69-45e0-b429-76093de05ed2"}],"id":"992024fb-3a09-4e86-8d2e-23cc89452db2","description":"<p>These endpoints are only available on the <code>feature/enhanced-cancellation</code> branch. They add a multi-step cancellation workflow for approved travel requests.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"_postman_id":"992024fb-3a09-4e86-8d2e-23cc89452db2"}],"variable":[{"key":"app_url","value":"http://localhost:8000/api/v1"},{"key":"travel_request_id","value":"1"},{"key":"jwt_token","value":""},{"key":"authenticated_user_token","value":""},{"key":"authenticated_admin_token","value":""}]}