{ "info": { "name": "Xpeditis Complete API", "description": "Complete Postman collection for Xpeditis B2B Maritime Freight Platform API.\n\n## Overview\nXpeditis is a maritime freight booking and management platform that allows freight forwarders to search shipping rates, book containers, and manage shipments.\n\n## Authentication\nMost endpoints require JWT authentication. Use the `/auth/login` or `/auth/register` endpoints first to obtain an access token, which will be automatically saved to the `{{token}}` variable.\n\n## Base URL\nDefault: `http://localhost:4000`\n\n## Getting Started\n1. Import the environment file `Xpeditis_Local.postman_environment.json`\n2. Register a new user or login\n3. The access token will be automatically saved\n4. Start making authenticated requests\n\n## Documentation\n- Swagger UI: http://localhost:4000/api/docs\n- GitHub: https://github.com/xpeditis", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" }, "item": [ { "name": "Authentication", "item": [ { "name": "Register New User", "event": [ { "listen": "test", "script": { "exec": [ "if (pm.response.code === 201) {", " const jsonData = pm.response.json();", " pm.environment.set('token', jsonData.accessToken);", " pm.environment.set('refreshToken', jsonData.refreshToken);", " pm.environment.set('userId', jsonData.user.id);", " pm.environment.set('userEmail', jsonData.user.email);", " pm.environment.set('organizationId', jsonData.user.organizationId);", " console.log('Access token saved to environment');", "}" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"email\": \"john.doe@acme.com\",\n \"password\": \"SecurePassword123!\",\n \"firstName\": \"John\",\n \"lastName\": \"Doe\"\n}" }, "url": { "raw": "{{baseUrl}}/auth/register", "host": ["{{baseUrl}}"], "path": ["auth", "register"] }, "description": "Create a new user account with email and password. Returns JWT tokens.\n\n**No authentication required**" }, "response": [] }, { "name": "Login", "event": [ { "listen": "test", "script": { "exec": [ "if (pm.response.code === 200) {", " const jsonData = pm.response.json();", " pm.environment.set('token', jsonData.accessToken);", " pm.environment.set('refreshToken', jsonData.refreshToken);", " pm.environment.set('userId', jsonData.user.id);", " pm.environment.set('userEmail', jsonData.user.email);", " pm.environment.set('organizationId', jsonData.user.organizationId);", " console.log('Access token saved to environment');", "}" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"email\": \"john.doe@acme.com\",\n \"password\": \"SecurePassword123!\"\n}" }, "url": { "raw": "{{baseUrl}}/auth/login", "host": ["{{baseUrl}}"], "path": ["auth", "login"] }, "description": "Authenticate with email and password. Returns JWT tokens.\n\n**No authentication required**" }, "response": [] }, { "name": "Refresh Access Token", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"refreshToken\": \"{{refreshToken}}\"\n}" }, "url": { "raw": "{{baseUrl}}/auth/refresh", "host": ["{{baseUrl}}"], "path": ["auth", "refresh"] }, "description": "Get a new access token using a valid refresh token. Refresh tokens are long-lived (7 days).\n\n**No authentication required**" }, "response": [] }, { "name": "Logout", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "POST", "header": [], "url": { "raw": "{{baseUrl}}/auth/logout", "host": ["{{baseUrl}}"], "path": ["auth", "logout"] }, "description": "Logout the current user. Currently handled client-side by removing tokens.\n\n**Requires authentication**" }, "response": [] }, { "name": "Get Current User Profile", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/auth/me", "host": ["{{baseUrl}}"], "path": ["auth", "me"] }, "description": "Returns the profile of the authenticated user.\n\n**Requires authentication**" }, "response": [] } ], "description": "Authentication endpoints for user registration, login, and token management." }, { "name": "Rates", "item": [ { "name": "Search Shipping Rates", "event": [ { "listen": "test", "script": { "exec": [ "if (pm.response.code === 200) {", " const jsonData = pm.response.json();", " if (jsonData.quotes && jsonData.quotes.length > 0) {", " pm.environment.set('rateQuoteId', jsonData.quotes[0].id);", " console.log('Rate quote ID saved:', jsonData.quotes[0].id);", " }", "}" ], "type": "text/javascript" } } ], "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"origin\": \"NLRTM\",\n \"destination\": \"CNSHA\",\n \"containerType\": \"40HC\",\n \"mode\": \"FCL\",\n \"departureDate\": \"2025-02-15\",\n \"quantity\": 2,\n \"weight\": 20000,\n \"volume\": 50.5,\n \"isHazmat\": false\n}" }, "url": { "raw": "{{baseUrl}}/api/v1/rates/search", "host": ["{{baseUrl}}"], "path": ["api", "v1", "rates", "search"] }, "description": "Search for available shipping rates from multiple carriers. Results are cached for 15 minutes.\n\n**Requires authentication**" }, "response": [] }, { "name": "Search CSV Rates (Advanced)", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"origin\": \"NLRTM\",\n \"destination\": \"USNYC\",\n \"volumeCBM\": 25.5,\n \"weightKG\": 3500,\n \"palletCount\": 10,\n \"containerType\": \"LCL\",\n \"filters\": {\n \"companies\": [\"SSC Consolidation\", \"ECU Worldwide\"],\n \"maxPrice\": 2000,\n \"minPrice\": 500,\n \"maxTransitDays\": 30,\n \"currency\": \"USD\"\n }\n}" }, "url": { "raw": "{{baseUrl}}/api/v1/rates/search-csv", "host": ["{{baseUrl}}"], "path": ["api", "v1", "rates", "search-csv"] }, "description": "Search for rates from CSV-loaded carriers (SSC, ECU, TCC, NVO) with advanced filtering options.\n\n**Requires authentication**" }, "response": [] }, { "name": "Get Available Companies", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/rates/companies", "host": ["{{baseUrl}}"], "path": ["api", "v1", "rates", "companies"] }, "description": "Returns list of all available carrier companies in the CSV rate system.\n\n**Requires authentication**" }, "response": [] }, { "name": "Get Filter Options", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/rates/filters/options", "host": ["{{baseUrl}}"], "path": ["api", "v1", "rates", "filters", "options"] }, "description": "Returns available options for all filters (companies, container types, currencies).\n\n**Requires authentication**" }, "response": [] } ], "description": "Rate search endpoints for finding shipping quotes from multiple carriers." }, { "name": "Bookings", "item": [ { "name": "Create Booking", "event": [ { "listen": "test", "script": { "exec": [ "if (pm.response.code === 201) {", " const jsonData = pm.response.json();", " pm.environment.set('bookingId', jsonData.id);", " pm.environment.set('bookingNumber', jsonData.bookingNumber);", " console.log('Booking created:', jsonData.bookingNumber);", "}" ], "type": "text/javascript" } } ], "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"rateQuoteId\": \"{{rateQuoteId}}\",\n \"shipper\": {\n \"name\": \"Acme Corporation\",\n \"address\": {\n \"street\": \"123 Main Street\",\n \"city\": \"Rotterdam\",\n \"postalCode\": \"3000 AB\",\n \"country\": \"NL\"\n },\n \"contactName\": \"John Doe\",\n \"contactEmail\": \"john.doe@acme.com\",\n \"contactPhone\": \"+31612345678\"\n },\n \"consignee\": {\n \"name\": \"Global Trading Ltd\",\n \"address\": {\n \"street\": \"456 Harbor Road\",\n \"city\": \"Shanghai\",\n \"postalCode\": \"200000\",\n \"country\": \"CN\"\n },\n \"contactName\": \"Jane Smith\",\n \"contactEmail\": \"jane.smith@globaltrading.com\",\n \"contactPhone\": \"+8613800000000\"\n },\n \"cargoDescription\": \"Electronics and consumer goods - fragile items\",\n \"containers\": [\n {\n \"type\": \"40HC\",\n \"vgm\": 22000,\n \"sealNumber\": \"SEAL123456\"\n }\n ],\n \"specialInstructions\": \"Please handle with care. Delivery before 5 PM.\"\n}" }, "url": { "raw": "{{baseUrl}}/api/v1/bookings", "host": ["{{baseUrl}}"], "path": ["api", "v1", "bookings"] }, "description": "Create a new booking based on a rate quote. The booking will be in 'draft' status initially.\n\n**Requires authentication**" }, "response": [] }, { "name": "Get Booking by ID", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/bookings/{{bookingId}}", "host": ["{{baseUrl}}"], "path": ["api", "v1", "bookings", "{{bookingId}}"] }, "description": "Retrieve detailed information about a specific booking.\n\n**Requires authentication**" }, "response": [] }, { "name": "Get Booking by Number", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/bookings/number/{{bookingNumber}}", "host": ["{{baseUrl}}"], "path": ["api", "v1", "bookings", "number", "{{bookingNumber}}"] }, "description": "Retrieve detailed information about a specific booking using its booking number.\n\n**Requires authentication**" }, "response": [] }, { "name": "List Bookings", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/bookings?page=1&pageSize=20&status=confirmed", "host": ["{{baseUrl}}"], "path": ["api", "v1", "bookings"], "query": [ { "key": "page", "value": "1", "description": "Page number (1-based)" }, { "key": "pageSize", "value": "20", "description": "Items per page" }, { "key": "status", "value": "confirmed", "description": "Filter by status: draft, pending_confirmation, confirmed, in_transit, delivered, cancelled", "disabled": true } ] }, "description": "Retrieve a paginated list of bookings for the authenticated user's organization.\n\n**Requires authentication**" }, "response": [] }, { "name": "Fuzzy Search Bookings", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/bookings/search/fuzzy?q=WCM-2025&limit=20", "host": ["{{baseUrl}}"], "path": ["api", "v1", "bookings", "search", "fuzzy"], "query": [ { "key": "q", "value": "WCM-2025", "description": "Search query (minimum 2 characters)" }, { "key": "limit", "value": "20", "description": "Maximum number of results" } ] }, "description": "Search bookings using fuzzy matching. Tolerant to typos and partial matches. Searches across booking number, shipper, and consignee names.\n\n**Requires authentication**" }, "response": [] }, { "name": "Advanced Search Bookings", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/bookings/advanced/search?page=1&pageSize=20&status=confirmed,in_transit&createdFrom=2025-01-01&sortBy=createdAt&sortOrder=desc", "host": ["{{baseUrl}}"], "path": ["api", "v1", "bookings", "advanced", "search"], "query": [ { "key": "page", "value": "1" }, { "key": "pageSize", "value": "20" }, { "key": "status", "value": "confirmed,in_transit", "description": "Filter by status (comma-separated)" }, { "key": "search", "value": "WCM-2025", "description": "Search term (booking number)", "disabled": true }, { "key": "shipper", "value": "Acme", "description": "Filter by shipper name", "disabled": true }, { "key": "consignee", "value": "Global", "description": "Filter by consignee name", "disabled": true }, { "key": "createdFrom", "value": "2025-01-01", "description": "Filter by creation date (from)" }, { "key": "createdTo", "value": "2025-12-31", "description": "Filter by creation date (to)", "disabled": true }, { "key": "sortBy", "value": "createdAt", "description": "Sort field: bookingNumber, status, createdAt" }, { "key": "sortOrder", "value": "desc", "description": "Sort order: asc, desc" } ] }, "description": "Search bookings with advanced filtering options including status, date ranges, carrier, ports, shipper/consignee.\n\n**Requires authentication**" }, "response": [] }, { "name": "Export Bookings (CSV)", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"format\": \"csv\",\n \"fields\": [\n \"bookingNumber\",\n \"status\",\n \"shipper\",\n \"consignee\",\n \"origin\",\n \"destination\",\n \"carrier\",\n \"createdAt\"\n ]\n}" }, "url": { "raw": "{{baseUrl}}/api/v1/bookings/export", "host": ["{{baseUrl}}"], "path": ["api", "v1", "bookings", "export"] }, "description": "Export bookings to CSV format with optional filtering.\n\n**Requires authentication**" }, "response": [] }, { "name": "Export Bookings (Excel)", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"format\": \"xlsx\",\n \"bookingIds\": [\"{{bookingId}}\"]\n}" }, "url": { "raw": "{{baseUrl}}/api/v1/bookings/export", "host": ["{{baseUrl}}"], "path": ["api", "v1", "bookings", "export"] }, "description": "Export specific bookings to Excel format.\n\n**Requires authentication**" }, "response": [] } ], "description": "Booking management endpoints for creating, retrieving, and exporting bookings." }, { "name": "Users", "item": [ { "name": "Create User (Admin/Manager)", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"email\": \"jane.doe@acme.com\",\n \"firstName\": \"Jane\",\n \"lastName\": \"Doe\",\n \"role\": \"user\",\n \"organizationId\": \"{{organizationId}}\",\n \"password\": \"TempPassword123!\"\n}" }, "url": { "raw": "{{baseUrl}}/api/v1/users", "host": ["{{baseUrl}}"], "path": ["api", "v1", "users"] }, "description": "Create a new user account. Admin can create in any org, manager only in their own.\n\n**Requires authentication (Admin/Manager role)**" }, "response": [] }, { "name": "Get User by ID", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/users/{{userId}}", "host": ["{{baseUrl}}"], "path": ["api", "v1", "users", "{{userId}}"] }, "description": "Retrieve user details. Users can view users in their org, admins can view any.\n\n**Requires authentication**" }, "response": [] }, { "name": "Update User", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "PATCH", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"firstName\": \"Jane\",\n \"lastName\": \"Doe-Smith\",\n \"role\": \"manager\",\n \"isActive\": true\n}" }, "url": { "raw": "{{baseUrl}}/api/v1/users/{{userId}}", "host": ["{{baseUrl}}"], "path": ["api", "v1", "users", "{{userId}}"] }, "description": "Update user details (name, role, status).\n\n**Requires authentication (Admin/Manager role)**" }, "response": [] }, { "name": "Delete User", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "DELETE", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/users/{{userId}}", "host": ["{{baseUrl}}"], "path": ["api", "v1", "users", "{{userId}}"] }, "description": "Deactivate a user account.\n\n**Requires authentication (Admin role)**" }, "response": [] }, { "name": "List Users", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/users?page=1&pageSize=20&role=user", "host": ["{{baseUrl}}"], "path": ["api", "v1", "users"], "query": [ { "key": "page", "value": "1" }, { "key": "pageSize", "value": "20" }, { "key": "role", "value": "user", "description": "Filter by role: admin, manager, user, viewer", "disabled": true } ] }, "description": "Retrieve a paginated list of users in your organization. Admins can see all users.\n\n**Requires authentication**" }, "response": [] }, { "name": "Update Own Password", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "PATCH", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"currentPassword\": \"SecurePassword123!\",\n \"newPassword\": \"NewSecurePassword456!\"\n}" }, "url": { "raw": "{{baseUrl}}/api/v1/users/me/password", "host": ["{{baseUrl}}"], "path": ["api", "v1", "users", "me", "password"] }, "description": "Update your own password. Requires current password.\n\n**Requires authentication**" }, "response": [] } ], "description": "User management endpoints for creating, updating, and listing users." }, { "name": "Organizations", "item": [ { "name": "Create Organization (Admin)", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"name\": \"Acme Freight Forwarding\",\n \"type\": \"FREIGHT_FORWARDER\",\n \"address\": {\n \"street\": \"123 Main Street\",\n \"city\": \"Rotterdam\",\n \"state\": \"South Holland\",\n \"postalCode\": \"3000 AB\",\n \"country\": \"NL\"\n },\n \"logoUrl\": \"https://example.com/logo.png\"\n}" }, "url": { "raw": "{{baseUrl}}/api/v1/organizations", "host": ["{{baseUrl}}"], "path": ["api", "v1", "organizations"] }, "description": "Create a new organization (freight forwarder, carrier, or shipper).\n\n**Requires authentication (Admin role)**" }, "response": [] }, { "name": "Get Organization by ID", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/organizations/{{organizationId}}", "host": ["{{baseUrl}}"], "path": ["api", "v1", "organizations", "{{organizationId}}"] }, "description": "Retrieve organization details. Users can view their own organization, admins can view any.\n\n**Requires authentication**" }, "response": [] }, { "name": "Update Organization", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "PATCH", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"name\": \"Acme Freight Forwarding Inc.\",\n \"address\": {\n \"street\": \"456 New Street\",\n \"city\": \"Rotterdam\",\n \"postalCode\": \"3000 AB\",\n \"country\": \"NL\"\n },\n \"isActive\": true\n}" }, "url": { "raw": "{{baseUrl}}/api/v1/organizations/{{organizationId}}", "host": ["{{baseUrl}}"], "path": ["api", "v1", "organizations", "{{organizationId}}"] }, "description": "Update organization details (name, address, logo, status).\n\n**Requires authentication (Admin/Manager role)**" }, "response": [] }, { "name": "List Organizations", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/organizations?page=1&pageSize=20&type=FREIGHT_FORWARDER", "host": ["{{baseUrl}}"], "path": ["api", "v1", "organizations"], "query": [ { "key": "page", "value": "1" }, { "key": "pageSize", "value": "20" }, { "key": "type", "value": "FREIGHT_FORWARDER", "description": "Filter by type: FREIGHT_FORWARDER, CARRIER, SHIPPER", "disabled": true } ] }, "description": "Retrieve a paginated list of organizations. Admins see all, others see only their own.\n\n**Requires authentication**" }, "response": [] } ], "description": "Organization management endpoints for creating, updating, and listing organizations." }, { "name": "Notifications", "item": [ { "name": "Get Notifications", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/notifications?page=1&limit=20&read=false", "host": ["{{baseUrl}}"], "path": ["api", "v1", "notifications"], "query": [ { "key": "page", "value": "1" }, { "key": "limit", "value": "20" }, { "key": "read", "value": "false", "description": "Filter by read status", "disabled": true } ] }, "description": "Get user notifications with pagination and filtering.\n\n**Requires authentication**" }, "response": [] }, { "name": "Get Unread Notifications", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/notifications/unread?limit=50", "host": ["{{baseUrl}}"], "path": ["api", "v1", "notifications", "unread"], "query": [ { "key": "limit", "value": "50" } ] }, "description": "Get unread notifications.\n\n**Requires authentication**" }, "response": [] }, { "name": "Get Unread Count", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/notifications/unread/count", "host": ["{{baseUrl}}"], "path": ["api", "v1", "notifications", "unread", "count"] }, "description": "Get unread notifications count.\n\n**Requires authentication**" }, "response": [] }, { "name": "Mark Notification as Read", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "PATCH", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/notifications/:id/read", "host": ["{{baseUrl}}"], "path": ["api", "v1", "notifications", ":id", "read"], "variable": [ { "key": "id", "value": "notification-id" } ] }, "description": "Mark notification as read.\n\n**Requires authentication**" }, "response": [] }, { "name": "Mark All as Read", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "POST", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/notifications/read-all", "host": ["{{baseUrl}}"], "path": ["api", "v1", "notifications", "read-all"] }, "description": "Mark all notifications as read.\n\n**Requires authentication**" }, "response": [] }, { "name": "Delete Notification", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "DELETE", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/notifications/:id", "host": ["{{baseUrl}}"], "path": ["api", "v1", "notifications", ":id"], "variable": [ { "key": "id", "value": "notification-id" } ] }, "description": "Delete notification.\n\n**Requires authentication**" }, "response": [] } ], "description": "Notification management endpoints for managing user notifications." }, { "name": "Audit Logs", "item": [ { "name": "Get Audit Logs", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/audit-logs?page=1&limit=50&action=BOOKING_CREATED&status=success", "host": ["{{baseUrl}}"], "path": ["api", "v1", "audit-logs"], "query": [ { "key": "page", "value": "1" }, { "key": "limit", "value": "50" }, { "key": "userId", "value": "user-id", "description": "Filter by user ID", "disabled": true }, { "key": "action", "value": "BOOKING_CREATED", "description": "Filter by action (comma-separated)", "disabled": true }, { "key": "status", "value": "success", "description": "Filter by status (comma-separated)", "disabled": true }, { "key": "resourceType", "value": "booking", "description": "Filter by resource type", "disabled": true }, { "key": "startDate", "value": "2025-01-01T00:00:00Z", "description": "Filter by start date (ISO 8601)", "disabled": true }, { "key": "endDate", "value": "2025-12-31T23:59:59Z", "description": "Filter by end date (ISO 8601)", "disabled": true } ] }, "description": "Get audit logs with filters.\n\n**Requires authentication (Admin/Manager role)**" }, "response": [] }, { "name": "Get Resource Audit Trail", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/audit-logs/resource/:type/:id", "host": ["{{baseUrl}}"], "path": ["api", "v1", "audit-logs", "resource", ":type", ":id"], "variable": [ { "key": "type", "value": "booking" }, { "key": "id", "value": "{{bookingId}}" } ] }, "description": "Get audit trail for a specific resource.\n\n**Requires authentication**" }, "response": [] }, { "name": "Get Organization Activity", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/audit-logs/organization/activity?limit=50", "host": ["{{baseUrl}}"], "path": ["api", "v1", "audit-logs", "organization", "activity"], "query": [ { "key": "limit", "value": "50" } ] }, "description": "Get recent organization activity.\n\n**Requires authentication (Admin/Manager role)**" }, "response": [] }, { "name": "Get User Activity", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/audit-logs/user/:userId/activity?limit=50", "host": ["{{baseUrl}}"], "path": ["api", "v1", "audit-logs", "user", ":userId", "activity"], "query": [ { "key": "limit", "value": "50" } ], "variable": [ { "key": "userId", "value": "{{userId}}" } ] }, "description": "Get user activity history.\n\n**Requires authentication (Admin/Manager role)**" }, "response": [] } ], "description": "Audit log endpoints for compliance and security monitoring." }, { "name": "GDPR", "item": [ { "name": "Export User Data (JSON)", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/gdpr/export", "host": ["{{baseUrl}}"], "path": ["gdpr", "export"] }, "description": "Export all personal data in JSON format (GDPR Article 20 - Right to Data Portability).\n\n**Requires authentication**" }, "response": [] }, { "name": "Export User Data (CSV)", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/gdpr/export/csv", "host": ["{{baseUrl}}"], "path": ["gdpr", "export", "csv"] }, "description": "Export personal data in CSV format for easy viewing.\n\n**Requires authentication**" }, "response": [] }, { "name": "Delete Account", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "DELETE", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"confirmEmail\": \"{{userEmail}}\",\n \"reason\": \"No longer using the service\"\n}" }, "url": { "raw": "{{baseUrl}}/gdpr/delete-account", "host": ["{{baseUrl}}"], "path": ["gdpr", "delete-account"] }, "description": "Permanently delete or anonymize user data (GDPR Article 17 - Right to Erasure).\n\n**Requires authentication**" }, "response": [] }, { "name": "Record Consent", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"consentType\": \"marketing\",\n \"granted\": true\n}" }, "url": { "raw": "{{baseUrl}}/gdpr/consent", "host": ["{{baseUrl}}"], "path": ["gdpr", "consent"] }, "description": "Record consent for marketing, analytics, etc. (GDPR Article 7).\n\n**Requires authentication**" }, "response": [] }, { "name": "Withdraw Consent", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"consentType\": \"marketing\"\n}" }, "url": { "raw": "{{baseUrl}}/gdpr/consent/withdraw", "host": ["{{baseUrl}}"], "path": ["gdpr", "consent", "withdraw"] }, "description": "Withdraw consent for marketing or analytics (GDPR Article 7.3).\n\n**Requires authentication**" }, "response": [] }, { "name": "Get Consent Status", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/gdpr/consent", "host": ["{{baseUrl}}"], "path": ["gdpr", "consent"] }, "description": "Retrieve current consent preferences.\n\n**Requires authentication**" }, "response": [] } ], "description": "GDPR compliance endpoints for data portability, erasure, and consent management." }, { "name": "Webhooks", "item": [ { "name": "Create Webhook", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"url\": \"https://your-domain.com/webhooks/xpeditis\",\n \"events\": [\"booking.created\", \"booking.confirmed\", \"shipment.departed\"],\n \"description\": \"Production webhook for booking events\",\n \"headers\": {\n \"X-API-Key\": \"your-api-key\"\n }\n}" }, "url": { "raw": "{{baseUrl}}/api/v1/webhooks", "host": ["{{baseUrl}}"], "path": ["api", "v1", "webhooks"] }, "description": "Create a new webhook.\n\n**Requires authentication (Admin/Manager role)**" }, "response": [] }, { "name": "Get All Webhooks", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/webhooks", "host": ["{{baseUrl}}"], "path": ["api", "v1", "webhooks"] }, "description": "Get all webhooks for organization.\n\n**Requires authentication (Admin/Manager role)**" }, "response": [] }, { "name": "Get Webhook by ID", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/webhooks/:id", "host": ["{{baseUrl}}"], "path": ["api", "v1", "webhooks", ":id"], "variable": [ { "key": "id", "value": "webhook-id" } ] }, "description": "Get webhook by ID.\n\n**Requires authentication (Admin/Manager role)**" }, "response": [] }, { "name": "Update Webhook", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "PATCH", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"url\": \"https://your-domain.com/webhooks/xpeditis-v2\",\n \"events\": [\"booking.created\", \"booking.confirmed\"],\n \"description\": \"Updated webhook\"\n}" }, "url": { "raw": "{{baseUrl}}/api/v1/webhooks/:id", "host": ["{{baseUrl}}"], "path": ["api", "v1", "webhooks", ":id"], "variable": [ { "key": "id", "value": "webhook-id" } ] }, "description": "Update webhook.\n\n**Requires authentication (Admin/Manager role)**" }, "response": [] }, { "name": "Activate Webhook", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "POST", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/webhooks/:id/activate", "host": ["{{baseUrl}}"], "path": ["api", "v1", "webhooks", ":id", "activate"], "variable": [ { "key": "id", "value": "webhook-id" } ] }, "description": "Activate webhook.\n\n**Requires authentication (Admin/Manager role)**" }, "response": [] }, { "name": "Deactivate Webhook", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "POST", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/webhooks/:id/deactivate", "host": ["{{baseUrl}}"], "path": ["api", "v1", "webhooks", ":id", "deactivate"], "variable": [ { "key": "id", "value": "webhook-id" } ] }, "description": "Deactivate webhook.\n\n**Requires authentication (Admin/Manager role)**" }, "response": [] }, { "name": "Delete Webhook", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "DELETE", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/webhooks/:id", "host": ["{{baseUrl}}"], "path": ["api", "v1", "webhooks", ":id"], "variable": [ { "key": "id", "value": "webhook-id" } ] }, "description": "Delete webhook.\n\n**Requires authentication (Admin/Manager role)**" }, "response": [] } ], "description": "Webhook management endpoints for creating and managing event webhooks." }, { "name": "Dashboard", "item": [ { "name": "Get Dashboard KPIs", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/dashboard/kpis", "host": ["{{baseUrl}}"], "path": ["api", "v1", "dashboard", "kpis"] }, "description": "Get dashboard KPIs (total bookings, revenue, etc.).\n\n**Requires authentication**" }, "response": [] }, { "name": "Get Bookings Chart Data", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/dashboard/bookings-chart", "host": ["{{baseUrl}}"], "path": ["api", "v1", "dashboard", "bookings-chart"] }, "description": "Get bookings chart data (last 6 months).\n\n**Requires authentication**" }, "response": [] }, { "name": "Get Top Trade Lanes", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/dashboard/top-trade-lanes", "host": ["{{baseUrl}}"], "path": ["api", "v1", "dashboard", "top-trade-lanes"] }, "description": "Get top 5 trade lanes by volume.\n\n**Requires authentication**" }, "response": [] }, { "name": "Get Dashboard Alerts", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/dashboard/alerts", "host": ["{{baseUrl}}"], "path": ["api", "v1", "dashboard", "alerts"] }, "description": "Get dashboard alerts (delayed shipments, pending confirmations, etc.).\n\n**Requires authentication**" }, "response": [] } ], "description": "Dashboard analytics endpoints for KPIs, charts, and alerts." }, { "name": "Admin - CSV Rates", "item": [ { "name": "Upload CSV Rate File", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "POST", "header": [], "body": { "mode": "formdata", "formdata": [ { "key": "companyName", "value": "SSC Consolidation", "type": "text" }, { "key": "file", "type": "file", "src": "/path/to/rates.csv" } ] }, "url": { "raw": "{{baseUrl}}/api/v1/admin/csv-rates/upload", "host": ["{{baseUrl}}"], "path": ["api", "v1", "admin", "csv-rates", "upload"] }, "description": "Upload a CSV file containing shipping rates for a carrier company. File must be valid CSV format with required columns. Maximum file size: 10MB.\n\n**Requires authentication (ADMIN role)**" }, "response": [] }, { "name": "Get All CSV Configurations", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/admin/csv-rates/config", "host": ["{{baseUrl}}"], "path": ["api", "v1", "admin", "csv-rates", "config"] }, "description": "Get all CSV rate configurations.\n\n**Requires authentication (ADMIN role)**" }, "response": [] }, { "name": "Get CSV Config by Company", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/admin/csv-rates/config/:companyName", "host": ["{{baseUrl}}"], "path": ["api", "v1", "admin", "csv-rates", "config", ":companyName"], "variable": [ { "key": "companyName", "value": "SSC Consolidation" } ] }, "description": "Get CSV configuration for specific company.\n\n**Requires authentication (ADMIN role)**" }, "response": [] }, { "name": "Validate CSV File", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "POST", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/admin/csv-rates/validate/:companyName", "host": ["{{baseUrl}}"], "path": ["api", "v1", "admin", "csv-rates", "validate", ":companyName"], "variable": [ { "key": "companyName", "value": "SSC Consolidation" } ] }, "description": "Validate CSV file structure and data for a specific company.\n\n**Requires authentication (ADMIN role)**" }, "response": [] }, { "name": "Delete CSV Configuration", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "DELETE", "header": [], "url": { "raw": "{{baseUrl}}/api/v1/admin/csv-rates/config/:companyName", "host": ["{{baseUrl}}"], "path": ["api", "v1", "admin", "csv-rates", "config", ":companyName"], "variable": [ { "key": "companyName", "value": "SSC Consolidation" } ] }, "description": "Delete CSV rate configuration for a company.\n\n**Requires authentication (ADMIN role)**" }, "response": [] } ], "description": "Admin-only endpoints for managing CSV rate files and configurations." }, { "name": "Health", "item": [ { "name": "Health Check", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/health", "host": ["{{baseUrl}}"], "path": ["health"] }, "description": "Health check endpoint. Returns service status and uptime.\n\n**No authentication required**" }, "response": [] }, { "name": "Readiness Check", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/health/ready", "host": ["{{baseUrl}}"], "path": ["health", "ready"] }, "description": "Readiness check endpoint. Verifies database and Redis connectivity.\n\n**No authentication required**" }, "response": [] }, { "name": "Liveness Check", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/health/live", "host": ["{{baseUrl}}"], "path": ["health", "live"] }, "description": "Liveness check endpoint. Returns alive status.\n\n**No authentication required**" }, "response": [] } ], "description": "Health check endpoints for monitoring service status." } ] }