Multi-Destination Bookings with ESIM Optimization
Overview
Hubby now supports multi-destination bookings where customers can specify an array of destinations for their trip. The system automatically resolves the fewest number of ESIMs required to cover all destinations, optimizing both cost and convenience for travelers.
How It Works
Multi-Destination Specification
- Customers can provide an array of destination countries/regions
- The system analyzes coverage overlap between destinations
- ESIMs are selected to minimize the total number required
ESIM Optimization Algorithm
- The system identifies which ESIMs provide coverage for multiple destinations
- Regional ESIMs that cover multiple countries are prioritized
- Individual country ESIMs are used only when necessary
- The algorithm ensures complete coverage with minimal ESIM count
Coverage Analysis
- Each ESIM's coverage area is analyzed against the requested destinations
- Overlapping coverage is identified and utilized
- The system selects the optimal combination of ESIMs
Benefits
- Cost Optimization: Fewer ESIMs mean lower total cost
- Simplified Management: Fewer ESIMs to activate and manage
- Seamless Travel: Automatic coverage across all destinations
- Intelligent Routing: System handles complex multi-country itineraries
Use Cases
- European Tours: Multiple countries in a single trip
- Business Travel: Conferences and meetings across regions
- Backpacking: Extended travel through multiple countries
- Cruise Travel: Multiple port destinations
Technical Implementation
API Endpoints
Hubby provides two API endpoints for different environments:
- Production:
https://api.hubbyesim.com/api- Use this for live applications - Staging:
https://api-staging.hubby.dev/api- Use this for testing and development
Always test thoroughly in staging before using production.
API Request Structure
When creating a booking with multiple destinations, provide an array of destination specifications:
{
"departure_date": "2024-06-15",
"package_specifications": [
{
"destination": ["FRA", "DEU", "ITA", "ESP"] // Array of country codes
}
]
}Response Structure
The response is identical to a typical booking response.
Code Example
Here's a complete example of implementing multi-destination bookings:
import crypto from 'crypto';
// Configuration
const API_SECRET = 'your_api_secret';
const API_KEY = 'your_api_key';
// Use staging for development, production for live
const BASE_URL = process.env.NODE_ENV === 'production'
? 'https://api.hubbyesim.com/api'
: 'https://api-staging.hubby.dev/api';
// Generate HMAC signature for authentication
function generateSignature(timestamp: string, method: string, path: string): string {
const payload = `${timestamp}${method}${path}`;
return crypto
.createHmac('sha256', API_SECRET)
.update(payload)
.digest('hex');
}
// Generate API headers
function generateHeaders(method: string, path: string) {
const timestamp = Math.floor(Date.now() / 1000).toString();
const signature = generateSignature(timestamp, method, path);
return {
'x-api-key': API_KEY,
'x-timestamp': timestamp,
'x-signature': signature,
'Content-Type': 'application/json'
};
}
// Create a multi-destination booking
async function createMultiDestinationBooking(
destinations: string[],
departureDate: string,
promoCode?: string
) {
const path = '/api/bookings';
const method = 'POST';
const requestBody: any = {
departure_date: departureDate,
package_specifications: [
{
destination: destinations
}
]
};
if (promoCode) {
requestBody.promo_code = promoCode;
}
const response = await fetch(`${BASE_URL}${path}`, {
method,
headers: generateHeaders(method, path),
body: JSON.stringify(requestBody)
});
return response.json();
}
This feature enables travelers to enjoy seamless connectivity across multiple destinations while minimizing costs and complexity.