This guide helps you understand the exact differences between UAT and Production environments, and identify why Production returns 404 errors while UAT works correctly.
- Import the enhanced
AirDuCap-API-Postman-Collection.jsoninto Postman - Run the collection sections in order to diagnose the issues
Purpose: Verify basic connectivity to both environments
Tests to Run:
UAT - Health Check: Should return 200 OK with airport dataProduction - Health Check: Currently returns 404 - this is the main issue
Expected Results:
// UAT Response (Working)
[
{
"id": 94,
"name": "Cape Winelands Airport",
"city": "Cape Winelands",
"country": "South Africa"
}
]
// Production Response (Broken)
404 Not FoundPurpose: Compare the exact same flight search between environments
Key Route: Cape Winelands (94) to Victoria West (158)
- Date: September 9, 2025
- Return: September 30, 2025
- Adults: 1
What to Look For:
- UAT: Different aircraft than client's website
- Production: 404 error or different aircraft fleet
Purpose: Check if authentication is the issue
Tests:
- Basic auth with headers
- Different content-type headers
- OPTIONS requests to check CORS
Purpose: Find the correct Production API endpoints
Alternative Endpoints to Test:
/api/airports/instead of/airports/api/list//api/flights/search/instead of/flights/api/search/- Different authentication methods
The 404 errors suggest:
- Different URL structure: Production might use different endpoint paths
- Authentication differences: Different auth requirements
- Domain/subdomain differences: API might be on a different subdomain
- Version differences: API versioning might be different
- UAT Aircraft Fleet: Limited test aircraft
- Production Aircraft Fleet: Full commercial fleet
- Image URLs: Different CDN or image storage
- Pricing: Different pricing engines
# In Postman, run these requests:
1. "UAT - Health Check"
2. "Production - Health Check"Analysis:
- If UAT works and Production fails → URL/endpoint issue
- If both fail → Authentication issue
- If both work → Your plugin has a different issue
# Test different auth methods:
1. "UAT - Check Authentication"
2. "Production - Check Authentication"
3. "Production - Different Auth Headers"# Try alternative endpoints:
1. "Production - Try Alternative Airport Endpoint"
2. "Production - Try Alternative Flight Endpoint"
3. "Production - Root API Check"
4. "Production - OPTIONS Request"# Get complete airport lists:
1. "UAT - Full Airport List"
2. "Production - Full Airport List"Likely Causes:
- API moved to different subdomain (e.g.,
api.airducap.com) - Different endpoint structure (e.g.,
/v1/airports/vs/airports/api/) - API versioning in URLs (e.g.,
/api/v2/)
Solution: Test alternative URL patterns
Likely Causes:
- Production requires JWT tokens instead of Basic Auth
- Different credential requirements
- IP whitelist restrictions
Solution: Contact client for Production API credentials
Expected: UAT has test data, Production has real fleet Solution: Use Production environment for real data
When you run the collection, look for these patterns:
UAT Airports found: 15
UAT Sample airport: {
"id": 94,
"name": "Cape Winelands Airport",
"city": "Cape Winelands"
}
UAT Available Flights: 2
Flight 1:
Aircraft: Cessna 208B Grand Caravan
Price: R 8500
Speed: 170 knots
❌ Production API returns 404 - Endpoint not found
Response: {"error": "Not Found", "message": "The requested resource was not found"}
- Update your plugin's API URLs
- Modify authentication method if needed
- Test with new endpoints
- Contact client for Production API access
- Request proper authentication tokens
- Update plugin configuration
- This is expected (UAT vs Production data)
- Use Production for real aircraft fleet
- Update plugin to handle both environments
Based on test results, you may need to update:
// In airducap-integration.php
define('AIRDUCAP_API_BASE', 'https://api.airducap.com'); // If API moved
define('AIRDUCAP_AUTH_METHOD', 'jwt'); // If auth changedBased on test results, ask the client:
- API Access: "What are the correct Production API endpoints and credentials?"
- Environment Differences: "Should the plugin use UAT or Production data?"
- Authentication: "What authentication method does Production require?"
- URL Structure: "Have the Production API URLs changed recently?"
✅ Both environments return 200 OK
✅ Airport searches work in both environments
✅ Flight searches return results
✅ Aircraft data matches client's website
✅ Images load correctly
✅ Booking URLs are functional
Run this testing suite to identify exactly where the disconnect is between your plugin and the client's working website.