diff --git a/example_routines/jetblue_oneway_flight_search_input.json b/example_routines/jetblue_oneway_flight_search_input.json new file mode 100644 index 0000000..d45c574 --- /dev/null +++ b/example_routines/jetblue_oneway_flight_search_input.json @@ -0,0 +1,7 @@ +{ + "origin": "BOS", + "destination": "SFO", + "departure_date": "2025-12-12", + "adult_count": "1", + "award_booking": "false" +} \ No newline at end of file diff --git a/example_routines/jetblue_oneway_flight_search_routine.json b/example_routines/jetblue_oneway_flight_search_routine.json new file mode 100644 index 0000000..4735436 --- /dev/null +++ b/example_routines/jetblue_oneway_flight_search_routine.json @@ -0,0 +1,151 @@ +{ + "id": "routine_c9f93f1e-0e7a-4a3b-9f4b-9f4d3bb5e6e1", + "created_at": 1730803200, + "updated_at": 1730803200, + "name": "JetBlue One-Way Flight Search (NGB)", + "description": "Navigate to JetBlue booking page and perform a one-way flight search via cb-flight-search/v1/search/NGB using observed headers and dynamic tokens.", + "operations": [ + { + "type": "navigate", + "url": "https://www.jetblue.com/booking/flights?from={{origin}}&to={{destination}}&depart={{departure_date}}&isMultiCity=false&noOfRoute=1&adults={{adult_count}}&children=0&infants=0&sharedMarket=false&roundTripFaresFlag=false&usePoints={{award_booking}}" + }, + { + "type": "sleep", + "timeout_seconds": 2.5 + }, + { + "type": "fetch", + "endpoint": { + "url": "https://cb-api.jetblue.com/cb-flight-search/v1/search/NGB", + "description": "Search one-way flights by origin, destination, and departure date (site_code=NGB).", + "method": "POST", + "headers": { + "X-B3-SpanId": "\"{{sessionStorage:TrueBlueUserSessionStorage.X-B3-SpanId}}\"", + "sec-ch-ua-platform": "\"macOS\"", + "Referer": "https://www.jetblue.com/booking/flights?from={{origin}}&to={{destination}}&depart={{departure_date}}&isMultiCity=false&noOfRoute=1&adults={{adult_count}}&children=0&infants=0&sharedMarket=false&roundTripFaresFlag=false&usePoints={{award_booking}}", + "sec-ch-ua": "\"Chromium\";v=\"142\", \"Google Chrome\";v=\"142\", \"Not_A Brand\";v=\"99\"", + "sec-ch-ua-mobile": "?0", + "X-B3-TraceId": "\"{{sessionStorage:TrueBlueUserSessionStorage.X-B3-TraceId}}\"", + "ocp-apim-subscription-key": "\"{{localStorage:jb-app-config-original.crystalBlueSubscriptionKey}}\"", + "Accept": "application/json, text/plain, */*", + "Content-Type": "application/json", + "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" + }, + "body": { + "awardBooking": "{{award_booking}}", + "travelerTypes": [ + { + "type": "ADULT", + "quantity": "{{adult_count}}" + } + ], + "searchComponents": [ + { + "from": "\"{{origin}}\"", + "to": "\"{{destination}}\"", + "date": "\"{{departure_date}}\"" + } + ] + }, + "credentials": "same-origin" + }, + "session_storage_key": "cb.flightSearch.response" + }, + { + "type": "return", + "session_storage_key": "cb.flightSearch.response" + } + ], + "incognito": true, + "parameters": [ + { + "name": "origin", + "type": "string", + "required": true, + "description": "IATA/city code for origin (e.g., BOS, XBP).", + "default": null, + "examples": [ + "BOS", + "XBP" + ], + "min_length": 3, + "max_length": 4, + "min_value": null, + "max_value": null, + "pattern": "^[A-Z0-9]{3,4}$", + "enum_values": null, + "format": null + }, + { + "name": "destination", + "type": "string", + "required": true, + "description": "IATA/city code for destination (e.g., SFO, JFK).", + "default": null, + "examples": [ + "SFO", + "JFK" + ], + "min_length": 3, + "max_length": 4, + "min_value": null, + "max_value": null, + "pattern": "^[A-Z0-9]{3,4}$", + "enum_values": null, + "format": null + }, + { + "name": "departure_date", + "type": "date", + "required": true, + "description": "Departure date in YYYY-MM-DD.", + "default": null, + "examples": [ + "2025-12-12" + ], + "min_length": null, + "max_length": null, + "min_value": null, + "max_value": null, + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "enum_values": null, + "format": "YYYY-MM-DD" + }, + { + "name": "adult_count", + "type": "integer", + "required": true, + "description": "Number of adult travelers.", + "default": 1, + "examples": [ + 1, + 2 + ], + "min_length": null, + "max_length": null, + "min_value": 1, + "max_value": 9, + "pattern": null, + "enum_values": null, + "format": null + }, + { + "name": "award_booking", + "type": "boolean", + "required": true, + "description": "Use points (true) or cash (false). Injected without quotes.", + "default": false, + "examples": [ + false, + true + ], + "min_length": null, + "max_length": null, + "min_value": null, + "max_value": null, + "pattern": null, + "enum_values": null, + "format": null + } + ] +} \ No newline at end of file