xpeditis2.0/postman/Xpeditis_Complete_API.postman_collection.json
2025-11-04 07:30:15 +01:00

2030 lines
66 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."
}
]
}