2030 lines
68 KiB
JSON
2030 lines
68 KiB
JSON
{
|
|
"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."
|
|
}
|
|
]
|
|
}
|