@gojinko/cli 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -20
- package/SKILL.md +29 -16
- package/dist/commands/auth/index.js +13 -13
- package/dist/commands/auth/index.js.map +1 -1
- package/dist/commands/book/index.d.ts +3 -0
- package/dist/commands/book/index.d.ts.map +1 -0
- package/dist/commands/book/index.js +61 -0
- package/dist/commands/book/index.js.map +1 -0
- package/dist/commands/flights/calendar.d.ts.map +1 -1
- package/dist/commands/flights/calendar.js +15 -9
- package/dist/commands/flights/calendar.js.map +1 -1
- package/dist/commands/flights/destinations.d.ts.map +1 -1
- package/dist/commands/flights/destinations.js +20 -6
- package/dist/commands/flights/destinations.js.map +1 -1
- package/dist/commands/flights/find.d.ts +3 -0
- package/dist/commands/flights/find.d.ts.map +1 -0
- package/dist/commands/flights/find.js +43 -0
- package/dist/commands/flights/find.js.map +1 -0
- package/dist/commands/flights/index.d.ts.map +1 -1
- package/dist/commands/flights/index.js +2 -0
- package/dist/commands/flights/index.js.map +1 -1
- package/dist/commands/flights/search.d.ts.map +1 -1
- package/dist/commands/flights/search.js +0 -3
- package/dist/commands/flights/search.js.map +1 -1
- package/dist/commands/schema.d.ts.map +1 -1
- package/dist/commands/schema.js +63 -32
- package/dist/commands/schema.js.map +1 -1
- package/dist/commands/trip/index.d.ts.map +1 -1
- package/dist/commands/trip/index.js +1 -3
- package/dist/commands/trip/index.js.map +1 -1
- package/dist/commands/trip/travelers.d.ts.map +1 -1
- package/dist/commands/trip/travelers.js +6 -5
- package/dist/commands/trip/travelers.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -11,20 +11,20 @@ npm install -g @gojinko/cli
|
|
|
11
11
|
## Authentication
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
#
|
|
14
|
+
# Configure via CLI
|
|
15
15
|
jinko auth login --key jnk_YOUR_KEY
|
|
16
16
|
|
|
17
17
|
# Or environment variable
|
|
18
18
|
export JINKO_API_KEY=jnk_YOUR_KEY
|
|
19
|
-
|
|
20
|
-
# OAuth token also supported
|
|
21
|
-
export JINKO_TOKEN=eyJ...your.jwt.token
|
|
22
19
|
```
|
|
23
20
|
|
|
24
21
|
## Quick Start
|
|
25
22
|
|
|
26
23
|
```bash
|
|
27
|
-
#
|
|
24
|
+
# Find cheapest flights (cached)
|
|
25
|
+
jinko flights find --from PAR --to NYC --date 2026-04-15
|
|
26
|
+
|
|
27
|
+
# Live flight search
|
|
28
28
|
jinko flights search --from PAR --to NYC --date 2026-04-15
|
|
29
29
|
|
|
30
30
|
# Explore destinations
|
|
@@ -34,7 +34,7 @@ jinko flights destinations --from PAR
|
|
|
34
34
|
jinko flights search --offer-token <offer_token>
|
|
35
35
|
|
|
36
36
|
# One-shot booking → returns checkout URL
|
|
37
|
-
jinko
|
|
37
|
+
jinko book \
|
|
38
38
|
--trip-item-token <token> \
|
|
39
39
|
--travelers '[{"first_name":"John","last_name":"Doe","date_of_birth":"1990-01-15","gender":"MALE","passenger_type":"ADULT"}]' \
|
|
40
40
|
--contact '{"email":"john@example.com","phone":"+33612345678"}'
|
|
@@ -42,23 +42,37 @@ jinko trip checkout \
|
|
|
42
42
|
|
|
43
43
|
## Commands
|
|
44
44
|
|
|
45
|
-
### Flights
|
|
45
|
+
### Flights — Cached
|
|
46
|
+
|
|
46
47
|
| Command | Description |
|
|
47
48
|
|---------|-------------|
|
|
48
|
-
| `flights
|
|
49
|
+
| `flights find` | Find cheapest flights from cached data |
|
|
49
50
|
| `flights destinations` | Discover destinations from origin airports |
|
|
50
51
|
| `flights calendar` | Browse prices across a date range |
|
|
51
52
|
|
|
52
|
-
###
|
|
53
|
+
### Flights — Live
|
|
54
|
+
|
|
55
|
+
| Command | Description |
|
|
56
|
+
|---------|-------------|
|
|
57
|
+
| `flights search` | Live flight search or price-check an offer |
|
|
58
|
+
|
|
59
|
+
### Trip Management
|
|
60
|
+
|
|
53
61
|
| Command | Description |
|
|
54
62
|
|---------|-------------|
|
|
55
|
-
| `trip create` | Create a new trip |
|
|
63
|
+
| `trip create` | Create a new trip (shopping cart) |
|
|
56
64
|
| `trip show` | Show trip details |
|
|
57
65
|
| `trip add-flight` | Add a flight to a trip |
|
|
58
66
|
| `trip travelers` | Set travelers on a trip |
|
|
59
|
-
|
|
67
|
+
|
|
68
|
+
### Booking
|
|
69
|
+
|
|
70
|
+
| Command | Description |
|
|
71
|
+
|---------|-------------|
|
|
72
|
+
| `book` | One-shot or existing trip checkout → returns checkout URL |
|
|
60
73
|
|
|
61
74
|
### Utility
|
|
75
|
+
|
|
62
76
|
| Command | Description |
|
|
63
77
|
|---------|-------------|
|
|
64
78
|
| `auth login` | Configure API key or OAuth token |
|
|
@@ -67,6 +81,14 @@ jinko trip checkout \
|
|
|
67
81
|
| `config show` | Show current config |
|
|
68
82
|
| `schema [cmd]` | Show request/response schemas |
|
|
69
83
|
|
|
84
|
+
## Token Flow
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
flights find (filters) → offer_token (cached)
|
|
88
|
+
flights search (offer_token) → trip_item_token (live pricing)
|
|
89
|
+
book (trip_item_token + travelers + contact) → checkout_url
|
|
90
|
+
```
|
|
91
|
+
|
|
70
92
|
## Output Formats
|
|
71
93
|
|
|
72
94
|
```bash
|
|
@@ -77,17 +99,10 @@ jinko flights search --from PAR --to NYC --date 2026-04-15
|
|
|
77
99
|
jinko flights search --from PAR --to NYC --date 2026-04-15 --format table
|
|
78
100
|
```
|
|
79
101
|
|
|
80
|
-
## Token Flow
|
|
81
|
-
|
|
82
|
-
```
|
|
83
|
-
flights search (filters) → offer_token
|
|
84
|
-
flights search (offer_token) → trip_item_token
|
|
85
|
-
trip checkout (trip_item_token + travelers + contact) → checkout_url
|
|
86
|
-
```
|
|
87
|
-
|
|
88
102
|
## Schema Introspection
|
|
89
103
|
|
|
90
104
|
```bash
|
|
91
105
|
jinko schema # List all commands
|
|
92
|
-
jinko schema flights.
|
|
106
|
+
jinko schema flights.find # Show request/response shapes
|
|
107
|
+
jinko schema book # Show booking contract
|
|
93
108
|
```
|
package/SKILL.md
CHANGED
|
@@ -4,7 +4,7 @@ You are using `jinko`, a CLI for searching flights, managing trips, and booking
|
|
|
4
4
|
|
|
5
5
|
## Authentication
|
|
6
6
|
|
|
7
|
-
Before any command,
|
|
7
|
+
Before any command, configure your API key:
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
10
|
jinko auth login --key jnk_YOUR_KEY
|
|
@@ -14,13 +14,13 @@ export JINKO_API_KEY=jnk_YOUR_KEY
|
|
|
14
14
|
|
|
15
15
|
Check status: `jinko auth status`
|
|
16
16
|
|
|
17
|
-
## Core Workflow:
|
|
17
|
+
## Core Workflow: Find → Price → Book
|
|
18
18
|
|
|
19
19
|
### Step 1: Discover flights (pick one approach)
|
|
20
20
|
|
|
21
|
-
**
|
|
21
|
+
**Find cheapest flights (cached):**
|
|
22
22
|
```bash
|
|
23
|
-
jinko flights
|
|
23
|
+
jinko flights find --from PAR --to NYC --date 2026-04-01
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
**Explore destinations:**
|
|
@@ -33,7 +33,7 @@ jinko flights destinations --from PAR --from CDG
|
|
|
33
33
|
jinko flights calendar --from PAR --to NYC --month 2026-04
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
All discovery commands return `offer_token` per flight.
|
|
36
|
+
All discovery commands hit cached endpoints and return `offer_token` per flight.
|
|
37
37
|
|
|
38
38
|
### Step 2: Price a specific flight (live pricing)
|
|
39
39
|
|
|
@@ -47,7 +47,7 @@ Returns fare options with `trip_item_token` per fare. This hits live pricing (mo
|
|
|
47
47
|
|
|
48
48
|
**One-shot booking (recommended):**
|
|
49
49
|
```bash
|
|
50
|
-
jinko
|
|
50
|
+
jinko book \
|
|
51
51
|
--trip-item-token <trip_item_token> \
|
|
52
52
|
--travelers '[{"first_name":"John","last_name":"Doe","date_of_birth":"1990-01-15","gender":"MALE","passenger_type":"ADULT"}]' \
|
|
53
53
|
--contact '{"email":"john@example.com","phone":"+33612345678"}'
|
|
@@ -60,28 +60,39 @@ Returns `checkout_url` — the user opens this in a browser to complete payment.
|
|
|
60
60
|
jinko trip create
|
|
61
61
|
jinko trip add-flight --trip-item-token <token> --trip-id <trip_id>
|
|
62
62
|
jinko trip travelers --trip-id <trip_id> --travelers '[...]' --contact '{...}'
|
|
63
|
-
jinko
|
|
63
|
+
jinko book --trip-id <trip_id>
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
## Token Flow
|
|
67
67
|
|
|
68
68
|
```
|
|
69
|
-
flights
|
|
70
|
-
flights search (offer_token) → trip_item_token (per fare)
|
|
71
|
-
|
|
69
|
+
flights find (filters) → offer_token (per flight) [cached]
|
|
70
|
+
flights search (offer_token) → trip_item_token (per fare) [live]
|
|
71
|
+
book (trip_item_token + travelers + contact) → checkout_url
|
|
72
72
|
```
|
|
73
73
|
|
|
74
|
+
## API Endpoints
|
|
75
|
+
|
|
76
|
+
All calls use `/api/v1/devplatform/` prefix.
|
|
77
|
+
|
|
78
|
+
| Endpoint | Type | Used by |
|
|
79
|
+
|----------|------|---------|
|
|
80
|
+
| `POST /flights/search` | Cached | `flights find`, `flights calendar` |
|
|
81
|
+
| `POST /flights/destination-search` | Cached | `flights destinations` |
|
|
82
|
+
| `POST /flights/shop` | Live | `flights search` |
|
|
83
|
+
| `POST /trips` | Live | `trip create/show/add-flight/travelers`, `book` |
|
|
84
|
+
| `POST /trips/checkout` | Live | `book` |
|
|
85
|
+
|
|
74
86
|
## Tool Selection Guide
|
|
75
87
|
|
|
76
88
|
| User Intent | Command |
|
|
77
89
|
|-------------|---------|
|
|
78
|
-
| "Find flights from Paris to New York" | `flights
|
|
90
|
+
| "Find flights from Paris to New York" | `flights find --from PAR --to NYC --date ...` |
|
|
91
|
+
| "Search flights with live pricing" | `flights search --from PAR --to NYC --date ...` |
|
|
79
92
|
| "Where can I fly from Paris?" | `flights destinations --from PAR` |
|
|
80
93
|
| "What's the cheapest day to fly?" | `flights calendar --from PAR --to NYC --month ...` |
|
|
81
94
|
| "Get exact price for this flight" | `flights search --offer-token <token>` |
|
|
82
|
-
| "Book this flight" | `
|
|
83
|
-
| "Show my travelers" | `travelers list` |
|
|
84
|
-
| "Add a traveler" | `travelers add --first-name ... --last-name ... --dob ... --gender ...` |
|
|
95
|
+
| "Book this flight" | `book --trip-item-token <token> --travelers ... --contact ...` |
|
|
85
96
|
|
|
86
97
|
## Output Format
|
|
87
98
|
|
|
@@ -93,8 +104,9 @@ To see the exact request/response shape for any command:
|
|
|
93
104
|
|
|
94
105
|
```bash
|
|
95
106
|
jinko schema # List all documented commands
|
|
96
|
-
jinko schema flights.
|
|
97
|
-
jinko schema
|
|
107
|
+
jinko schema flights.find # Show find schema
|
|
108
|
+
jinko schema flights.search # Show search schema
|
|
109
|
+
jinko schema book # Show booking schema
|
|
98
110
|
```
|
|
99
111
|
|
|
100
112
|
## Important Notes
|
|
@@ -106,3 +118,4 @@ jinko schema trip.checkout # Show checkout schema
|
|
|
106
118
|
- **Cabin classes**: `economy`, `premium_economy`, `business`, `first`.
|
|
107
119
|
- **Trip type**: Inferred from `--return` flag presence. Include `--return` for round-trip.
|
|
108
120
|
- **Checkout URL**: Opens the Jinko checkout page. User completes payment there.
|
|
121
|
+
- **Cached vs Live**: `flights find`, `destinations`, `calendar` use cached data (fast, cheap). `flights search` uses live pricing (slower, accurate). Use cached for discovery, live for final pricing.
|
|
@@ -7,8 +7,8 @@ export function registerAuthCommands(program) {
|
|
|
7
7
|
.description('Manage authentication.');
|
|
8
8
|
auth
|
|
9
9
|
.command('login')
|
|
10
|
-
.description('Configure
|
|
11
|
-
.option('--key <token>', 'API key (jnk_...)
|
|
10
|
+
.description('Configure API key authentication.')
|
|
11
|
+
.option('--key <token>', 'API key (jnk_...)')
|
|
12
12
|
.action(async (opts, cmd) => {
|
|
13
13
|
const globals = getGlobalOptions(cmd);
|
|
14
14
|
let token = opts['key'];
|
|
@@ -20,25 +20,25 @@ export function registerAuthCommands(program) {
|
|
|
20
20
|
output: process.stdout,
|
|
21
21
|
});
|
|
22
22
|
token = await new Promise((resolve) => {
|
|
23
|
-
rl.question('Enter your Jinko API key (jnk_...)
|
|
23
|
+
rl.question('Enter your Jinko API key (jnk_...): ', (answer) => {
|
|
24
24
|
rl.close();
|
|
25
25
|
resolve(answer.trim());
|
|
26
26
|
});
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
29
|
if (!token) {
|
|
30
|
-
outputError({ code: 'INVALID_TOKEN', message: 'No
|
|
30
|
+
outputError({ code: 'INVALID_TOKEN', message: 'No API key provided.' }, globals);
|
|
31
31
|
process.exit(3);
|
|
32
32
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
await writeConfigFile(
|
|
33
|
+
if (!token.startsWith('jnk_')) {
|
|
34
|
+
outputError({ code: 'INVALID_TOKEN', message: 'API key must start with "jnk_". Get one from the Jinko developer platform.' }, globals);
|
|
35
|
+
process.exit(3);
|
|
36
|
+
}
|
|
37
|
+
await writeConfigFile({ api_key: token });
|
|
38
38
|
output({
|
|
39
39
|
status: 'ok',
|
|
40
|
-
method:
|
|
41
|
-
message:
|
|
40
|
+
method: 'api_key',
|
|
41
|
+
message: `API key saved to ${CONFIG_FILE}`,
|
|
42
42
|
}, { format: globals.format });
|
|
43
43
|
});
|
|
44
44
|
auth
|
|
@@ -50,7 +50,7 @@ export function registerAuthCommands(program) {
|
|
|
50
50
|
if (!auth) {
|
|
51
51
|
output({
|
|
52
52
|
authenticated: false,
|
|
53
|
-
message: 'No credentials configured. Run `jinko auth login` or set JINKO_API_KEY
|
|
53
|
+
message: 'No credentials configured. Run `jinko auth login` or set JINKO_API_KEY.',
|
|
54
54
|
}, { format: globals.format });
|
|
55
55
|
return;
|
|
56
56
|
}
|
|
@@ -60,7 +60,7 @@ export function registerAuthCommands(program) {
|
|
|
60
60
|
: '***';
|
|
61
61
|
const source = globals.apiKey
|
|
62
62
|
? 'flag'
|
|
63
|
-
:
|
|
63
|
+
: process.env['JINKO_API_KEY']
|
|
64
64
|
? 'env'
|
|
65
65
|
: 'config';
|
|
66
66
|
output({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/auth/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,IAAI,GAAG,OAAO;SACjB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAEzC,IAAI;SACD,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/auth/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,IAAI,GAAG,OAAO;SACjB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAEzC,IAAI;SACD,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,eAAe,EAAE,mBAAmB,CAAC;SAC5C,MAAM,CAAC,KAAK,EAAE,IAA6B,EAAE,GAAY,EAAE,EAAE;QAC5D,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAuB,CAAC;QAE9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,gCAAgC;YAChC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YAC/C,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;gBAClC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAC;YAEH,KAAK,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;gBAC5C,EAAE,CAAC,QAAQ,CAAC,sCAAsC,EAAE,CAAC,MAAM,EAAE,EAAE;oBAC7D,EAAE,CAAC,KAAK,EAAE,CAAC;oBACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBACzB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,WAAW,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,sBAAsB,EAAE,EAAE,OAAO,CAAC,CAAC;YACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,WAAW,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,4EAA4E,EAAE,EAAE,OAAO,CAAC,CAAC;YACvI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,eAAe,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC;YACL,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,oBAAoB,WAAW,EAAE;SAC3C,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,KAAK,EAAE,KAA8B,EAAE,GAAY,EAAE,EAAE;QAC7D,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE/C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,CAAC;gBACL,aAAa,EAAE,KAAK;gBACpB,OAAO,EAAE,yEAAyE;aACnF,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,8BAA8B;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE;YACnC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACvD,CAAC,CAAC,KAAK,CAAC;QAEV,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM;YAC3B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;gBAC5B,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,QAAQ,CAAC;QAEf,MAAM,CAAC;YACL,aAAa,EAAE,IAAI;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,MAAM;YACb,MAAM;SACP,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/book/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmE1D"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { withClient, output } from '../shared.js';
|
|
2
|
+
export function registerBookCommand(program) {
|
|
3
|
+
program
|
|
4
|
+
.command('book')
|
|
5
|
+
.description('Book a trip. Orchestrates quoting and returns a checkout URL.')
|
|
6
|
+
.option('--trip-id <id>', 'trip ID (required if no --trip-item-token)')
|
|
7
|
+
.option('--trip-item-token <token>', 'create trip + add flight + checkout in one call')
|
|
8
|
+
.option('--travelers <json>', 'travelers JSON array (for one-shot booking)')
|
|
9
|
+
.option('--contact <json>', 'contact JSON {email, phone} (for one-shot booking)')
|
|
10
|
+
.action(withClient(async (client, globals, opts) => {
|
|
11
|
+
let tripId = opts.tripId;
|
|
12
|
+
// One-shot booking: create trip with flight + travelers, then checkout.
|
|
13
|
+
if (opts.tripItemToken) {
|
|
14
|
+
const tripBody = {
|
|
15
|
+
add_item: { trip_item_token: opts.tripItemToken },
|
|
16
|
+
};
|
|
17
|
+
if (opts.travelers) {
|
|
18
|
+
let travelers;
|
|
19
|
+
try {
|
|
20
|
+
travelers = JSON.parse(opts.travelers);
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
console.error('Error: --travelers must be valid JSON array.');
|
|
24
|
+
process.exit(3);
|
|
25
|
+
}
|
|
26
|
+
const upsertTravelers = { travelers };
|
|
27
|
+
if (opts.contact) {
|
|
28
|
+
try {
|
|
29
|
+
upsertTravelers['contact'] = JSON.parse(opts.contact);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
console.error('Error: --contact must be valid JSON object.');
|
|
33
|
+
process.exit(3);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
tripBody['upsert_travelers'] = upsertTravelers;
|
|
37
|
+
}
|
|
38
|
+
if (tripId)
|
|
39
|
+
tripBody['trip_id'] = tripId;
|
|
40
|
+
const tripResponse = await client.raw.POST('/api/v1/devplatform/trips', {
|
|
41
|
+
body: tripBody,
|
|
42
|
+
});
|
|
43
|
+
const tripData = tripResponse.data;
|
|
44
|
+
tripId = tripData?.['trip_id'];
|
|
45
|
+
if (!tripId) {
|
|
46
|
+
console.error('Error: failed to create trip — no trip_id returned.');
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (!tripId) {
|
|
51
|
+
console.error('Error: --trip-id is required, or use --trip-item-token for one-shot booking.');
|
|
52
|
+
process.exit(3);
|
|
53
|
+
}
|
|
54
|
+
// Checkout via devplatform endpoint — handles quoting internally.
|
|
55
|
+
const checkoutResponse = await client.raw.POST('/api/v1/devplatform/trips/checkout', {
|
|
56
|
+
body: { trip_id: tripId },
|
|
57
|
+
});
|
|
58
|
+
output(checkoutResponse.data, { format: globals.format });
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/book/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,+DAA+D,CAAC;SAC5E,MAAM,CAAC,gBAAgB,EAAE,4CAA4C,CAAC;SACtE,MAAM,CAAC,2BAA2B,EAAE,iDAAiD,CAAC;SACtF,MAAM,CAAC,oBAAoB,EAAE,6CAA6C,CAAC;SAC3E,MAAM,CAAC,kBAAkB,EAAE,oDAAoD,CAAC;SAChF,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjD,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAEzB,wEAAwE;QACxE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,QAAQ,GAA4B;gBACxC,QAAQ,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,aAAa,EAAE;aAClD,CAAC;YAEF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,SAAoB,CAAC;gBACzB,IAAI,CAAC;oBACH,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAc,CAAC;gBACtD,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;oBAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBAED,MAAM,eAAe,GAA4B,EAAE,SAAS,EAAE,CAAC;gBAE/D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACjB,IAAI,CAAC;wBACH,eAAe,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACxD,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;wBAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAClB,CAAC;gBACH,CAAC;gBAED,QAAQ,CAAC,kBAAkB,CAAC,GAAG,eAAe,CAAC;YACjD,CAAC;YAED,IAAI,MAAM;gBAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;YAEzC,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,2BAAoC,EAAE;gBAC/E,IAAI,EAAE,QAAQ;aACN,CAAC,CAAC;YAEZ,MAAM,QAAQ,GAAI,YAAmD,CAAC,IAAI,CAAC;YAC3E,MAAM,GAAG,QAAQ,EAAE,CAAC,SAAS,CAAW,CAAC;YAEzC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;gBACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC;YAC9F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,kEAAkE;QAClE,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,oCAA6C,EAAE;YAC5F,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;SACjB,CAAC,CAAC;QAEZ,MAAM,CAAE,gBAAuC,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../src/commands/flights/calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../src/commands/flights/calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAsD7D"}
|
|
@@ -20,18 +20,24 @@ export function registerCalendarCommand(parent) {
|
|
|
20
20
|
const lastDay = new Date(year, mon, 0).getDate();
|
|
21
21
|
const endDate = `${month}-${String(lastDay).padStart(2, '0')}`;
|
|
22
22
|
const body = {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
23
|
+
passengers: { adt: 1 },
|
|
24
|
+
filters: {
|
|
25
|
+
locations: {
|
|
26
|
+
origins: [opts.from],
|
|
27
|
+
destinations: [opts.to],
|
|
28
|
+
},
|
|
29
|
+
dates: {
|
|
30
|
+
departure_date_ranges: [{ start: startDate, end: endDate }],
|
|
31
|
+
},
|
|
32
|
+
trip_type: 'oneway',
|
|
33
|
+
cabin_class: opts.cabin,
|
|
34
|
+
direct_only: opts.directOnly ?? false,
|
|
35
|
+
},
|
|
36
|
+
sort: 'lowest',
|
|
31
37
|
};
|
|
32
38
|
// Note: This is a simplified v1. A proper calendar endpoint would
|
|
33
39
|
// return price-per-date. For now, we search the full range.
|
|
34
|
-
const response = await client.raw.POST('/api/v1/devplatform/flights/
|
|
40
|
+
const response = await client.raw.POST('/api/v1/devplatform/flights/search', {
|
|
35
41
|
body,
|
|
36
42
|
});
|
|
37
43
|
const data = response.data;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../../src/commands/flights/calendar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,UAAU,uBAAuB,CAAC,MAAe;IACrD,MAAM;SACH,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,yFAAyF,CAAC;SACtG,cAAc,CAAC,iBAAiB,EAAE,qBAAqB,CAAC;SACxD,cAAc,CAAC,oBAAoB,EAAE,0BAA0B,CAAC;SAChE,MAAM,CAAC,iBAAiB,EAAE,uDAAuD,CAAC;SAClF,MAAM,CAAC,iBAAiB,EAAE,aAAa,EAAE,SAAS,CAAC;SACnD,MAAM,CAAC,eAAe,EAAE,qBAAqB,CAAC;SAC9C,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjD,mEAAmE;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,SAAS,GAAG,GAAG,KAAK,KAAK,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,GAAG,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAE/D,MAAM,IAAI,GAA4B;YACpC,
|
|
1
|
+
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../../src/commands/flights/calendar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,UAAU,uBAAuB,CAAC,MAAe;IACrD,MAAM;SACH,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,yFAAyF,CAAC;SACtG,cAAc,CAAC,iBAAiB,EAAE,qBAAqB,CAAC;SACxD,cAAc,CAAC,oBAAoB,EAAE,0BAA0B,CAAC;SAChE,MAAM,CAAC,iBAAiB,EAAE,uDAAuD,CAAC;SAClF,MAAM,CAAC,iBAAiB,EAAE,aAAa,EAAE,SAAS,CAAC;SACnD,MAAM,CAAC,eAAe,EAAE,qBAAqB,CAAC;SAC9C,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjD,mEAAmE;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,SAAS,GAAG,GAAG,KAAK,KAAK,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,GAAG,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAE/D,MAAM,IAAI,GAA4B;YACpC,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;YACtB,OAAO,EAAE;gBACP,SAAS,EAAE;oBACT,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;oBACpB,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;iBACxB;gBACD,KAAK,EAAE;oBACL,qBAAqB,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;iBAC5D;gBACD,SAAS,EAAE,QAAQ;gBACnB,WAAW,EAAE,IAAI,CAAC,KAAK;gBACvB,WAAW,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;aACtC;YACD,IAAI,EAAE,QAAQ;SACf,CAAC;QAEF,kEAAkE;QAClE,4DAA4D;QAC5D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,oCAA6C,EAAE;YACpF,IAAI;SACI,CAAC,CAAC;QAEZ,MAAM,IAAI,GAAI,QAA+B,CAAC,IAAI,CAAC;QAEnD,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,KAAK,KAAK,GAAG,CAAC,CAAC;YACvE,OAAO,CAAC,GAAG,CAAC,eAAe,SAAS,OAAO,OAAO,IAAI,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"destinations.d.ts","sourceRoot":"","sources":["../../../src/commands/flights/destinations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"destinations.d.ts","sourceRoot":"","sources":["../../../src/commands/flights/destinations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAsDjE"}
|
|
@@ -9,28 +9,42 @@ export function registerDestinationsCommand(parent) {
|
|
|
9
9
|
.option('--direct-only', 'only direct flights')
|
|
10
10
|
.option('--cabin <class>', 'cabin class', 'economy')
|
|
11
11
|
.option('--max-price <amount>', 'maximum price filter')
|
|
12
|
-
.option('--sort <sort>', 'sort:
|
|
12
|
+
.option('--sort <sort>', 'sort: lowest, recommendation', 'lowest')
|
|
13
13
|
.option('--limit <n>', 'max destinations', '20')
|
|
14
14
|
.action(withClient(async (client, globals, opts) => {
|
|
15
15
|
const origins = Array.isArray(opts.from) ? opts.from : [opts.from];
|
|
16
16
|
const body = {
|
|
17
|
-
passengers: {
|
|
17
|
+
passengers: { adt: 1 },
|
|
18
18
|
filters: {
|
|
19
19
|
locations: {
|
|
20
|
-
origins
|
|
20
|
+
origins,
|
|
21
21
|
},
|
|
22
22
|
trip_type: opts.return ? 'roundtrip' : 'oneway',
|
|
23
23
|
},
|
|
24
24
|
flights_per_destination: 1,
|
|
25
|
+
sort: opts.sort,
|
|
25
26
|
limit: Number(opts.limit) || 20,
|
|
26
27
|
};
|
|
28
|
+
// BFF requires dates — use provided date or default to next 12 months.
|
|
27
29
|
if (opts.date) {
|
|
28
30
|
body['filters']['dates'] = {
|
|
29
|
-
|
|
30
|
-
...(opts.return ? {
|
|
31
|
+
departure_dates: [opts.date],
|
|
32
|
+
...(opts.return ? { return_dates: [opts.return] } : {}),
|
|
31
33
|
};
|
|
32
34
|
}
|
|
33
|
-
|
|
35
|
+
else {
|
|
36
|
+
const today = new Date();
|
|
37
|
+
const start = today.toISOString().slice(0, 10);
|
|
38
|
+
const end = new Date(today.getFullYear() + 1, today.getMonth(), today.getDate())
|
|
39
|
+
.toISOString().slice(0, 10);
|
|
40
|
+
body['filters']['dates'] = {
|
|
41
|
+
departure_date_ranges: [{ start, end }],
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
if (opts.maxPrice) {
|
|
45
|
+
body['price_constraints'] = { max_total: Number(opts.maxPrice) };
|
|
46
|
+
}
|
|
47
|
+
const response = await client.raw.POST('/api/v1/devplatform/flights/destination-search', {
|
|
34
48
|
body,
|
|
35
49
|
});
|
|
36
50
|
output(response.data, { format: globals.format });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"destinations.js","sourceRoot":"","sources":["../../../src/commands/flights/destinations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,UAAU,2BAA2B,CAAC,MAAe;IACzD,MAAM;SACH,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,iDAAiD,CAAC;SAC9D,cAAc,CAAC,qBAAqB,EAAE,8CAA8C,CAAC;SACrF,MAAM,CAAC,eAAe,EAAE,6BAA6B,CAAC;SACtD,MAAM,CAAC,iBAAiB,EAAE,0BAA0B,CAAC;SACrD,MAAM,CAAC,eAAe,EAAE,qBAAqB,CAAC;SAC9C,MAAM,CAAC,iBAAiB,EAAE,aAAa,EAAE,SAAS,CAAC;SACnD,MAAM,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;SACtD,MAAM,CAAC,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"destinations.js","sourceRoot":"","sources":["../../../src/commands/flights/destinations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,UAAU,2BAA2B,CAAC,MAAe;IACzD,MAAM;SACH,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,iDAAiD,CAAC;SAC9D,cAAc,CAAC,qBAAqB,EAAE,8CAA8C,CAAC;SACrF,MAAM,CAAC,eAAe,EAAE,6BAA6B,CAAC;SACtD,MAAM,CAAC,iBAAiB,EAAE,0BAA0B,CAAC;SACrD,MAAM,CAAC,eAAe,EAAE,qBAAqB,CAAC;SAC9C,MAAM,CAAC,iBAAiB,EAAE,aAAa,EAAE,SAAS,CAAC;SACnD,MAAM,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;SACtD,MAAM,CAAC,eAAe,EAAE,8BAA8B,EAAE,QAAQ,CAAC;SACjE,MAAM,CAAC,aAAa,EAAE,kBAAkB,EAAE,IAAI,CAAC;SAC/C,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnE,MAAM,IAAI,GAA4B;YACpC,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;YACtB,OAAO,EAAE;gBACP,SAAS,EAAE;oBACT,OAAO;iBACR;gBACD,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;aAChD;YACD,uBAAuB,EAAE,CAAC;YAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;SAChC,CAAC;QAEF,uEAAuE;QACvE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,CAA6B,CAAC,OAAO,CAAC,GAAG;gBACtD,eAAe,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC5B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACxD,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/C,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;iBAC7E,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,SAAS,CAA6B,CAAC,OAAO,CAAC,GAAG;gBACtD,qBAAqB,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;aACxC,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,gDAAyD,EAAE;YAChG,IAAI;SACI,CAAC,CAAC;QAEZ,MAAM,CAAE,QAA+B,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../src/commands/flights/find.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA2CzD"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { withClient, output } from '../shared.js';
|
|
2
|
+
export function registerFindCommand(parent) {
|
|
3
|
+
parent
|
|
4
|
+
.command('find')
|
|
5
|
+
.description('Find cheapest flights from cached data. Use "flights search" for live pricing.')
|
|
6
|
+
.requiredOption('--from <origin>', 'origin airport code (e.g. PAR)')
|
|
7
|
+
.requiredOption('--to <destination>', 'destination airport code (e.g. NYC)')
|
|
8
|
+
.requiredOption('--date <date>', 'departure date (YYYY-MM-DD)')
|
|
9
|
+
.option('--return <date>', 'return date for round-trip (YYYY-MM-DD)')
|
|
10
|
+
.option('--cabin <class>', 'cabin class: economy, premium_economy, business, first', 'economy')
|
|
11
|
+
.option('--direct-only', 'only show direct flights')
|
|
12
|
+
.option('--max-price <amount>', 'maximum price filter')
|
|
13
|
+
.option('--sort <sort>', 'sort: lowest, recommendation', 'lowest')
|
|
14
|
+
.option('--limit <n>', 'max results', '10')
|
|
15
|
+
.action(withClient(async (client, globals, opts) => {
|
|
16
|
+
const body = {
|
|
17
|
+
passengers: { adt: 1 },
|
|
18
|
+
filters: {
|
|
19
|
+
locations: {
|
|
20
|
+
origins: [opts.from],
|
|
21
|
+
destinations: [opts.to],
|
|
22
|
+
},
|
|
23
|
+
dates: {
|
|
24
|
+
departure_dates: [opts.date],
|
|
25
|
+
...(opts.return ? { return_dates: [opts.return] } : {}),
|
|
26
|
+
},
|
|
27
|
+
trip_type: opts.return ? 'roundtrip' : 'oneway',
|
|
28
|
+
cabin_class: opts.cabin,
|
|
29
|
+
direct_only: opts.directOnly ?? false,
|
|
30
|
+
},
|
|
31
|
+
sort: opts.sort,
|
|
32
|
+
limit: Number(opts.limit) || 10,
|
|
33
|
+
};
|
|
34
|
+
if (opts.maxPrice) {
|
|
35
|
+
body['price_constraints'] = { max_total: Number(opts.maxPrice) };
|
|
36
|
+
}
|
|
37
|
+
const response = await client.raw.POST('/api/v1/devplatform/flights/search', {
|
|
38
|
+
body,
|
|
39
|
+
});
|
|
40
|
+
output(response.data, { format: globals.format });
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=find.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find.js","sourceRoot":"","sources":["../../../src/commands/flights/find.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,UAAU,mBAAmB,CAAC,MAAe;IACjD,MAAM;SACH,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,gFAAgF,CAAC;SAC7F,cAAc,CAAC,iBAAiB,EAAE,gCAAgC,CAAC;SACnE,cAAc,CAAC,oBAAoB,EAAE,qCAAqC,CAAC;SAC3E,cAAc,CAAC,eAAe,EAAE,6BAA6B,CAAC;SAC9D,MAAM,CAAC,iBAAiB,EAAE,yCAAyC,CAAC;SACpE,MAAM,CAAC,iBAAiB,EAAE,wDAAwD,EAAE,SAAS,CAAC;SAC9F,MAAM,CAAC,eAAe,EAAE,0BAA0B,CAAC;SACnD,MAAM,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;SACtD,MAAM,CAAC,eAAe,EAAE,8BAA8B,EAAE,QAAQ,CAAC;SACjE,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC;SAC1C,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjD,MAAM,IAAI,GAA4B;YACpC,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;YACtB,OAAO,EAAE;gBACP,SAAS,EAAE;oBACT,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;oBACpB,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;iBACxB;gBACD,KAAK,EAAE;oBACL,eAAe,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC5B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACxD;gBACD,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;gBAC/C,WAAW,EAAE,IAAI,CAAC,KAAK;gBACvB,WAAW,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;aACtC;YACD,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;SAChC,CAAC;QAEF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,oCAA6C,EAAE;YACpF,IAAI;SACI,CAAC,CAAC;QAEZ,MAAM,CAAE,QAA+B,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/flights/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/flights/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAS9D"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { registerFindCommand } from './find.js';
|
|
1
2
|
import { registerSearchCommand } from './search.js';
|
|
2
3
|
import { registerDestinationsCommand } from './destinations.js';
|
|
3
4
|
import { registerCalendarCommand } from './calendar.js';
|
|
@@ -5,6 +6,7 @@ export function registerFlightsCommands(program) {
|
|
|
5
6
|
const flights = program
|
|
6
7
|
.command('flights')
|
|
7
8
|
.description('Search flights, explore destinations, and check prices.');
|
|
9
|
+
registerFindCommand(flights);
|
|
8
10
|
registerSearchCommand(flights);
|
|
9
11
|
registerDestinationsCommand(flights);
|
|
10
12
|
registerCalendarCommand(flights);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/flights/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,MAAM,OAAO,GAAG,OAAO;SACpB,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,yDAAyD,CAAC,CAAC;IAE1E,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,2BAA2B,CAAC,OAAO,CAAC,CAAC;IACrC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/flights/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,MAAM,OAAO,GAAG,OAAO;SACpB,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,yDAAyD,CAAC,CAAC;IAE1E,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,2BAA2B,CAAC,OAAO,CAAC,CAAC;IACrC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/commands/flights/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/commands/flights/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA0D3D"}
|
|
@@ -11,9 +11,7 @@ export function registerSearchCommand(parent) {
|
|
|
11
11
|
.option('--cabin <class>', 'cabin class: economy, premium_economy, business, first', 'economy')
|
|
12
12
|
.option('--direct-only', 'only show direct flights')
|
|
13
13
|
.option('--max-price <amount>', 'maximum price filter')
|
|
14
|
-
.option('--sort <sort>', 'sort: lowest, recommendation', 'lowest')
|
|
15
14
|
.option('--offer-token <token>', 'price-check a specific offer (live pricing)')
|
|
16
|
-
.option('--limit <n>', 'max results', '10')
|
|
17
15
|
.action(withClient(async (client, globals, opts) => {
|
|
18
16
|
const isOfferCheck = Boolean(opts.offerToken);
|
|
19
17
|
if (isOfferCheck) {
|
|
@@ -42,7 +40,6 @@ export function registerSearchCommand(parent) {
|
|
|
42
40
|
trip_type: opts.return ? 'roundtrip' : 'oneway',
|
|
43
41
|
cabin_class: opts.cabin,
|
|
44
42
|
direct_only: opts.directOnly ?? false,
|
|
45
|
-
sort_by: opts.sort,
|
|
46
43
|
passengers: {
|
|
47
44
|
adults: Number(opts.passengers) || 1,
|
|
48
45
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/commands/flights/search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,UAAU,qBAAqB,CAAC,MAAe;IACnD,MAAM;SACH,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,iDAAiD,CAAC;SAC9D,MAAM,CAAC,iBAAiB,EAAE,gCAAgC,CAAC;SAC3D,MAAM,CAAC,oBAAoB,EAAE,qCAAqC,CAAC;SACnE,MAAM,CAAC,eAAe,EAAE,6BAA6B,CAAC;SACtD,MAAM,CAAC,iBAAiB,EAAE,yCAAyC,CAAC;SACpE,MAAM,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,GAAG,CAAC;SACvD,MAAM,CAAC,iBAAiB,EAAE,wDAAwD,EAAE,SAAS,CAAC;SAC9F,MAAM,CAAC,eAAe,EAAE,0BAA0B,CAAC;SACnD,MAAM,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;SACtD,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/commands/flights/search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,UAAU,qBAAqB,CAAC,MAAe;IACnD,MAAM;SACH,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,iDAAiD,CAAC;SAC9D,MAAM,CAAC,iBAAiB,EAAE,gCAAgC,CAAC;SAC3D,MAAM,CAAC,oBAAoB,EAAE,qCAAqC,CAAC;SACnE,MAAM,CAAC,eAAe,EAAE,6BAA6B,CAAC;SACtD,MAAM,CAAC,iBAAiB,EAAE,yCAAyC,CAAC;SACpE,MAAM,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,GAAG,CAAC;SACvD,MAAM,CAAC,iBAAiB,EAAE,wDAAwD,EAAE,SAAS,CAAC;SAC9F,MAAM,CAAC,eAAe,EAAE,0BAA0B,CAAC;SACnD,MAAM,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;SACtD,MAAM,CAAC,uBAAuB,EAAE,6CAA6C,CAAC;SAC9E,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjD,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE9C,IAAI,YAAY,EAAE,CAAC;YACjB,mDAAmD;YACnD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,kCAA2C,EAAE;gBAClF,IAAI,EAAE;oBACJ,WAAW,EAAE,IAAI,CAAC,UAAU;oBAC5B,UAAU,EAAE;wBACV,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;qBACrC;iBACF;aACO,CAAC,CAAC;YAEZ,MAAM,CAAE,QAA+B,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,8CAA8C;YAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACzC,OAAO,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;gBAC/E,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;gBAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,IAAI,GAA4B;gBACpC,MAAM,EAAE,IAAI,CAAC,IAAI;gBACjB,WAAW,EAAE,IAAI,CAAC,EAAE;gBACpB,cAAc,EAAE,IAAI,CAAC,IAAI;gBACzB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;gBAC/C,WAAW,EAAE,IAAI,CAAC,KAAK;gBACvB,WAAW,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;gBACrC,UAAU,EAAE;oBACV,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;iBACrC;aACF,CAAC;YAEF,IAAI,IAAI,CAAC,MAAM;gBAAE,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;YACnD,IAAI,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAE7D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,kCAA2C,EAAE;gBAClF,IAAI;aACI,CAAC,CAAC;YAEZ,MAAM,CAAE,QAA+B,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0HpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0B5D"}
|
package/dist/commands/schema.js
CHANGED
|
@@ -5,83 +5,114 @@ import { getGlobalOptions } from '../config/config.js';
|
|
|
5
5
|
* request/response shapes for agent consumption.
|
|
6
6
|
*/
|
|
7
7
|
const SCHEMAS = {
|
|
8
|
+
'flights.find': {
|
|
9
|
+
description: 'Find cheapest flights from cached data (POST /flights/search).',
|
|
10
|
+
request: {
|
|
11
|
+
passengers: '{ adt: number, chd?: number, inf_lap?: number }',
|
|
12
|
+
filters: {
|
|
13
|
+
locations: '{ origins: string[], destinations: string[] }',
|
|
14
|
+
dates: '{ departure_dates?: string[], return_dates?: string[], departure_date_ranges?: [{ start, end }] }',
|
|
15
|
+
trip_type: 'oneway | roundtrip',
|
|
16
|
+
cabin_class: 'economy | premium_economy | business | first',
|
|
17
|
+
direct_only: 'boolean?',
|
|
18
|
+
},
|
|
19
|
+
sort: 'lowest | recommendation',
|
|
20
|
+
limit: 'number? (default 20)',
|
|
21
|
+
price_constraints: '{ max_total?: number }?',
|
|
22
|
+
},
|
|
23
|
+
response: {
|
|
24
|
+
itineraries: '[{ id, slices, total_amount, origin_city_code, destination_city_code, ... }]',
|
|
25
|
+
destination: '{ iata_code, city_name, location }',
|
|
26
|
+
pagination: '{ next_page_token }',
|
|
27
|
+
},
|
|
28
|
+
},
|
|
8
29
|
'flights.search': {
|
|
9
|
-
description: '
|
|
30
|
+
description: 'Live flight search or price-check a specific offer (POST /flights/shop).',
|
|
10
31
|
request: {
|
|
11
32
|
mode_a_search: {
|
|
12
|
-
origin: 'string (IATA code
|
|
13
|
-
destination: 'string (IATA code
|
|
33
|
+
origin: 'string (IATA code)',
|
|
34
|
+
destination: 'string (IATA code)',
|
|
14
35
|
departure_date: 'string (YYYY-MM-DD)',
|
|
15
|
-
return_date: 'string? (YYYY-MM-DD
|
|
36
|
+
return_date: 'string? (YYYY-MM-DD)',
|
|
16
37
|
trip_type: 'oneway | roundtrip',
|
|
17
38
|
cabin_class: 'economy | premium_economy | business | first',
|
|
18
39
|
direct_only: 'boolean?',
|
|
19
40
|
max_price: 'number?',
|
|
20
|
-
passengers: '{ adults
|
|
41
|
+
passengers: '{ adults?: number, children?: number, infants?: number }',
|
|
21
42
|
},
|
|
22
43
|
mode_b_price_check: {
|
|
23
|
-
offer_token: 'string (from
|
|
24
|
-
passengers: '{ adults
|
|
44
|
+
offer_token: 'string (from find results)',
|
|
45
|
+
passengers: '{ adults?: number, children?: number, infants?: number }',
|
|
25
46
|
},
|
|
26
47
|
},
|
|
27
48
|
response: {
|
|
28
49
|
mode: 'search | price_check',
|
|
29
|
-
flights: '[{ offer_token,
|
|
30
|
-
fares: '(
|
|
50
|
+
flights: '[{ offer_token, origin, destination, total_price, currency, outbound_*, inbound_*, fares? }]',
|
|
51
|
+
fares: '(price_check only) [{ trip_item_token, brand_name, cabin_class, total_price, is_refundable, ... }]',
|
|
31
52
|
},
|
|
32
53
|
},
|
|
33
54
|
'flights.destinations': {
|
|
34
|
-
description: 'Discover destinations from origin airports.',
|
|
55
|
+
description: 'Discover destinations from origin airports (POST /flights/destination-search).',
|
|
35
56
|
request: {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
57
|
+
passengers: '{ adt: number }',
|
|
58
|
+
filters: {
|
|
59
|
+
locations: '{ origins: string[] }',
|
|
60
|
+
dates: '{ departure_dates?: string[], return_dates?: string[] }?',
|
|
61
|
+
trip_type: 'oneway | roundtrip',
|
|
62
|
+
},
|
|
63
|
+
flights_per_destination: 'number? (default 1)',
|
|
64
|
+
limit: 'number? (default 20)',
|
|
65
|
+
price_constraints: '{ max_total?: number }?',
|
|
42
66
|
},
|
|
43
67
|
response: {
|
|
44
|
-
|
|
68
|
+
origin: '{ city_code, city_name, country_code }',
|
|
69
|
+
destinations: '[{ iata_code, city_name, lowest_fare_flight, flights }]',
|
|
70
|
+
pagination: '{ next_page_token }',
|
|
71
|
+
total: 'number',
|
|
45
72
|
},
|
|
46
73
|
},
|
|
47
74
|
'flights.calendar': {
|
|
48
|
-
description: '
|
|
75
|
+
description: 'Browse prices across a date range (uses /flights/search with date range).',
|
|
49
76
|
request: {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
month: 'string (YYYY-MM)',
|
|
53
|
-
cabin_class: 'string?',
|
|
77
|
+
from: 'string (IATA code, origin)',
|
|
78
|
+
to: 'string (IATA code, destination)',
|
|
79
|
+
month: 'string (YYYY-MM, CLI computes start/end date range)',
|
|
80
|
+
cabin_class: 'string? (default economy)',
|
|
54
81
|
direct_only: 'boolean?',
|
|
55
82
|
},
|
|
56
83
|
response: {
|
|
57
|
-
|
|
84
|
+
itineraries: '[{ id, slices, total_amount, ... }]',
|
|
58
85
|
},
|
|
59
86
|
},
|
|
60
|
-
'
|
|
61
|
-
description: 'One-shot
|
|
87
|
+
'book': {
|
|
88
|
+
description: 'Book a trip. One-shot or existing trip checkout (POST /trips + /trips/checkout).',
|
|
62
89
|
request: {
|
|
63
|
-
|
|
90
|
+
trip_id: 'string? (required if no trip_item_token)',
|
|
91
|
+
trip_item_token: 'string? (from price-check, for one-shot booking)',
|
|
64
92
|
travelers: '[{ first_name, last_name, date_of_birth, gender, passenger_type, nationality?, passport_number?, passport_expiry?, passport_country? }]',
|
|
65
|
-
contact: '{ email: string, phone
|
|
93
|
+
contact: '{ email: string, phone?: string }',
|
|
66
94
|
},
|
|
67
95
|
response: {
|
|
68
96
|
checkout_url: 'string (https://app.gojinko.com/checkout?sid=XXX)',
|
|
69
97
|
session_id: 'string',
|
|
70
|
-
|
|
71
|
-
|
|
98
|
+
status: 'ready | pending | failed',
|
|
99
|
+
expires_at: 'string? (ISO datetime)',
|
|
72
100
|
},
|
|
73
101
|
},
|
|
74
102
|
'trip.travelers': {
|
|
75
|
-
description: 'Set travelers on a trip (
|
|
103
|
+
description: 'Set travelers on a trip (POST /trips with upsert_travelers).',
|
|
76
104
|
request: {
|
|
77
105
|
trip_id: 'string',
|
|
78
|
-
|
|
79
|
-
|
|
106
|
+
upsert_travelers: {
|
|
107
|
+
travelers: '[{ first_name, last_name, date_of_birth, gender, passenger_type, ... }]',
|
|
108
|
+
contact: '{ email: string, phone?: string }?',
|
|
109
|
+
},
|
|
80
110
|
},
|
|
81
111
|
response: {
|
|
82
112
|
trip_id: 'string',
|
|
83
113
|
status: 'string',
|
|
84
114
|
travelers: '[...]',
|
|
115
|
+
contact: '{ email, phone }',
|
|
85
116
|
actions_performed: 'string[]',
|
|
86
117
|
},
|
|
87
118
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;GAGG;AACH,MAAM,OAAO,GAAiH;IAC5H,gBAAgB,EAAE;QAChB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/trip/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/trip/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAS3D"}
|
|
@@ -2,15 +2,13 @@ import { registerTripCreateCommand } from './create.js';
|
|
|
2
2
|
import { registerTripShowCommand } from './show.js';
|
|
3
3
|
import { registerTripAddFlightCommand } from './add-flight.js';
|
|
4
4
|
import { registerTripTravelersCommand } from './travelers.js';
|
|
5
|
-
import { registerTripCheckoutCommand } from './checkout.js';
|
|
6
5
|
export function registerTripCommands(program) {
|
|
7
6
|
const trip = program
|
|
8
7
|
.command('trip')
|
|
9
|
-
.description('Manage trips: create, add flights, assign travelers
|
|
8
|
+
.description('Manage trips: create, add flights, and assign travelers.');
|
|
10
9
|
registerTripCreateCommand(trip);
|
|
11
10
|
registerTripShowCommand(trip);
|
|
12
11
|
registerTripAddFlightCommand(trip);
|
|
13
12
|
registerTripTravelersCommand(trip);
|
|
14
|
-
registerTripCheckoutCommand(trip);
|
|
15
13
|
}
|
|
16
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/trip/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/trip/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAE9D,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,IAAI,GAAG,OAAO;SACjB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,0DAA0D,CAAC,CAAC;IAE3E,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC9B,4BAA4B,CAAC,IAAI,CAAC,CAAC;IACnC,4BAA4B,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"travelers.d.ts","sourceRoot":"","sources":["../../../src/commands/trip/travelers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"travelers.d.ts","sourceRoot":"","sources":["../../../src/commands/trip/travelers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAsClE"}
|
|
@@ -15,19 +15,20 @@ export function registerTripTravelersCommand(parent) {
|
|
|
15
15
|
console.error('Error: --travelers must be valid JSON array.');
|
|
16
16
|
process.exit(3);
|
|
17
17
|
}
|
|
18
|
-
const
|
|
19
|
-
trip_id: opts.tripId,
|
|
20
|
-
upsert_travelers: travelers,
|
|
21
|
-
};
|
|
18
|
+
const upsertTravelers = { travelers };
|
|
22
19
|
if (opts.contact) {
|
|
23
20
|
try {
|
|
24
|
-
|
|
21
|
+
upsertTravelers['contact'] = JSON.parse(opts.contact);
|
|
25
22
|
}
|
|
26
23
|
catch {
|
|
27
24
|
console.error('Error: --contact must be valid JSON object.');
|
|
28
25
|
process.exit(3);
|
|
29
26
|
}
|
|
30
27
|
}
|
|
28
|
+
const body = {
|
|
29
|
+
trip_id: opts.tripId,
|
|
30
|
+
upsert_travelers: upsertTravelers,
|
|
31
|
+
};
|
|
31
32
|
const response = await client.raw.POST('/api/v1/devplatform/trips', {
|
|
32
33
|
body,
|
|
33
34
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"travelers.js","sourceRoot":"","sources":["../../../src/commands/trip/travelers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,UAAU,4BAA4B,CAAC,MAAe;IAC1D,MAAM;SACH,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,0BAA0B,CAAC;SACvC,cAAc,CAAC,gBAAgB,EAAE,SAAS,CAAC;SAC3C,cAAc,CAAC,oBAAoB,EAAE,sBAAsB,CAAC;SAC5D,MAAM,CAAC,kBAAkB,EAAE,0CAA0C,CAAC;SACtE,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjD,IAAI,SAAoB,CAAC;QACzB,IAAI,CAAC;YACH,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAc,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,
|
|
1
|
+
{"version":3,"file":"travelers.js","sourceRoot":"","sources":["../../../src/commands/trip/travelers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,UAAU,4BAA4B,CAAC,MAAe;IAC1D,MAAM;SACH,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,0BAA0B,CAAC;SACvC,cAAc,CAAC,gBAAgB,EAAE,SAAS,CAAC;SAC3C,cAAc,CAAC,oBAAoB,EAAE,sBAAsB,CAAC;SAC5D,MAAM,CAAC,kBAAkB,EAAE,0CAA0C,CAAC;SACtE,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjD,IAAI,SAAoB,CAAC;QACzB,IAAI,CAAC;YACH,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAc,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,eAAe,GAA4B,EAAE,SAAS,EAAE,CAAC;QAE/D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,eAAe,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAA4B;YACpC,OAAO,EAAE,IAAI,CAAC,MAAM;YACpB,gBAAgB,EAAE,eAAe;SAClC,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,2BAAoC,EAAE;YAC3E,IAAI;SACI,CAAC,CAAC;QAEZ,MAAM,CAAE,QAA+B,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,aAAa,IAAI,OAAO,CAmBvC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import { registerFlightsCommands } from './commands/flights/index.js';
|
|
3
3
|
import { registerTripCommands } from './commands/trip/index.js';
|
|
4
|
+
import { registerBookCommand } from './commands/book/index.js';
|
|
4
5
|
import { registerAuthCommands } from './commands/auth/index.js';
|
|
5
6
|
import { registerSchemaCommand } from './commands/schema.js';
|
|
6
7
|
import { registerConfigCommands } from './commands/config/index.js';
|
|
@@ -9,12 +10,13 @@ export function createProgram() {
|
|
|
9
10
|
program
|
|
10
11
|
.name('jinko')
|
|
11
12
|
.description('Jinko CLI — search flights, manage trips, and book travel from the terminal.')
|
|
12
|
-
.version('0.1.
|
|
13
|
+
.version('0.1.3')
|
|
13
14
|
.option('--format <format>', 'output format: json (default) or table', 'json')
|
|
14
|
-
.option('--api-key <key>', 'API key
|
|
15
|
+
.option('--api-key <key>', 'API key (jnk_...) — overrides env/config')
|
|
15
16
|
.option('--base-url <url>', 'BFF base URL override');
|
|
16
17
|
registerFlightsCommands(program);
|
|
17
18
|
registerTripCommands(program);
|
|
19
|
+
registerBookCommand(program);
|
|
18
20
|
registerAuthCommands(program);
|
|
19
21
|
registerConfigCommands(program);
|
|
20
22
|
registerSchemaCommand(program);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,OAAO,CAAC;SACb,WAAW,CAAC,8EAA8E,CAAC;SAC3F,OAAO,CAAC,OAAO,CAAC;SAChB,MAAM,CAAC,mBAAmB,EAAE,wCAAwC,EAAE,MAAM,CAAC;SAC7E,MAAM,CAAC,iBAAiB,EAAE
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,OAAO,CAAC;SACb,WAAW,CAAC,8EAA8E,CAAC;SAC3F,OAAO,CAAC,OAAO,CAAC;SAChB,MAAM,CAAC,mBAAmB,EAAE,wCAAwC,EAAE,MAAM,CAAC;SAC7E,MAAM,CAAC,iBAAiB,EAAE,0CAA0C,CAAC;SACrE,MAAM,CAAC,kBAAkB,EAAE,uBAAuB,CAAC,CAAC;IAEvD,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7B,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAE/B,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gojinko/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"jinko": "./dist/bin/jinko.js"
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"chalk": "^5.4.1",
|
|
13
13
|
"zod": "^3.23.8",
|
|
14
14
|
"yaml": "^2.7.0",
|
|
15
|
-
"@gojinko/api-client": "0.1.
|
|
15
|
+
"@gojinko/api-client": "0.1.3"
|
|
16
16
|
},
|
|
17
17
|
"publishConfig": {
|
|
18
18
|
"access": "public"
|