@gojinko/api-client 0.1.2 → 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 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', // or an OAuth JWT token
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
- // Search flights (typed openapi-fetch client)
22
- const response = await client.raw.POST('/api/v1/devplatform/flights/shop', {
23
- body: {
24
- origin: 'PAR',
25
- destination: 'NYC',
26
- departure_date: '2026-04-15',
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
- console.log(response.data);
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 (detected by jnk_ prefix → sends X-API-Key header)
149
+ // Pass API key directly
42
150
  const client = await createJinkoClient({ apiKey: 'jnk_...' });
43
151
 
44
- // OAuth JWT (anything else → sends Authorization: Bearer header)
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
@@ -13,10 +13,9 @@ 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
- * Detection: if the token starts with "jnk_" it's an API key,
19
- * otherwise it's treated as an OAuth JWT.
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
  /**
@@ -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,oCAAoC,CAAC;AAC3D,QAAA,MAAM,UAAU,QAA4B,CAAC;AAC7C,QAAA,MAAM,WAAW,QAAkC,CAAC;AAEpD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAaxF;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"}
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
@@ -7,19 +7,17 @@ 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
- * Detection: if the token starts with "jnk_" it's an API key,
13
- * otherwise it's treated as an OAuth JWT.
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
- ?? process.env['JINKO_TOKEN']
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,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;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAAmB;IACnD,MAAM,KAAK,GAAG,UAAU;WACnB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;WAC5B,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;WAC1B,CAAC,MAAM,cAAc,EAAE,CAAC,EAAE,OAAO;WACjC,CAAC,MAAM,cAAc,EAAE,CAAC,EAAE,WAAW,CAAC;IAE3C,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAE7B,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"}
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: ReturnType<typeof createClient<paths>>;
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 is determined by the token format:
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
@@ -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;AAG3E,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,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAqDzF"}
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 is determined by the token format:
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 { raw: client, baseUrl, auth };
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
@@ -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;AAelD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,UAAyB,EAAE;IACjE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,SAAS,EAAE,CAAC;IACxB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtD,MAAM,MAAM,GAAG,YAAY,CAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAEhD,oEAAoE;IACpE,MAAM,cAAc,GAAe;QACjC,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE;YACzB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YAE1C,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACvD,CAAC;YAED,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3D,CAAC;KACF,CAAC;IAEF,uDAAuD;IACvD,MAAM,eAAe,GAAe;QAClC,KAAK,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE;YAC3B,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,IAAI,MAAM,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACjE,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;oBAC3C,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;wBAChB,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;oBACxC,CAAC;yBAAM,IAAI,IAAI,EAAE,OAAO,EAAE,CAAC;wBACzB,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;oBAChD,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,6CAA6C;gBAC/C,CAAC;gBACD,MAAM,IAAI,QAAQ,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC;IAEF,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC3B,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAE5B,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACxC,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"}
@@ -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
@@ -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;AACtF,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"}
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,EAAwC,MAAM,aAAa,CAAC;AACtF,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"}
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"}
@@ -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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gojinko/api-client",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",