@gojinko/api-client 1.0.0 → 1.1.0

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/dist/auth.d.ts CHANGED
@@ -12,7 +12,7 @@ interface ConfigFile {
12
12
  readonly api_key?: string;
13
13
  readonly oauth?: OAuthConfig;
14
14
  }
15
- declare const DEFAULT_BASE_URL = "https://mcp-bff.gojinko.com";
15
+ declare const DEFAULT_BASE_URL = "https://api.gojinko.com";
16
16
  declare const CONFIG_DIR: string;
17
17
  declare const CONFIG_FILE: string;
18
18
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAMA,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,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,UAAU,UAAU;IAClB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;CAC9B;AAED,QAAA,MAAM,gBAAgB,gCAAgC,CAAC;AACvD,QAAA,MAAM,UAAU,QAA4B,CAAC;AAC7C,QAAA,MAAM,WAAW,QAAkC,CAAC;AAEpD;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAiDxF;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;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;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAYrD;AAED,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAMA,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,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,UAAU,UAAU;IAClB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;CAC9B;AAED,QAAA,MAAM,gBAAgB,4BAA4B,CAAC;AACnD,QAAA,MAAM,UAAU,QAA4B,CAAC;AAC7C,QAAA,MAAM,WAAW,QAAkC,CAAC;AAEpD;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAiDxF;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;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;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAYrD;AAED,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC"}
package/dist/auth.js CHANGED
@@ -3,7 +3,7 @@ import { join } from 'node:path';
3
3
  import { homedir } from 'node:os';
4
4
  import { parse as parseYaml } from 'yaml';
5
5
  import { isTokenExpired, refreshAccessToken } from './oauth.js';
6
- const DEFAULT_BASE_URL = 'https://mcp-bff.gojinko.com';
6
+ const DEFAULT_BASE_URL = 'https://api.gojinko.com';
7
7
  const CONFIG_DIR = join(homedir(), '.jinko');
8
8
  const CONFIG_FILE = join(CONFIG_DIR, 'config.yaml');
9
9
  /**
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,YAAiC,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAgD,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAG5F,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAEpE,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;CAC7B;AAQD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAkGzF"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,YAAiC,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAgD,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAI5F,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAEpE,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;CAC7B;AAQD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CA0HzF"}
package/dist/client.js CHANGED
@@ -1,7 +1,9 @@
1
+ import { randomUUID } from 'node:crypto';
1
2
  import createClient from 'openapi-fetch';
2
3
  import { resolveAuth, resolveBaseUrl, writeConfigFile } from './auth.js';
3
4
  import { isTokenExpired, refreshAccessToken } from './oauth.js';
4
5
  import { ApiError, AuthError } from './errors.js';
6
+ import { loadOrCreateCliSession, extractUserIdFromJwt } from './session.js';
5
7
  import { createTools } from './tools.js';
6
8
  /**
7
9
  * Create a configured openapi-fetch client for the Jinko BFF.
@@ -16,6 +18,19 @@ export async function createJinkoClient(options = {}) {
16
18
  }
17
19
  const baseUrl = resolveBaseUrl();
18
20
  const client = createClient({ baseUrl });
21
+ // Persistent CLI session id — stable across invocations within the session TTL.
22
+ // Decoupled from per-request correlation (X-Request-ID, fresh each call).
23
+ // Wrapped in try/catch so session I/O failures never block client creation.
24
+ let sessionId;
25
+ try {
26
+ sessionId = await loadOrCreateCliSession();
27
+ }
28
+ catch {
29
+ sessionId = randomUUID(); // Ephemeral fallback — one id per process
30
+ }
31
+ // Derive a best-effort user id. API-key auth doesn't expose one; OAuth/JWT
32
+ // does via the `sub` claim. Either value is optional on the downstream side.
33
+ const userId = auth.method === 'oauth' ? extractUserIdFromJwt(auth.token) : undefined;
19
34
  // Mutable token state for OAuth refresh — only used when method is oauth
20
35
  let tokenState;
21
36
  if (auth.method === 'oauth') {
@@ -30,6 +45,15 @@ export async function createJinkoClient(options = {}) {
30
45
  headers.set('X-Tenant-ID', 'jinko');
31
46
  headers.set('Content-Type', 'application/json');
32
47
  headers.set('Accept', 'application/json');
48
+ // Observability headers — let downstream services group, filter, and trace
49
+ // a user's CLI flow in Datadog. `X-Session-ID` is stable per CLI session;
50
+ // `X-Request-ID` is unique per HTTP call; `X-User-ID` is set only when
51
+ // OAuth is in use (JWT sub claim).
52
+ headers.set('X-Session-ID', sessionId);
53
+ headers.set('X-Request-ID', randomUUID());
54
+ if (userId) {
55
+ headers.set('X-User-ID', userId);
56
+ }
33
57
  if (auth.method === 'api_key') {
34
58
  headers.set('X-API-Key', auth.token);
35
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  export { createJinkoClient, type ClientOptions, type JinkoClient, type JinkoRawClient } from './client.js';
2
2
  export { type JinkoTools } from './tools.js';
3
3
  export { resolveAuth, readConfigFile, writeConfigFile, clearAuthConfig, CONFIG_DIR, CONFIG_FILE, type AuthMethod, type ResolvedAuth, type OAuthConfig } from './auth.js';
4
+ export { loadOrCreateCliSession, clearCliSession, extractUserIdFromJwt, getSessionFilePath, SESSION_TTL_MS } from './session.js';
4
5
  export { ApiError, AuthError, ValidationError, type ApiErrorDetail } from './errors.js';
5
6
  export { requestDeviceAuthorization, pollForToken, refreshAccessToken, isTokenExpired, OAuthError, OAuthRefreshError, resolveExpiresAt, type OAuthTokens, type DeviceAuthorization, } from './oauth.js';
6
7
  export type { paths, components } from './types/generated.js';
7
- export type { FlightPassengers, ShopPassengers, FlightSearchFilters, FlightPriceConstraints, DateRange, Money, FlightFindRequest, FlightDestinationSearchRequest, FlightSearchRequest, FlightSearchLiveRequest, FlightSearchPriceCheckRequest, Traveler, Contact, TripUpsertTravelers, TripRequest, CheckoutRequest, CheckoutResponse, AncillaryOffer, SelectedAncillary, TripQuotedItem, TripStatusResponse, TravelerSummary, ContactInfo, QuoteSummary, FulfillmentSummary, BookingRef, AncillarySelection, SelectAncillariesRequest, RefundCheckRequest, RefundCommitRequest, } from './types/devplatform.js';
8
+ export type { FlightPassengers, ShopPassengers, FlightSearchFilters, FlightPriceConstraints, DateRange, Money, FlightFindRequest, FlightDestinationSearchRequest, FlightSearchRequest, FlightSearchLiveRequest, FlightSearchPriceCheckRequest, HotelOccupancy, HotelSearchRequest, Traveler, Contact, TripUpsertTravelers, TripRequest, CheckoutRequest, CheckoutResponse, AncillaryOffer, SelectedAncillary, TripQuotedItem, TripStatusResponse, TravelerSummary, ContactInfo, QuoteSummary, FulfillmentSummary, BookingRef, AncillarySelection, SelectAncillariesRequest, BookingLookupRequest, BookingLookupResponse, BookingDetails, BookingContact, BookingTraveler, BookingConfirmation, BookingItem, RefundCheckRequest, RefundCheckResponse, RefundCommitRequest, RefundCommitResponse, RefundStatusRequest, RefundStatusResponse, RefundAmount, ExchangeShopRequest, ExchangeShopResponse, ExchangeShopOffer, ExchangePriceRequest, ExchangePriceResponse, ExchangeCommitRequest, ExchangeCommitResponse, ExchangeStatusRequest, ExchangeStatusResponse, } from './types/devplatform.js';
8
9
  //# 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,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC3G,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACzK,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EACL,0BAA0B,EAC1B,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,mBAAmB,GACzB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC9D,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,SAAS,EACT,KAAK,EACL,iBAAiB,EACjB,8BAA8B,EAC9B,mBAAmB,EACnB,uBAAuB,EACvB,6BAA6B,EAC7B,QAAQ,EACR,OAAO,EACP,mBAAmB,EACnB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACV,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,wBAAwB,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,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACzK,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACjI,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EACL,0BAA0B,EAC1B,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,mBAAmB,GACzB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC9D,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,SAAS,EACT,KAAK,EACL,iBAAiB,EACjB,8BAA8B,EAC9B,mBAAmB,EACnB,uBAAuB,EACvB,6BAA6B,EAC7B,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,OAAO,EACP,mBAAmB,EACnB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACV,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export { createJinkoClient } from './client.js';
2
2
  export { resolveAuth, readConfigFile, writeConfigFile, clearAuthConfig, CONFIG_DIR, CONFIG_FILE } from './auth.js';
3
+ export { loadOrCreateCliSession, clearCliSession, extractUserIdFromJwt, getSessionFilePath, SESSION_TTL_MS } from './session.js';
3
4
  export { ApiError, AuthError, ValidationError } from './errors.js';
4
5
  export { requestDeviceAuthorization, pollForToken, refreshAccessToken, isTokenExpired, OAuthError, OAuthRefreshError, resolveExpiresAt, } from './oauth.js';
5
6
  //# sourceMappingURL=index.js.map
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,EAA6D,MAAM,aAAa,CAAC;AAE3G,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAwD,MAAM,WAAW,CAAC;AACzK,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAuB,MAAM,aAAa,CAAC;AACxF,OAAO,EACL,0BAA0B,EAC1B,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,gBAAgB,GAGjB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA6D,MAAM,aAAa,CAAC;AAE3G,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAwD,MAAM,WAAW,CAAC;AACzK,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACjI,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAuB,MAAM,aAAa,CAAC;AACxF,OAAO,EACL,0BAA0B,EAC1B,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,gBAAgB,GAGjB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * CLI session identity — produces a stable `session_id` across CLI invocations
3
+ * so downstream Datadog logs can group a user's commands into one flow.
4
+ *
5
+ * The session is stored at ~/.jinko/session.json as plain JSON:
6
+ * { "session_id": "<uuid>", "created_at": <epoch-ms>, "last_used_at": <epoch-ms> }
7
+ *
8
+ * Lifecycle:
9
+ * - First command → generate UUID, write file.
10
+ * - Subsequent commands within TTL → reuse (TTL is absolute from `created_at`).
11
+ * - After TTL (1h from creation) or after `jinko logout` → next command generates a new id.
12
+ *
13
+ * The per-invocation `request_id` is generated fresh in `client.ts` for each HTTP call.
14
+ * `user_id` is decoded from the JWT `sub` claim when OAuth is in use.
15
+ */
16
+ export declare const SESSION_TTL_MS: number;
17
+ export declare function getSessionFilePath(): string;
18
+ /**
19
+ * Load the current CLI session, creating or rotating it as needed.
20
+ * Returns a stable id for the duration of the TTL.
21
+ */
22
+ export declare function loadOrCreateCliSession(): Promise<string>;
23
+ /**
24
+ * Clear the CLI session file. Call this from `jinko logout`.
25
+ */
26
+ export declare function clearCliSession(): Promise<void>;
27
+ /**
28
+ * Decode the `sub` claim from a JWT without verifying the signature.
29
+ * Used to surface `user_id` on outbound headers when OAuth is active.
30
+ * Returns undefined for non-JWT tokens (e.g. jnk_* API keys).
31
+ */
32
+ export declare function extractUserIdFromJwt(token: string): string | undefined;
33
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,eAAO,MAAM,cAAc,QAAiB,CAAC;AAQ7C,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AA+BD;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC,CAuB9D;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAMrD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CActE"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * CLI session identity — produces a stable `session_id` across CLI invocations
3
+ * so downstream Datadog logs can group a user's commands into one flow.
4
+ *
5
+ * The session is stored at ~/.jinko/session.json as plain JSON:
6
+ * { "session_id": "<uuid>", "created_at": <epoch-ms>, "last_used_at": <epoch-ms> }
7
+ *
8
+ * Lifecycle:
9
+ * - First command → generate UUID, write file.
10
+ * - Subsequent commands within TTL → reuse (TTL is absolute from `created_at`).
11
+ * - After TTL (1h from creation) or after `jinko logout` → next command generates a new id.
12
+ *
13
+ * The per-invocation `request_id` is generated fresh in `client.ts` for each HTTP call.
14
+ * `user_id` is decoded from the JWT `sub` claim when OAuth is in use.
15
+ */
16
+ import { readFile, writeFile, mkdir, unlink } from 'node:fs/promises';
17
+ import { join } from 'node:path';
18
+ import { homedir } from 'node:os';
19
+ import { randomUUID } from 'node:crypto';
20
+ export const SESSION_TTL_MS = 60 * 60 * 1000; // 1h
21
+ // Path resolution is lazy so tests can override $HOME per-case and every
22
+ // read/write re-resolves against the current environment.
23
+ function getConfigDir() {
24
+ return join(homedir(), '.jinko');
25
+ }
26
+ export function getSessionFilePath() {
27
+ return join(getConfigDir(), 'session.json');
28
+ }
29
+ async function readSessionFile() {
30
+ try {
31
+ const content = await readFile(getSessionFilePath(), 'utf-8');
32
+ if (!content.trim())
33
+ return undefined;
34
+ const parsed = JSON.parse(content);
35
+ if (typeof parsed.session_id === 'string' &&
36
+ typeof parsed.created_at === 'number' &&
37
+ typeof parsed.last_used_at === 'number') {
38
+ return parsed;
39
+ }
40
+ return undefined;
41
+ }
42
+ catch {
43
+ return undefined;
44
+ }
45
+ }
46
+ async function writeSessionFile(file) {
47
+ await mkdir(getConfigDir(), { recursive: true });
48
+ await writeFile(getSessionFilePath(), JSON.stringify(file, null, 2), 'utf-8');
49
+ }
50
+ /**
51
+ * Load the current CLI session, creating or rotating it as needed.
52
+ * Returns a stable id for the duration of the TTL.
53
+ */
54
+ export async function loadOrCreateCliSession() {
55
+ const now = Date.now();
56
+ const existing = await readSessionFile();
57
+ if (existing && now - existing.created_at < SESSION_TTL_MS) {
58
+ // Refresh last_used_at without blocking the caller.
59
+ void writeSessionFile({ ...existing, last_used_at: now }).catch(() => {
60
+ // Best-effort — if the FS is read-only, we still return a valid id.
61
+ });
62
+ return existing.session_id;
63
+ }
64
+ const fresh = {
65
+ session_id: randomUUID(),
66
+ created_at: now,
67
+ last_used_at: now,
68
+ };
69
+ try {
70
+ await writeSessionFile(fresh);
71
+ }
72
+ catch {
73
+ // Best-effort — if the FS is read-only, we still return a valid id.
74
+ }
75
+ return fresh.session_id;
76
+ }
77
+ /**
78
+ * Clear the CLI session file. Call this from `jinko logout`.
79
+ */
80
+ export async function clearCliSession() {
81
+ try {
82
+ await unlink(getSessionFilePath());
83
+ }
84
+ catch {
85
+ // No file to clear — ignore.
86
+ }
87
+ }
88
+ /**
89
+ * Decode the `sub` claim from a JWT without verifying the signature.
90
+ * Used to surface `user_id` on outbound headers when OAuth is active.
91
+ * Returns undefined for non-JWT tokens (e.g. jnk_* API keys).
92
+ */
93
+ export function extractUserIdFromJwt(token) {
94
+ // A JWT is three base64url segments separated by dots.
95
+ const parts = token.split('.');
96
+ if (parts.length !== 3)
97
+ return undefined;
98
+ try {
99
+ // Normalize base64url → base64 and pad.
100
+ const b64 = parts[1].replace(/-/g, '+').replace(/_/g, '/');
101
+ const padded = b64 + '==='.slice((b64.length + 3) % 4);
102
+ const json = Buffer.from(padded, 'base64').toString('utf-8');
103
+ const payload = JSON.parse(json);
104
+ return typeof payload.sub === 'string' ? payload.sub : undefined;
105
+ }
106
+ catch {
107
+ return undefined;
108
+ }
109
+ }
110
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
package/dist/tools.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { JinkoRawClient } from './client.js';
2
- import type { FlightFindRequest, FlightDestinationSearchRequest, FlightSearchRequest, TripRequest, CheckoutResponse, TripStatusResponse, SelectAncillariesRequest, RefundCheckRequest, RefundCommitRequest } from './types/devplatform.js';
2
+ import type { FlightFindRequest, FlightDestinationSearchRequest, FlightSearchRequest, HotelSearchRequest, TripRequest, CheckoutResponse, TripStatusResponse, SelectAncillariesRequest, BookingLookupRequest, BookingLookupResponse, RefundCheckRequest, RefundCheckResponse, RefundCommitRequest, RefundCommitResponse, RefundStatusRequest, RefundStatusResponse, ExchangeShopRequest, ExchangeShopResponse, ExchangePriceRequest, ExchangePriceResponse, ExchangeCommitRequest, ExchangeCommitResponse, ExchangeStatusRequest, ExchangeStatusResponse } from './types/devplatform.js';
3
3
  /**
4
4
  * Tool methods matching MCP/CLI tool names.
5
5
  *
@@ -7,12 +7,18 @@ import type { FlightFindRequest, FlightDestinationSearchRequest, FlightSearchReq
7
7
  * find_destination → findDestination()
8
8
  * flight_search → flightSearch()
9
9
  * flight_calendar → flightCalendar()
10
+ * hotel_search → hotelSearch()
10
11
  * trip → trip()
11
12
  * book → book()
12
13
  * select_ancillaries → selectAncillaries()
13
14
  * get_trip → getTrip()
14
15
  * refund_check → refundCheck()
15
16
  * refund_commit → refundCommit()
17
+ * refund_status → refundStatus()
18
+ * exchange_shop → exchangeShop()
19
+ * exchange_price → exchangePrice()
20
+ * exchange_commit → exchangeCommit()
21
+ * exchange_status → exchangeStatus()
16
22
  *
17
23
  * All cart-sync endpoints use the canonical /api/v1/shop/sync/* paths
18
24
  * introduced in Track 2.1 (jinkoso/mcp-bff#371). The legacy
@@ -27,7 +33,9 @@ export interface JinkoTools {
27
33
  readonly flightSearch: (request: FlightSearchRequest) => Promise<unknown>;
28
34
  /** flight_calendar — cheapest prices across a date range (cached, uses /flights/search). */
29
35
  readonly flightCalendar: (request: FlightFindRequest) => Promise<unknown>;
30
- /** tripcreate trip, add/remove flight items, set travelers. Returns trip_id. */
36
+ /** hotel_searchlive hotel search by destination, dates, occupancy. Returns htl_* offer_ids. */
37
+ readonly hotelSearch: (request: HotelSearchRequest) => Promise<unknown>;
38
+ /** trip — create trip, add/remove items, set travelers. Returns trip_id. */
31
39
  readonly trip: (request: TripRequest) => Promise<unknown>;
32
40
  /** book — schedule checkout: returns checkout_url, items, available ancillaries, total. */
33
41
  readonly book: (tripId: string) => Promise<CheckoutResponse>;
@@ -35,10 +43,22 @@ export interface JinkoTools {
35
43
  readonly selectAncillaries: (request: SelectAncillariesRequest) => Promise<unknown>;
36
44
  /** getTrip — full lifecycle state: cart, quote, fulfillment, bookings. */
37
45
  readonly getTrip: (tripId: string) => Promise<TripStatusResponse>;
46
+ /** lookup_booking — look up a booking by Jinko reference + last name (guest access). */
47
+ readonly lookupBooking: (request: BookingLookupRequest) => Promise<BookingLookupResponse>;
38
48
  /** refund_check — check refund eligibility for a booked flight. */
39
- readonly refundCheck: (request: RefundCheckRequest) => Promise<unknown>;
49
+ readonly refundCheck: (request: RefundCheckRequest) => Promise<RefundCheckResponse>;
40
50
  /** refund_commit — initiate a refund for a booked flight. */
41
- readonly refundCommit: (request: RefundCommitRequest) => Promise<unknown>;
51
+ readonly refundCommit: (request: RefundCommitRequest) => Promise<RefundCommitResponse>;
52
+ /** refund_status — poll the current status of a previously committed refund. */
53
+ readonly refundStatus: (request: RefundStatusRequest) => Promise<RefundStatusResponse>;
54
+ /** exchange_shop — shop for flight exchange alternatives. */
55
+ readonly exchangeShop: (request: ExchangeShopRequest) => Promise<ExchangeShopResponse>;
56
+ /** exchange_price — price a specific exchange offer. */
57
+ readonly exchangePrice: (request: ExchangePriceRequest) => Promise<ExchangePriceResponse>;
58
+ /** exchange_commit — execute a flight exchange. */
59
+ readonly exchangeCommit: (request: ExchangeCommitRequest) => Promise<ExchangeCommitResponse>;
60
+ /** exchange_status — poll the status of an in-flight exchange. */
61
+ readonly exchangeStatus: (request: ExchangeStatusRequest) => Promise<ExchangeStatusResponse>;
42
62
  }
43
63
  export declare function createTools(raw: JinkoRawClient): JinkoTools;
44
64
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EACV,iBAAiB,EACjB,8BAA8B,EAC9B,mBAAmB,EACnB,WAAW,EAEX,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,UAAU;IACzB,gEAAgE;IAChE,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtE,8EAA8E;IAC9E,QAAQ,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,8BAA8B,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAExF,4FAA4F;IAC5F,QAAQ,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1E,4FAA4F;IAC5F,QAAQ,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1E,mFAAmF;IACnF,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1D,2FAA2F;IAC3F,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE7D,yEAAyE;IACzE,QAAQ,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpF,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAElE,mEAAmE;IACnE,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAExE,6DAA6D;IAC7D,QAAQ,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3E;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,cAAc,GAAG,UAAU,CA2B3D"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/dist/tools.js CHANGED
@@ -8,6 +8,7 @@ export function createTools(raw) {
8
8
  findDestination: (request) => post('/api/v1/flights/destination-search', request),
9
9
  flightSearch: (request) => post('/api/v1/flights/shop', request),
10
10
  flightCalendar: (request) => post('/api/v1/flights/search', request),
11
+ hotelSearch: (request) => post('/api/v1/hotels/shop', request),
11
12
  trip: (request) => post('/api/v1/shop/sync', request),
12
13
  book: async (tripId) => {
13
14
  const body = { trip_id: tripId };
@@ -21,8 +22,17 @@ export function createTools(raw) {
21
22
  });
22
23
  return response.data;
23
24
  },
24
- refundCheck: (request) => post('/api/v1/flights/refund-check', request),
25
- refundCommit: (request) => post('/api/v1/flights/refund-commit', request),
25
+ lookupBooking: async (request) => {
26
+ const data = await post('/api/v1/bookings/lookup', request);
27
+ return data;
28
+ },
29
+ refundCheck: async (request) => (await post('/api/v1/flights/refund-check', request)),
30
+ refundCommit: async (request) => (await post('/api/v1/flights/refund-commit', request)),
31
+ refundStatus: async (request) => (await post('/api/v1/flights/refund-status', request)),
32
+ exchangeShop: async (request) => (await post('/api/v1/flights/exchange-shop', request)),
33
+ exchangePrice: async (request) => (await post('/api/v1/flights/exchange-price', request)),
34
+ exchangeCommit: async (request) => (await post('/api/v1/flights/exchange-commit', request)),
35
+ exchangeStatus: async (request) => (await post('/api/v1/flights/exchange-status', request)),
26
36
  };
27
37
  }
28
38
  //# sourceMappingURL=tools.js.map
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAgEA,MAAM,UAAU,WAAW,CAAC,GAAmB;IAC7C,KAAK,UAAU,IAAI,CAAC,IAAY,EAAE,IAAa;QAC7C,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAa,EAAE,EAAE,IAAI,EAAW,CAAC,CAAC;QAClE,OAAQ,QAA+B,CAAC,IAAI,CAAC;IAC/C,CAAC;IAED,OAAO;QACL,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC;QAChE,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,oCAAoC,EAAE,OAAO,CAAC;QACjF,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,OAAO,CAAC;QAChE,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC;QACpE,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC;QACrD,IAAI,EAAE,KAAK,EAAE,MAAc,EAAE,EAAE;YAC7B,MAAM,IAAI,GAAoB,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAClD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;YAC5D,OAAO,IAAwB,CAAC;QAClC,CAAC;QACD,iBAAiB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,OAAO,CAAC;QAC9E,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,EAAE;YAChC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,wBAAiC,EAAE;gBAChE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;aACxB,CAAC,CAAC;YACZ,OAAQ,QAA0C,CAAC,IAA0B,CAAC;QAChF,CAAC;QACD,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,8BAA8B,EAAE,OAAO,CAAC;QACvE,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,OAAO,CAAC;KAC1E,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AA0GA,MAAM,UAAU,WAAW,CAAC,GAAmB;IAC7C,KAAK,UAAU,IAAI,CAAC,IAAY,EAAE,IAAa;QAC7C,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAa,EAAE,EAAE,IAAI,EAAW,CAAC,CAAC;QAClE,OAAQ,QAA+B,CAAC,IAAI,CAAC;IAC/C,CAAC;IAED,OAAO;QACL,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC;QAChE,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,oCAAoC,EAAE,OAAO,CAAC;QACjF,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,OAAO,CAAC;QAChE,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC;QACpE,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC;QAC9D,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC;QACrD,IAAI,EAAE,KAAK,EAAE,MAAc,EAAE,EAAE;YAC7B,MAAM,IAAI,GAAoB,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAClD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;YAC5D,OAAO,IAAwB,CAAC;QAClC,CAAC;QACD,iBAAiB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,OAAO,CAAC;QAC9E,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,EAAE;YAChC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,wBAAiC,EAAE;gBAChE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;aACxB,CAAC,CAAC;YACZ,OAAQ,QAA0C,CAAC,IAA0B,CAAC;QAChF,CAAC;QACD,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;YAC5D,OAAO,IAA6B,CAAC;QACvC,CAAC;QACD,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAC7B,CAAC,MAAM,IAAI,CAAC,8BAA8B,EAAE,OAAO,CAAC,CAAwB;QAC9E,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAC9B,CAAC,MAAM,IAAI,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAyB;QAChF,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAC9B,CAAC,MAAM,IAAI,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAyB;QAChF,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAC9B,CAAC,MAAM,IAAI,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAyB;QAChF,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAC/B,CAAC,MAAM,IAAI,CAAC,gCAAgC,EAAE,OAAO,CAAC,CAA0B;QAClF,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAChC,CAAC,MAAM,IAAI,CAAC,iCAAiC,EAAE,OAAO,CAAC,CAA2B;QACpF,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAChC,CAAC,MAAM,IAAI,CAAC,iCAAiC,EAAE,OAAO,CAAC,CAA2B;KACrF,CAAC;AACJ,CAAC"}
@@ -39,6 +39,7 @@ export interface StayDaysRange {
39
39
  export interface Money {
40
40
  readonly amount: number;
41
41
  readonly currency: string;
42
+ readonly decimal_places?: number;
42
43
  }
43
44
  export interface FlightSearchFilters {
44
45
  readonly locations: {
@@ -92,6 +93,8 @@ export interface FlightSearchLiveRequest {
92
93
  readonly cabin_class?: string;
93
94
  readonly direct_only?: boolean;
94
95
  readonly max_price?: number;
96
+ readonly include_carriers?: readonly string[];
97
+ readonly exclude_carriers?: readonly string[];
95
98
  readonly passengers?: ShopPassengers;
96
99
  readonly currency?: string;
97
100
  readonly locale?: string;
@@ -103,6 +106,35 @@ export interface FlightSearchPriceCheckRequest {
103
106
  readonly locale?: string;
104
107
  }
105
108
  export type FlightSearchRequest = FlightSearchLiveRequest | FlightSearchPriceCheckRequest;
109
+ export interface HotelOccupancy {
110
+ readonly adults: number;
111
+ readonly children_ages?: readonly number[];
112
+ }
113
+ export interface HotelSearchRequest {
114
+ readonly query?: string;
115
+ readonly city_name?: string;
116
+ readonly country_code?: string;
117
+ readonly latitude?: number;
118
+ readonly longitude?: number;
119
+ readonly radius_km?: number;
120
+ readonly place_id?: string;
121
+ readonly hotel_ids?: readonly string[];
122
+ readonly checkin: string;
123
+ readonly checkout: string;
124
+ readonly occupancies?: readonly HotelOccupancy[];
125
+ readonly adults?: number;
126
+ readonly children?: readonly number[];
127
+ readonly rooms?: number;
128
+ readonly currency?: string;
129
+ readonly guest_nationality?: string;
130
+ readonly min_rating?: number;
131
+ readonly star_rating?: number;
132
+ readonly min_reviews?: number;
133
+ readonly hotel_type_ids?: readonly string[];
134
+ readonly chain_ids?: readonly string[];
135
+ readonly facility_ids?: readonly string[];
136
+ readonly max_results?: number;
137
+ }
106
138
  export interface Traveler {
107
139
  readonly first_name: string;
108
140
  readonly last_name: string;
@@ -230,13 +262,154 @@ export interface SelectAncillariesRequest {
230
262
  readonly item_id: string;
231
263
  readonly selections: readonly AncillarySelection[];
232
264
  }
233
- export interface RefundCheckRequest {
265
+ export interface BookingLookupRequest {
266
+ readonly booking_ref: string;
267
+ readonly last_name: string;
268
+ }
269
+ export interface BookingContact {
270
+ readonly first_name?: string;
271
+ readonly last_name?: string;
272
+ readonly email?: string;
273
+ readonly phone_number?: string;
274
+ }
275
+ export interface BookingTraveler {
276
+ readonly first_name?: string;
277
+ readonly last_name?: string;
278
+ readonly passenger_type?: string;
279
+ }
280
+ export interface BookingConfirmation {
281
+ readonly confirmation_number?: string;
282
+ readonly product_summary?: string;
283
+ readonly total_paid?: Money;
284
+ }
285
+ export interface BookingItem {
286
+ readonly domain: string;
287
+ readonly status: string;
288
+ readonly confirmation?: BookingConfirmation;
289
+ }
290
+ export interface BookingDetails {
234
291
  readonly booking_reference: string;
235
- readonly pnr: string;
292
+ readonly status: string;
293
+ readonly customer_contact?: BookingContact;
294
+ readonly travelers?: readonly BookingTraveler[];
295
+ readonly items: readonly BookingItem[];
296
+ readonly created_at: string;
297
+ }
298
+ export interface BookingLookupResponse {
299
+ readonly booking: BookingDetails;
300
+ }
301
+ export interface RefundCheckRequest {
302
+ readonly order_id?: string;
303
+ readonly ticket_numbers?: readonly string[];
304
+ readonly provider?: string;
305
+ readonly booking_ref?: string;
306
+ readonly last_name?: string;
236
307
  }
237
308
  export interface RefundCommitRequest {
238
- readonly booking_reference: string;
239
- readonly pnr: string;
240
- readonly reason?: string;
309
+ readonly order_id?: string;
310
+ readonly ticket_numbers?: readonly string[];
311
+ readonly provider?: string;
312
+ readonly booking_ref?: string;
313
+ readonly last_name?: string;
314
+ }
315
+ export interface RefundStatusRequest {
316
+ readonly order_id?: string;
317
+ readonly refund_reference?: string;
318
+ readonly provider?: string;
319
+ readonly booking_ref?: string;
320
+ readonly last_name?: string;
321
+ }
322
+ export interface RefundAmount {
323
+ readonly value: number;
324
+ readonly currency: string;
325
+ readonly decimal_places: number;
326
+ }
327
+ export interface RefundCheckResponse {
328
+ readonly is_refundable: boolean;
329
+ readonly is_automatable: boolean;
330
+ readonly support_level: string;
331
+ readonly manual_reason?: string;
332
+ readonly refund_amount?: RefundAmount;
333
+ readonly penalty_amount?: RefundAmount;
334
+ readonly total_paid?: RefundAmount;
335
+ readonly expires_at?: string;
336
+ readonly warnings?: readonly string[];
337
+ }
338
+ export interface RefundCommitResponse {
339
+ readonly refund_status: string;
340
+ readonly confirmed_refund_amount?: RefundAmount;
341
+ readonly refund_reference?: string;
342
+ readonly warnings?: readonly string[];
343
+ }
344
+ export interface RefundStatusResponse {
345
+ readonly refund_status: string;
346
+ readonly provider_status?: string;
347
+ readonly refund_amount?: RefundAmount;
348
+ readonly refund_reference?: string;
349
+ readonly warnings?: readonly string[];
350
+ }
351
+ export interface ExchangeShopRequest {
352
+ readonly order_id?: string;
353
+ readonly ticket_numbers?: readonly string[];
354
+ readonly segments_to_exchange?: readonly unknown[];
355
+ readonly preferred_departure_date?: string;
356
+ readonly booking_ref?: string;
357
+ readonly last_name?: string;
358
+ }
359
+ export interface ExchangeShopOffer {
360
+ readonly offer_id: string;
361
+ readonly description?: string;
362
+ readonly metadata?: Readonly<Record<string, unknown>>;
363
+ }
364
+ export interface ExchangeShopResponse {
365
+ readonly support_level: string;
366
+ readonly offers?: readonly ExchangeShopOffer[];
367
+ readonly warnings?: readonly string[];
368
+ }
369
+ export interface ExchangePriceRequest {
370
+ readonly offer_id: string;
371
+ readonly order_id?: string;
372
+ readonly ticket_numbers?: readonly string[];
373
+ readonly booking_ref?: string;
374
+ readonly last_name?: string;
375
+ }
376
+ export interface ExchangePriceResponse {
377
+ readonly payment_outcome?: string;
378
+ readonly fare_difference?: RefundAmount;
379
+ readonly penalty_amount?: RefundAmount;
380
+ readonly total_due?: RefundAmount;
381
+ readonly total_refund?: RefundAmount;
382
+ readonly session_reference?: string;
383
+ readonly expires_at?: string;
384
+ readonly warnings?: readonly string[];
385
+ }
386
+ export interface ExchangeCommitRequest {
387
+ readonly offer_id: string;
388
+ readonly order_id?: string;
389
+ readonly session_reference: string;
390
+ readonly ticket_numbers?: readonly string[];
391
+ readonly booking_ref?: string;
392
+ readonly last_name?: string;
393
+ }
394
+ export interface ExchangeCommitResponse {
395
+ readonly exchange_reference?: string;
396
+ readonly new_order_id?: string;
397
+ readonly new_ticket_numbers?: readonly string[];
398
+ readonly original_ticket_status?: string;
399
+ readonly payment_outcome?: string;
400
+ readonly status?: string;
401
+ readonly warnings?: readonly string[];
402
+ }
403
+ export interface ExchangeStatusRequest {
404
+ readonly order_id?: string;
405
+ readonly provider?: string;
406
+ readonly booking_ref?: string;
407
+ readonly last_name?: string;
408
+ }
409
+ export interface ExchangeStatusResponse {
410
+ readonly status?: string;
411
+ readonly new_ticket_numbers?: readonly string[];
412
+ readonly confirmed_payment_outcome?: string;
413
+ readonly warnings?: readonly string[];
241
414
  }
242
415
  //# sourceMappingURL=devplatform.d.ts.map