@gojinko/api-client 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 +140 -20
- package/dist/auth.d.ts +3 -4
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +5 -7
- package/dist/auth.js.map +1 -1
- package/dist/client.d.ts +7 -4
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +10 -4
- package/dist/client.js.map +1 -1
- package/dist/flights.d.ts +12 -0
- package/dist/flights.d.ts.map +1 -0
- package/dist/flights.js +23 -0
- package/dist/flights.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/trips.d.ts +18 -0
- package/dist/trips.d.ts.map +1 -0
- package/dist/trips.js +65 -0
- package/dist/trips.js.map +1 -0
- package/dist/types/devplatform.d.ts +129 -0
- package/dist/types/devplatform.d.ts.map +1 -0
- package/dist/types/devplatform.js +9 -0
- package/dist/types/devplatform.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -14,43 +14,145 @@ npm install @gojinko/api-client
|
|
|
14
14
|
import { createJinkoClient } from '@gojinko/api-client';
|
|
15
15
|
|
|
16
16
|
const client = await createJinkoClient({
|
|
17
|
-
apiKey: 'jnk_your_api_key',
|
|
18
|
-
baseUrl: 'https://bff.gojinko.com', // optional, this is the default
|
|
17
|
+
apiKey: 'jnk_your_api_key',
|
|
19
18
|
});
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Flights — Cached
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
```typescript
|
|
24
|
+
// Find cheapest flights (cached search)
|
|
25
|
+
const flights = await client.flights.find({
|
|
26
|
+
passengers: { adults: 1 },
|
|
27
|
+
filters: {
|
|
28
|
+
locations: {
|
|
29
|
+
origins: [{ code: 'PAR' }],
|
|
30
|
+
destinations: [{ code: 'NYC' }],
|
|
31
|
+
},
|
|
32
|
+
dates: { departure: '2026-04-15' },
|
|
27
33
|
trip_type: 'oneway',
|
|
28
34
|
cabin_class: 'economy',
|
|
29
|
-
passengers: { adults: 1 },
|
|
30
35
|
},
|
|
36
|
+
sort_by: 'lowest',
|
|
37
|
+
limit: 10,
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// Discover destinations from origin airports
|
|
41
|
+
const destinations = await client.flights.destinations({
|
|
42
|
+
passengers: { adults: 1 },
|
|
43
|
+
filters: {
|
|
44
|
+
locations: { origins: [{ code: 'PAR' }] },
|
|
45
|
+
trip_type: 'oneway',
|
|
46
|
+
},
|
|
47
|
+
limit: 20,
|
|
48
|
+
});
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Flights — Live
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
// Live flight search
|
|
55
|
+
const results = await client.flights.shop({
|
|
56
|
+
origin: 'PAR',
|
|
57
|
+
destination: 'NYC',
|
|
58
|
+
departure_date: '2026-04-15',
|
|
59
|
+
trip_type: 'oneway',
|
|
60
|
+
cabin_class: 'economy',
|
|
61
|
+
passengers: { adults: 1 },
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
// Price-check a specific offer
|
|
65
|
+
const fares = await client.flights.shop({
|
|
66
|
+
offer_token: 'tok_abc123',
|
|
67
|
+
passengers: { adults: 1 },
|
|
68
|
+
});
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Trip Management
|
|
72
|
+
|
|
73
|
+
```typescript
|
|
74
|
+
// Create an empty trip
|
|
75
|
+
const trip = await client.trips.create();
|
|
76
|
+
|
|
77
|
+
// Add a flight
|
|
78
|
+
const updated = await client.trips.addFlight('trip_item_tok_xyz', tripId);
|
|
79
|
+
|
|
80
|
+
// Set travelers
|
|
81
|
+
await client.trips.setTravelers({
|
|
82
|
+
trip_id: tripId,
|
|
83
|
+
upsert_travelers: [{
|
|
84
|
+
first_name: 'John',
|
|
85
|
+
last_name: 'Doe',
|
|
86
|
+
date_of_birth: '1990-01-15',
|
|
87
|
+
gender: 'MALE',
|
|
88
|
+
passenger_type: 'ADULT',
|
|
89
|
+
}],
|
|
90
|
+
contact: { email: 'john@example.com', phone: '+33612345678' },
|
|
31
91
|
});
|
|
32
92
|
|
|
33
|
-
|
|
93
|
+
// Show trip details
|
|
94
|
+
const details = await client.trips.show(tripId);
|
|
34
95
|
```
|
|
35
96
|
|
|
97
|
+
### Booking
|
|
98
|
+
|
|
99
|
+
```typescript
|
|
100
|
+
// One-shot booking: creates trip + adds flight + sets travelers + checks out
|
|
101
|
+
const checkout = await client.trips.book({
|
|
102
|
+
trip_item_token: 'trip_item_tok_xyz',
|
|
103
|
+
travelers: [{
|
|
104
|
+
first_name: 'John',
|
|
105
|
+
last_name: 'Doe',
|
|
106
|
+
date_of_birth: '1990-01-15',
|
|
107
|
+
gender: 'MALE',
|
|
108
|
+
passenger_type: 'ADULT',
|
|
109
|
+
}],
|
|
110
|
+
contact: { email: 'john@example.com', phone: '+33612345678' },
|
|
111
|
+
});
|
|
112
|
+
// checkout → { checkout_url, session_id, trip_id }
|
|
113
|
+
|
|
114
|
+
// Or checkout an existing trip
|
|
115
|
+
const result = await client.trips.checkout({ trip_id: tripId });
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Raw Client
|
|
119
|
+
|
|
120
|
+
The underlying openapi-fetch client is still accessible for endpoints not yet wrapped:
|
|
121
|
+
|
|
122
|
+
```typescript
|
|
123
|
+
const response = await client.raw.POST('/api/v1/devplatform/flights/shop' as never, {
|
|
124
|
+
body: { ... },
|
|
125
|
+
} as never);
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## API Endpoints
|
|
129
|
+
|
|
130
|
+
All calls go to `/api/v1/devplatform/` on the BFF.
|
|
131
|
+
|
|
132
|
+
| Method | Endpoint | Type | API |
|
|
133
|
+
|--------|----------|------|-----|
|
|
134
|
+
| `flights.find()` | `POST /flights/search` | Cached | Cheapest flights |
|
|
135
|
+
| `flights.destinations()` | `POST /flights/destination-search` | Cached | Destination discovery |
|
|
136
|
+
| `flights.shop()` | `POST /flights/shop` | Live | Search or price-check |
|
|
137
|
+
| `trips.create()` | `POST /trips` | Live | Create empty trip |
|
|
138
|
+
| `trips.show()` | `POST /trips` | Live | Get trip details |
|
|
139
|
+
| `trips.addFlight()` | `POST /trips` | Live | Add flight to trip |
|
|
140
|
+
| `trips.setTravelers()` | `POST /trips` | Live | Set travelers + contact |
|
|
141
|
+
| `trips.checkout()` | `POST /trips/checkout` | Live | Generate checkout URL |
|
|
142
|
+
| `trips.book()` | `POST /trips` + `/trips/checkout` | Live | One-shot booking |
|
|
143
|
+
|
|
36
144
|
## Authentication
|
|
37
145
|
|
|
38
146
|
Auth is resolved with precedence: parameter > environment variable > config file.
|
|
39
147
|
|
|
40
148
|
```typescript
|
|
41
|
-
// API key
|
|
149
|
+
// Pass API key directly
|
|
42
150
|
const client = await createJinkoClient({ apiKey: 'jnk_...' });
|
|
43
151
|
|
|
44
|
-
//
|
|
45
|
-
const client = await createJinkoClient({ apiKey: 'eyJ...' });
|
|
46
|
-
|
|
47
|
-
// Or via environment variables
|
|
48
|
-
// JINKO_API_KEY=jnk_...
|
|
49
|
-
// JINKO_TOKEN=eyJ...
|
|
152
|
+
// Or via environment variable (JINKO_API_KEY=jnk_...)
|
|
50
153
|
const client = await createJinkoClient();
|
|
51
154
|
|
|
52
|
-
// Or via ~/.jinko/config.yaml
|
|
53
|
-
// api_key: jnk_...
|
|
155
|
+
// Or via ~/.jinko/config.yaml (api_key: jnk_...)
|
|
54
156
|
```
|
|
55
157
|
|
|
56
158
|
## Config File
|
|
@@ -59,7 +161,7 @@ Reads from `~/.jinko/config.yaml`:
|
|
|
59
161
|
|
|
60
162
|
```yaml
|
|
61
163
|
api_key: jnk_your_key
|
|
62
|
-
base_url: https://bff.gojinko.com
|
|
164
|
+
base_url: https://mcp-bff.dev.gojinko.com
|
|
63
165
|
```
|
|
64
166
|
|
|
65
167
|
```typescript
|
|
@@ -85,3 +187,21 @@ try {
|
|
|
85
187
|
}
|
|
86
188
|
}
|
|
87
189
|
```
|
|
190
|
+
|
|
191
|
+
## Types
|
|
192
|
+
|
|
193
|
+
All request types are exported for use in your own code:
|
|
194
|
+
|
|
195
|
+
```typescript
|
|
196
|
+
import type {
|
|
197
|
+
FlightFindRequest,
|
|
198
|
+
FlightDestinationSearchRequest,
|
|
199
|
+
FlightShopSearchRequest,
|
|
200
|
+
FlightShopPriceCheckRequest,
|
|
201
|
+
BookRequest,
|
|
202
|
+
TripRequest,
|
|
203
|
+
Traveler,
|
|
204
|
+
Contact,
|
|
205
|
+
Passengers,
|
|
206
|
+
} from '@gojinko/api-client';
|
|
207
|
+
```
|
package/dist/auth.d.ts
CHANGED
|
@@ -8,15 +8,14 @@ interface ConfigFile {
|
|
|
8
8
|
readonly oauth_token?: string;
|
|
9
9
|
readonly base_url?: string;
|
|
10
10
|
}
|
|
11
|
-
declare const DEFAULT_BASE_URL = "https://bff.gojinko.com";
|
|
11
|
+
declare const DEFAULT_BASE_URL = "https://mcp-bff.dev.gojinko.com";
|
|
12
12
|
declare const CONFIG_DIR: string;
|
|
13
13
|
declare const CONFIG_FILE: string;
|
|
14
14
|
/**
|
|
15
15
|
* Resolve auth credentials with precedence: param > env > config file.
|
|
16
|
-
* Supports both API key (jnk_...) and OAuth JWT token.
|
|
17
16
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
17
|
+
* Currently only API key auth (jnk_...) is supported.
|
|
18
|
+
* OAuth JWT support exists internally but is not exposed to users yet.
|
|
20
19
|
*/
|
|
21
20
|
export declare function resolveAuth(paramToken?: string): Promise<ResolvedAuth | undefined>;
|
|
22
21
|
/**
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,UAAU;IAClB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,QAAA,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,UAAU;IAClB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,QAAA,MAAM,gBAAgB,oCAAoC,CAAC;AAC3D,QAAA,MAAM,UAAU,QAA4B,CAAC;AAC7C,QAAA,MAAM,WAAW,QAAkC,CAAC;AAEpD;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAYxF;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQvE;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAOtE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CASjF;AAED,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC"}
|
package/dist/auth.js
CHANGED
|
@@ -2,24 +2,22 @@ import { readFile } from 'node:fs/promises';
|
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
import { parse as parseYaml } from 'yaml';
|
|
5
|
-
const DEFAULT_BASE_URL = 'https://bff.gojinko.com';
|
|
5
|
+
const DEFAULT_BASE_URL = 'https://mcp-bff.dev.gojinko.com';
|
|
6
6
|
const CONFIG_DIR = join(homedir(), '.jinko');
|
|
7
7
|
const CONFIG_FILE = join(CONFIG_DIR, 'config.yaml');
|
|
8
8
|
/**
|
|
9
9
|
* Resolve auth credentials with precedence: param > env > config file.
|
|
10
|
-
* Supports both API key (jnk_...) and OAuth JWT token.
|
|
11
10
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
11
|
+
* Currently only API key auth (jnk_...) is supported.
|
|
12
|
+
* OAuth JWT support exists internally but is not exposed to users yet.
|
|
14
13
|
*/
|
|
15
14
|
export async function resolveAuth(paramToken) {
|
|
16
15
|
const token = paramToken
|
|
17
16
|
?? process.env['JINKO_API_KEY']
|
|
18
|
-
??
|
|
19
|
-
?? (await readConfigFile())?.api_key
|
|
20
|
-
?? (await readConfigFile())?.oauth_token;
|
|
17
|
+
?? (await readConfigFile())?.api_key;
|
|
21
18
|
if (!token)
|
|
22
19
|
return undefined;
|
|
20
|
+
// Internal: keep oauth detection for future use.
|
|
23
21
|
return {
|
|
24
22
|
method: token.startsWith('jnk_') ? 'api_key' : 'oauth',
|
|
25
23
|
token,
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAe1C,MAAM,gBAAgB,GAAG,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAe1C,MAAM,gBAAgB,GAAG,iCAAiC,CAAC;AAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAAmB;IACnD,MAAM,KAAK,GAAG,UAAU;WACnB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;WAC5B,CAAC,MAAM,cAAc,EAAE,CAAC,EAAE,OAAO,CAAC;IAEvC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAE7B,iDAAiD;IACjD,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;QACtD,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAiB;IACpD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC7C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC;IACtC,OAAO,MAAM,EAAE,QAAQ,IAAI,gBAAgB,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,SAAS,CAAC,OAAO,CAAe,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAA4B;IAChE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC9D,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAE1D,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7C,MAAM,QAAQ,GAAG,CAAC,MAAM,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC;IAChD,MAAM,MAAM,GAAe,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC;IACvD,MAAM,SAAS,CAAC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;AAC/D,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
import createClient from 'openapi-fetch';
|
|
2
2
|
import { type ResolvedAuth } from './auth.js';
|
|
3
|
+
import { type FlightsApi } from './flights.js';
|
|
4
|
+
import { type TripsApi } from './trips.js';
|
|
3
5
|
import type { paths } from './types/generated.js';
|
|
4
6
|
export interface ClientOptions {
|
|
5
7
|
readonly apiKey?: string;
|
|
6
8
|
readonly baseUrl?: string;
|
|
7
9
|
}
|
|
10
|
+
export type JinkoRawClient = ReturnType<typeof createClient<paths>>;
|
|
8
11
|
export interface JinkoClient {
|
|
9
|
-
readonly raw:
|
|
12
|
+
readonly raw: JinkoRawClient;
|
|
10
13
|
readonly baseUrl: string;
|
|
11
14
|
readonly auth: ResolvedAuth;
|
|
15
|
+
readonly flights: FlightsApi;
|
|
16
|
+
readonly trips: TripsApi;
|
|
12
17
|
}
|
|
13
18
|
/**
|
|
14
19
|
* Create a configured openapi-fetch client for the Jinko BFF.
|
|
15
20
|
*
|
|
16
|
-
* Auth
|
|
17
|
-
* - `jnk_...` → API key auth (X-API-Key header)
|
|
18
|
-
* - anything else → OAuth JWT (Authorization: Bearer header)
|
|
21
|
+
* Auth: pass an API key (jnk_...) via options, JINKO_API_KEY env, or ~/.jinko/config.yaml.
|
|
19
22
|
*/
|
|
20
23
|
export declare function createJinkoClient(options?: ClientOptions): Promise<JinkoClient>;
|
|
21
24
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,YAAiC,MAAM,eAAe,CAAC;AAC9D,OAAO,EAA+B,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,YAAiC,MAAM,eAAe,CAAC;AAC9D,OAAO,EAA+B,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAE3E,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAEpE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CA2DzF"}
|
package/dist/client.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import createClient from 'openapi-fetch';
|
|
2
2
|
import { resolveAuth, resolveBaseUrl } from './auth.js';
|
|
3
3
|
import { ApiError, AuthError } from './errors.js';
|
|
4
|
+
import { createFlightsApi } from './flights.js';
|
|
5
|
+
import { createTripsApi } from './trips.js';
|
|
4
6
|
/**
|
|
5
7
|
* Create a configured openapi-fetch client for the Jinko BFF.
|
|
6
8
|
*
|
|
7
|
-
* Auth
|
|
8
|
-
* - `jnk_...` → API key auth (X-API-Key header)
|
|
9
|
-
* - anything else → OAuth JWT (Authorization: Bearer header)
|
|
9
|
+
* Auth: pass an API key (jnk_...) via options, JINKO_API_KEY env, or ~/.jinko/config.yaml.
|
|
10
10
|
*/
|
|
11
11
|
export async function createJinkoClient(options = {}) {
|
|
12
12
|
const auth = await resolveAuth(options.apiKey);
|
|
@@ -55,6 +55,12 @@ export async function createJinkoClient(options = {}) {
|
|
|
55
55
|
};
|
|
56
56
|
client.use(authMiddleware);
|
|
57
57
|
client.use(errorMiddleware);
|
|
58
|
-
return {
|
|
58
|
+
return {
|
|
59
|
+
raw: client,
|
|
60
|
+
baseUrl,
|
|
61
|
+
auth,
|
|
62
|
+
flights: createFlightsApi(client),
|
|
63
|
+
trips: createTripsApi(client),
|
|
64
|
+
};
|
|
59
65
|
}
|
|
60
66
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,YAAiC,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAqB,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { JinkoRawClient } from './client.js';
|
|
2
|
+
import type { FlightFindRequest, FlightDestinationSearchRequest, FlightShopRequest } from './types/devplatform.js';
|
|
3
|
+
export interface FlightsApi {
|
|
4
|
+
/** Cached flight search — returns offer_tokens for live pricing. */
|
|
5
|
+
readonly find: (request: FlightFindRequest) => Promise<unknown>;
|
|
6
|
+
/** Discover destinations from origin airports (cached). */
|
|
7
|
+
readonly destinations: (request: FlightDestinationSearchRequest) => Promise<unknown>;
|
|
8
|
+
/** Live flight search or price-check a specific offer. */
|
|
9
|
+
readonly shop: (request: FlightShopRequest) => Promise<unknown>;
|
|
10
|
+
}
|
|
11
|
+
export declare function createFlightsApi(raw: JinkoRawClient): FlightsApi;
|
|
12
|
+
//# sourceMappingURL=flights.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flights.d.ts","sourceRoot":"","sources":["../src/flights.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EACV,iBAAiB,EACjB,8BAA8B,EAC9B,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,UAAU;IACzB,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhE,2DAA2D;IAC3D,QAAQ,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,8BAA8B,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAErF,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACjE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,cAAc,GAAG,UAAU,CAuBhE"}
|
package/dist/flights.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export function createFlightsApi(raw) {
|
|
2
|
+
return {
|
|
3
|
+
async find(request) {
|
|
4
|
+
const response = await raw.POST('/api/v1/devplatform/flights/search', {
|
|
5
|
+
body: request,
|
|
6
|
+
});
|
|
7
|
+
return response.data;
|
|
8
|
+
},
|
|
9
|
+
async destinations(request) {
|
|
10
|
+
const response = await raw.POST('/api/v1/devplatform/flights/destination-search', {
|
|
11
|
+
body: request,
|
|
12
|
+
});
|
|
13
|
+
return response.data;
|
|
14
|
+
},
|
|
15
|
+
async shop(request) {
|
|
16
|
+
const response = await raw.POST('/api/v1/devplatform/flights/shop', {
|
|
17
|
+
body: request,
|
|
18
|
+
});
|
|
19
|
+
return response.data;
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=flights.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flights.js","sourceRoot":"","sources":["../src/flights.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,gBAAgB,CAAC,GAAmB;IAClD,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,OAAO;YAChB,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,oCAA6C,EAAE;gBAC7E,IAAI,EAAE,OAAO;aACL,CAAC,CAAC;YACZ,OAAQ,QAA+B,CAAC,IAAI,CAAC;QAC/C,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,OAAO;YACxB,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,gDAAyD,EAAE;gBACzF,IAAI,EAAE,OAAO;aACL,CAAC,CAAC;YACZ,OAAQ,QAA+B,CAAC,IAAI,CAAC;QAC/C,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,OAAO;YAChB,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,kCAA2C,EAAE;gBAC3E,IAAI,EAAE,OAAO;aACL,CAAC,CAAC;YACZ,OAAQ,QAA+B,CAAC,IAAI,CAAC;QAC/C,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
export { createJinkoClient, type ClientOptions, type JinkoClient } from './client.js';
|
|
1
|
+
export { createJinkoClient, type ClientOptions, type JinkoClient, type JinkoRawClient } from './client.js';
|
|
2
2
|
export { resolveAuth, resolveBaseUrl, readConfigFile, writeConfigFile, CONFIG_DIR, CONFIG_FILE, DEFAULT_BASE_URL, type AuthMethod, type ResolvedAuth } from './auth.js';
|
|
3
3
|
export { ApiError, AuthError, ValidationError, type ApiErrorDetail } from './errors.js';
|
|
4
4
|
export type { paths, components } from './types/generated.js';
|
|
5
|
+
export type { FlightsApi } from './flights.js';
|
|
6
|
+
export type { TripsApi } from './trips.js';
|
|
7
|
+
export type { FlightPassengers, ShopPassengers, FlightSearchFilters, FlightPriceConstraints, DateRange, FlightFindRequest, FlightDestinationSearchRequest, FlightShopRequest, FlightShopSearchRequest, FlightShopPriceCheckRequest, Traveler, Contact, TripUpsertTravelers, TripRequest, CheckoutRequest, BookRequest, } from './types/devplatform.js';
|
|
5
8
|
//# sourceMappingURL=index.d.ts.map
|
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,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC3G,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AACxK,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AACxF,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC9D,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,SAAS,EACT,iBAAiB,EACjB,8BAA8B,EAC9B,iBAAiB,EACjB,uBAAuB,EACvB,2BAA2B,EAC3B,QAAQ,EACR,OAAO,EACP,mBAAmB,EACnB,WAAW,EACX,eAAe,EACf,WAAW,GACZ,MAAM,wBAAwB,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA6D,MAAM,aAAa,CAAC;AAC3G,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAsC,MAAM,WAAW,CAAC;AACxK,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAuB,MAAM,aAAa,CAAC"}
|
package/dist/trips.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { JinkoRawClient } from './client.js';
|
|
2
|
+
import type { TripUpsertTravelers, CheckoutRequest, BookRequest } from './types/devplatform.js';
|
|
3
|
+
export interface TripsApi {
|
|
4
|
+
/** Create an empty trip (shopping cart). */
|
|
5
|
+
readonly create: () => Promise<unknown>;
|
|
6
|
+
/** Get trip details by ID. */
|
|
7
|
+
readonly show: (tripId: string) => Promise<unknown>;
|
|
8
|
+
/** Add a flight to a trip using a trip_item_token. */
|
|
9
|
+
readonly addFlight: (tripItemToken: string, tripId?: string) => Promise<unknown>;
|
|
10
|
+
/** Set travelers (and optional contact) on a trip. */
|
|
11
|
+
readonly setTravelers: (tripId: string, upsertTravelers: TripUpsertTravelers) => Promise<unknown>;
|
|
12
|
+
/** Checkout a trip — handles quoting and returns a checkout URL. */
|
|
13
|
+
readonly checkout: (request: CheckoutRequest) => Promise<unknown>;
|
|
14
|
+
/** One-shot booking: create trip + add flight + set travelers + checkout. */
|
|
15
|
+
readonly book: (request: BookRequest) => Promise<unknown>;
|
|
16
|
+
}
|
|
17
|
+
export declare function createTripsApi(raw: JinkoRawClient): TripsApi;
|
|
18
|
+
//# sourceMappingURL=trips.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trips.d.ts","sourceRoot":"","sources":["../src/trips.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAEV,mBAAmB,EACnB,eAAe,EACf,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,QAAQ;IACvB,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAExC,8BAA8B;IAC9B,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpD,sDAAsD;IACtD,QAAQ,CAAC,SAAS,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjF,sDAAsD;IACtD,QAAQ,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,mBAAmB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAElG,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAElE,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,QAAQ,CA2E5D"}
|
package/dist/trips.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export function createTripsApi(raw) {
|
|
2
|
+
async function postTrip(body) {
|
|
3
|
+
const response = await raw.POST('/api/v1/devplatform/trips', {
|
|
4
|
+
body,
|
|
5
|
+
});
|
|
6
|
+
return response.data;
|
|
7
|
+
}
|
|
8
|
+
async function postCheckout(body) {
|
|
9
|
+
const response = await raw.POST('/api/v1/devplatform/trips/checkout', {
|
|
10
|
+
body,
|
|
11
|
+
});
|
|
12
|
+
return response.data;
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
async create() {
|
|
16
|
+
return postTrip({});
|
|
17
|
+
},
|
|
18
|
+
async show(tripId) {
|
|
19
|
+
return postTrip({ trip_id: tripId });
|
|
20
|
+
},
|
|
21
|
+
async addFlight(tripItemToken, tripId) {
|
|
22
|
+
return postTrip({
|
|
23
|
+
...(tripId ? { trip_id: tripId } : {}),
|
|
24
|
+
add_item: { trip_item_token: tripItemToken },
|
|
25
|
+
});
|
|
26
|
+
},
|
|
27
|
+
async setTravelers(tripId, upsertTravelers) {
|
|
28
|
+
return postTrip({
|
|
29
|
+
trip_id: tripId,
|
|
30
|
+
upsert_travelers: upsertTravelers,
|
|
31
|
+
});
|
|
32
|
+
},
|
|
33
|
+
async checkout(request) {
|
|
34
|
+
return postCheckout(request);
|
|
35
|
+
},
|
|
36
|
+
async book(request) {
|
|
37
|
+
const { trip_item_token, travelers, contact } = request;
|
|
38
|
+
let tripId = request.trip_id;
|
|
39
|
+
// Step 1: Create trip with flight + travelers if trip_item_token provided.
|
|
40
|
+
if (trip_item_token) {
|
|
41
|
+
const tripBody = {
|
|
42
|
+
...(tripId ? { trip_id: tripId } : {}),
|
|
43
|
+
add_item: { trip_item_token },
|
|
44
|
+
...(travelers || contact ? {
|
|
45
|
+
upsert_travelers: {
|
|
46
|
+
travelers: travelers ?? [],
|
|
47
|
+
...(contact ? { contact } : {}),
|
|
48
|
+
},
|
|
49
|
+
} : {}),
|
|
50
|
+
};
|
|
51
|
+
const tripData = await postTrip(tripBody);
|
|
52
|
+
tripId = tripData?.['trip_id'];
|
|
53
|
+
if (!tripId) {
|
|
54
|
+
throw new Error('Failed to create trip — no trip_id returned.');
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (!tripId) {
|
|
58
|
+
throw new Error('Either trip_id or trip_item_token is required.');
|
|
59
|
+
}
|
|
60
|
+
// Step 2: Checkout.
|
|
61
|
+
return postCheckout({ trip_id: tripId });
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=trips.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trips.js","sourceRoot":"","sources":["../src/trips.ts"],"names":[],"mappings":"AA4BA,MAAM,UAAU,cAAc,CAAC,GAAmB;IAChD,KAAK,UAAU,QAAQ,CAAC,IAAiB;QACvC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,2BAAoC,EAAE;YACpE,IAAI;SACI,CAAC,CAAC;QACZ,OAAQ,QAA+B,CAAC,IAAI,CAAC;IAC/C,CAAC;IAED,KAAK,UAAU,YAAY,CAAC,IAAqB;QAC/C,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,oCAA6C,EAAE;YAC7E,IAAI;SACI,CAAC,CAAC;QACZ,OAAQ,QAA+B,CAAC,IAAI,CAAC;IAC/C,CAAC;IAED,OAAO;QACL,KAAK,CAAC,MAAM;YACV,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,MAAM;YACf,OAAO,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACvC,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM;YACnC,OAAO,QAAQ,CAAC;gBACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtC,QAAQ,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE;aAC7C,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,eAAe;YACxC,OAAO,QAAQ,CAAC;gBACd,OAAO,EAAE,MAAM;gBACf,gBAAgB,EAAE,eAAe;aAClC,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,OAAO;YACpB,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,OAAO;YAChB,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;YACxD,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAE7B,2EAA2E;YAC3E,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,QAAQ,GAAgB;oBAC5B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtC,QAAQ,EAAE,EAAE,eAAe,EAAE;oBAC7B,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC;wBACzB,gBAAgB,EAAE;4BAChB,SAAS,EAAE,SAAS,IAAI,EAAE;4BAC1B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBAChC;qBACF,CAAC,CAAC,CAAC,EAAE,CAAC;iBACR,CAAC;gBAEF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAwC,CAAC;gBACjF,MAAM,GAAG,QAAQ,EAAE,CAAC,SAAS,CAAW,CAAC;gBAEzC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;YAED,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACpE,CAAC;YAED,oBAAoB;YACpB,OAAO,YAAY,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3C,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Request/response types for the devplatform API.
|
|
3
|
+
*
|
|
4
|
+
* These are hand-written to match BFF Go structs until the BFF swagger
|
|
5
|
+
* exposes /devplatform routes, at which point they should be replaced
|
|
6
|
+
* by generated types.
|
|
7
|
+
*/
|
|
8
|
+
/** Passenger counts using GDS-style shortcodes (adt/chd/inf). Used by cached endpoints. */
|
|
9
|
+
export interface FlightPassengers {
|
|
10
|
+
readonly adt?: number;
|
|
11
|
+
readonly chd?: number;
|
|
12
|
+
readonly inf_lap?: number;
|
|
13
|
+
readonly inf_seat?: number;
|
|
14
|
+
readonly youth?: number;
|
|
15
|
+
readonly student?: number;
|
|
16
|
+
readonly ages?: readonly number[];
|
|
17
|
+
readonly residency_country?: string;
|
|
18
|
+
}
|
|
19
|
+
/** Passenger counts using human-readable names. Used by /flights/shop. */
|
|
20
|
+
export interface ShopPassengers {
|
|
21
|
+
readonly adults?: number;
|
|
22
|
+
readonly children?: number;
|
|
23
|
+
readonly infants?: number;
|
|
24
|
+
}
|
|
25
|
+
export interface DateRange {
|
|
26
|
+
readonly start: string;
|
|
27
|
+
readonly end: string;
|
|
28
|
+
}
|
|
29
|
+
export interface StayDaysRange {
|
|
30
|
+
readonly min: number;
|
|
31
|
+
readonly max: number;
|
|
32
|
+
}
|
|
33
|
+
export interface FlightSearchFilters {
|
|
34
|
+
readonly locations: {
|
|
35
|
+
readonly origins: readonly string[];
|
|
36
|
+
readonly destinations?: readonly string[];
|
|
37
|
+
};
|
|
38
|
+
readonly dates?: {
|
|
39
|
+
readonly departure_dates?: readonly string[];
|
|
40
|
+
readonly departure_date_ranges?: readonly DateRange[];
|
|
41
|
+
readonly return_dates?: readonly string[];
|
|
42
|
+
readonly return_date_ranges?: readonly DateRange[];
|
|
43
|
+
readonly stay_days?: number;
|
|
44
|
+
readonly stay_days_range?: StayDaysRange;
|
|
45
|
+
};
|
|
46
|
+
readonly trip_type: 'oneway' | 'roundtrip';
|
|
47
|
+
readonly cabin_class?: string;
|
|
48
|
+
readonly direct_only?: boolean;
|
|
49
|
+
}
|
|
50
|
+
export interface FlightPriceConstraints {
|
|
51
|
+
readonly max_total?: number;
|
|
52
|
+
}
|
|
53
|
+
export interface FlightFindRequest {
|
|
54
|
+
readonly passengers: FlightPassengers;
|
|
55
|
+
readonly filters: FlightSearchFilters;
|
|
56
|
+
readonly locale?: string;
|
|
57
|
+
readonly currency?: string;
|
|
58
|
+
readonly limit?: number;
|
|
59
|
+
readonly offset?: number;
|
|
60
|
+
readonly sort?: 'lowest' | 'recommendation';
|
|
61
|
+
readonly price_constraints?: FlightPriceConstraints;
|
|
62
|
+
}
|
|
63
|
+
export interface FlightDestinationSearchRequest {
|
|
64
|
+
readonly passengers: FlightPassengers;
|
|
65
|
+
readonly filters: FlightSearchFilters;
|
|
66
|
+
readonly locale?: string;
|
|
67
|
+
readonly currency?: string;
|
|
68
|
+
readonly limit?: number;
|
|
69
|
+
readonly offset?: number;
|
|
70
|
+
readonly flights_per_destination?: number;
|
|
71
|
+
readonly sort?: 'lowest' | 'recommendation';
|
|
72
|
+
readonly price_constraints?: FlightPriceConstraints;
|
|
73
|
+
}
|
|
74
|
+
export interface FlightShopSearchRequest {
|
|
75
|
+
readonly origin: string;
|
|
76
|
+
readonly destination: string;
|
|
77
|
+
readonly departure_date: string;
|
|
78
|
+
readonly return_date?: string;
|
|
79
|
+
readonly trip_type?: string;
|
|
80
|
+
readonly cabin_class?: string;
|
|
81
|
+
readonly direct_only?: boolean;
|
|
82
|
+
readonly max_price?: number;
|
|
83
|
+
readonly passengers?: ShopPassengers;
|
|
84
|
+
readonly currency?: string;
|
|
85
|
+
readonly locale?: string;
|
|
86
|
+
}
|
|
87
|
+
export interface FlightShopPriceCheckRequest {
|
|
88
|
+
readonly offer_token: string;
|
|
89
|
+
readonly passengers?: ShopPassengers;
|
|
90
|
+
readonly currency?: string;
|
|
91
|
+
readonly locale?: string;
|
|
92
|
+
}
|
|
93
|
+
export type FlightShopRequest = FlightShopSearchRequest | FlightShopPriceCheckRequest;
|
|
94
|
+
export interface Traveler {
|
|
95
|
+
readonly first_name: string;
|
|
96
|
+
readonly last_name: string;
|
|
97
|
+
readonly date_of_birth: string;
|
|
98
|
+
readonly gender: string;
|
|
99
|
+
readonly passenger_type: string;
|
|
100
|
+
readonly nationality?: string;
|
|
101
|
+
readonly passport_number?: string;
|
|
102
|
+
readonly passport_expiry?: string;
|
|
103
|
+
readonly passport_country?: string;
|
|
104
|
+
}
|
|
105
|
+
export interface Contact {
|
|
106
|
+
readonly email: string;
|
|
107
|
+
readonly phone?: string;
|
|
108
|
+
}
|
|
109
|
+
export interface TripUpsertTravelers {
|
|
110
|
+
readonly travelers: readonly Traveler[];
|
|
111
|
+
readonly contact?: Contact;
|
|
112
|
+
}
|
|
113
|
+
export interface TripRequest {
|
|
114
|
+
readonly trip_id?: string;
|
|
115
|
+
readonly add_item?: {
|
|
116
|
+
readonly trip_item_token: string;
|
|
117
|
+
};
|
|
118
|
+
readonly upsert_travelers?: TripUpsertTravelers;
|
|
119
|
+
}
|
|
120
|
+
export interface CheckoutRequest {
|
|
121
|
+
readonly trip_id: string;
|
|
122
|
+
}
|
|
123
|
+
export interface BookRequest {
|
|
124
|
+
readonly trip_id?: string;
|
|
125
|
+
readonly trip_item_token?: string;
|
|
126
|
+
readonly travelers?: readonly Traveler[];
|
|
127
|
+
readonly contact?: Contact;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=devplatform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devplatform.d.ts","sourceRoot":"","sources":["../../src/types/devplatform.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Request/response types for the devplatform API.
|
|
3
|
+
*
|
|
4
|
+
* These are hand-written to match BFF Go structs until the BFF swagger
|
|
5
|
+
* exposes /devplatform routes, at which point they should be replaced
|
|
6
|
+
* by generated types.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=devplatform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devplatform.js","sourceRoot":"","sources":["../../src/types/devplatform.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|