@voyantjs/connect-sdk 0.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/LICENSE ADDED
@@ -0,0 +1,109 @@
1
+ # Functional Source License, Version 1.1, Apache 2.0 Future License
2
+
3
+ ## Abbreviation
4
+
5
+ FSL-1.1-Apache-2.0
6
+
7
+ ## Notice
8
+
9
+ Copyright 2026 PixelMakers Studio SRL
10
+
11
+ ## Terms and Conditions
12
+
13
+ ### Licensor ("We")
14
+
15
+ The party offering the Software under these Terms and Conditions.
16
+
17
+ ### The Software
18
+
19
+ The "Software" is each version of the software that we make available under
20
+ these Terms and Conditions, as indicated by our inclusion of these Terms and
21
+ Conditions with the Software.
22
+
23
+ ### License Grant
24
+
25
+ Subject to your compliance with this License Grant and the Patents,
26
+ Redistribution and Trademark clauses below, we hereby grant you the right to
27
+ use, copy, modify, create derivative works, publicly perform, publicly
28
+ display and redistribute the Software for any Permitted Purpose identified
29
+ below.
30
+
31
+ ### Permitted Purpose
32
+
33
+ A Permitted Purpose is any purpose other than a Competing Use. A Competing
34
+ Use means making the Software available to others in a commercial product or
35
+ service that:
36
+
37
+ 1. substitutes for the Software;
38
+
39
+ 2. substitutes for any other product or service we offer using the Software
40
+ that exists as of the date we make the Software available; or
41
+
42
+ 3. offers the same or substantially similar functionality as the Software.
43
+
44
+ Permitted Purposes specifically include using the Software:
45
+
46
+ 1. for your internal use and access;
47
+
48
+ 2. for non-commercial education;
49
+
50
+ 3. for non-commercial research; and
51
+
52
+ 4. in connection with professional services that you provide to a licensee
53
+ using the Software in accordance with these Terms and Conditions.
54
+
55
+ ### Patents
56
+
57
+ To the extent your use for a Permitted Purpose would necessarily infringe
58
+ our patents, the license grant above includes a license under our patents.
59
+ If you make a claim against any party that the Software infringes or
60
+ contributes to the infringement of any patent, then your patent license to
61
+ the Software ends immediately.
62
+
63
+ ### Redistribution
64
+
65
+ The Terms and Conditions apply to all copies, modifications and derivatives
66
+ of the Software.
67
+
68
+ If you redistribute any copies, modifications or derivatives of the
69
+ Software, you must include a copy of or a link to these Terms and Conditions
70
+ and not remove any copyright notices provided in or with the Software.
71
+
72
+ ### Disclaimer
73
+
74
+ THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTIES OF ANY KIND, EXPRESS
75
+ OR IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES OF FITNESS FOR A
76
+ PARTICULAR PURPOSE, MERCHANTABILITY, TITLE OR NON-INFRINGEMENT.
77
+
78
+ IN NO EVENT WILL WE HAVE ANY LIABILITY TO YOU ARISING OUT OF OR RELATED TO
79
+ THE SOFTWARE, INCLUDING INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
80
+ DAMAGES, EVEN IF WE HAVE BEEN INFORMED OF THEIR POSSIBILITY IN ADVANCE.
81
+
82
+ ### Trademarks
83
+
84
+ Except for displaying the License Details and identifying us as the origin
85
+ of the Software, you have no right under these Terms and Conditions to use
86
+ our trademarks, trade names, service marks or product names.
87
+
88
+ ---
89
+
90
+ ## Grant of Future License
91
+
92
+ We hereby irrevocably grant you an additional license to use the Software
93
+ under the Apache License, Version 2.0 that is effective on the second
94
+ anniversary of the date we make the Software available. On or after that
95
+ date, you may use the Software under the Apache License, Version 2.0, in
96
+ which case the following will apply:
97
+
98
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not
99
+ use this file except in compliance with the License.
100
+
101
+ You may obtain a copy of the License at
102
+
103
+ http://www.apache.org/licenses/LICENSE-2.0
104
+
105
+ Unless required by applicable law or agreed to in writing, software
106
+ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
107
+ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
108
+ License for the specific language governing permissions and limitations
109
+ under the License.
package/README.md ADDED
@@ -0,0 +1,127 @@
1
+ # `@voyantjs/connect-sdk`
2
+
3
+ Public TypeScript client for Voyant Connect APIs — the operator/connection
4
+ control plane plus the Connect-normalized data plane for products,
5
+ availability, bookings, suppliers, options, cruises, stays, accommodations,
6
+ and flights.
7
+
8
+ ## Scope
9
+
10
+ - operators, connections, links, grants, oauth-clients, oauth tokens
11
+ - connector providers and per-operator provider registrations
12
+ - webhook subscriptions, deliveries, test events, and replays
13
+ - audit logs, usage, invite tokens, custom connection requests
14
+ - Connect-normalized data plane: `products`, `options`, `suppliers`,
15
+ `availability`, `bookings`, `cruises`, `stays`, `accommodations`, `health`
16
+ - cross-connection list methods (`products.list`, `suppliers.list`,
17
+ `bookings.listAll`) with `connectionId` / `providerKey` filters
18
+ - flights: search, price, book, manage orders, seats, ancillaries, exchanges,
19
+ refunds, check-in, SSRs
20
+
21
+ ## Install
22
+
23
+ ```sh
24
+ pnpm add @voyantjs/connect-sdk
25
+ ```
26
+
27
+ ## Usage
28
+
29
+ ```ts
30
+ import { createVoyantConnectClient } from "@voyantjs/connect-sdk";
31
+
32
+ const client = createVoyantConnectClient({
33
+ apiKey: process.env.VOYANT_API_KEY!,
34
+ operatorId: "op_123", // default operator for org-scoped reads
35
+ });
36
+
37
+ // Cross-connection — list every product in the operator's catalog,
38
+ // optionally filtered by provider or connection.
39
+ const everything = await client.products.list();
40
+ const byProvider = await client.products.list({ providerKey: "ventrata" });
41
+
42
+ // Per-connection — Connect-normalized reads.
43
+ const productsOnConn = await client.products.listOnConnection("conn_456");
44
+ const options = await client.products.listOptions("conn_456", "prod_789");
45
+
46
+ // Bookings (per connection) — `idempotencyKey` becomes `Idempotency-Key`.
47
+ const booking = await client.bookings.create(
48
+ "conn_456",
49
+ {
50
+ productId: "prod_789",
51
+ optionId: "opt_1",
52
+ unitItems: [{ unitId: "unit_a", quantity: 2 }],
53
+ },
54
+ { idempotencyKey: "order-2026-04-25-001" },
55
+ );
56
+ ```
57
+
58
+ For M2M flows, exchange OAuth client credentials for a short-lived bearer
59
+ token first:
60
+
61
+ ```ts
62
+ import { createVoyantConnectClient } from "@voyantjs/connect-sdk";
63
+
64
+ const tokenClient = createVoyantConnectClient({ apiKey: "unused", authScheme: null });
65
+ const { access_token } = await tokenClient.oauth.issueToken({
66
+ clientId: process.env.VOYANT_CONNECT_CLIENT_ID!,
67
+ clientSecret: process.env.VOYANT_CONNECT_CLIENT_SECRET!,
68
+ scope: "operators:read connections:read bookings:read",
69
+ });
70
+
71
+ const client = createVoyantConnectClient({ apiKey: access_token });
72
+ const me = await client.grants.listReceived();
73
+ void me;
74
+ ```
75
+
76
+ ## Shape
77
+
78
+ Root groups on `VoyantConnectClient`:
79
+
80
+ **Control plane**
81
+ - `oauth`
82
+ - `operators`
83
+ - `connectorProviders`
84
+ - `connections`
85
+ - `links`
86
+ - `oauthClients`
87
+ - `grants`
88
+ - `auditLogs`
89
+ - `inviteTokens`
90
+ - `webhookSubscriptions`
91
+ - `customConnectionRequests`
92
+
93
+ **Data plane (Connect-normalized)**
94
+ - `products` — cross-connection `list` / `get` plus per-connection
95
+ `listOnConnection`, `getOnConnection`, `listOptions`, `listExtras`
96
+ - `options` — `listUnits`, `listExtraConfigs`
97
+ - `suppliers` — cross-connection `list` plus `listOnConnection`
98
+ - `availability` — `list`, `calendar`
99
+ - `bookings` — cross-connection `listAll` plus per-connection `list`,
100
+ `get`, `create`, `confirm`, `cancel`, `listActivities`
101
+ - `cruises` / `cruiseBookings` — cruise catalog, search, lock, inquiry, and
102
+ booking lifecycle routes
103
+ - `health` — `get`
104
+
105
+ **Flights**
106
+ - `flights`
107
+
108
+ ## Notes
109
+
110
+ - default base URL is `https://api.voyantjs.com`; the SDK targets the
111
+ `/connect/v1/...` path namespace under it
112
+ - request auth defaults to `authorization: Bearer <apiKey>`
113
+ - response envelopes of the form `{ data: ... }` are unwrapped by default;
114
+ paginated and per-connection Connect reads return their raw shape
115
+ - OAuth M2M tokens carry scopes (e.g. `operators:read`, `connections:write`,
116
+ `bookings:write`, `flights:read`); requests fail with `403` if the token
117
+ does not include the required scope
118
+ - `bookings.create` accepts an `idempotencyKey` option that is sent as
119
+ the `Idempotency-Key` header
120
+ - cross-connection `products.list` / `suppliers.list` / `bookings.listAll`
121
+ use the client-level `operatorId` as default; pass `{ operatorId }` to
122
+ override per call. Both `connectionId` and `providerKey` filters accept
123
+ scalar or array values.
124
+ - `flights.searchStream` returns the raw `Response` so callers can stream the
125
+ Server-Sent Events with whichever parser they prefer
126
+
127
+ For repo-level context, see [../../docs/connect.md](../../docs/connect.md).
@@ -0,0 +1,374 @@
1
+ import { VoyantTransport } from "@voyant-sdk/sdk-core";
2
+ import type { JsonObject } from "@voyant-sdk/sdk-core";
3
+ import type { AuditLogPage, AuditLogQuery, AvailabilityCalendarQueryInput, CancelBookingInput, CabinPricing, ConfirmBookingInput, CruiseBooking, CruiseConfirmInput, CruiseInquireInput, CruiseLockSelectionInput, CruiseOffer, CruiseQuote, CruiseSearchQuery, CruiseSearchResponse, ListAccommodationsQuery, ListCruisesQuery, ListItineraryDay, ListSailingPricingQuery, ListSailingsQuery, OperatorAccommodationDetail, OperatorAccommodationSummary, OperatorCruiseDetail, OperatorCruiseSummary, OperatorSailingDetail, OperatorSailingSummary, RatePlan, RoomType, StayBooking, StayConfirmInput, StayHold, StayOffer, StaySearchQuery, StaySearchResponse, ConnectAvailabilityQuery, ConnectChannelHealth, ConnectListBookingsQuery, ConnectOptionExtraConfigSummary, ConnectOptionSummary, ConnectProductExtraSummary, ConnectUnitSummary, ConnectionScopeFilter, ConnectionSummary, ConnectorProviderApplicationSummary, ConnectorProviderSummary, CreateBookingInput, CreateConnectionInput, CreateCustomConnectionRequestInput, CreateInviteTokenInput, CreateLinkInput, CreateOAuthClientInput, CreateOperatorGrantInput, CreateOperatorInput, CreateWebhookSubscriptionInput, CustomConnectionRequestSummary, FlightAncillaryInput, FlightBookInput, FlightCheckInInput, FlightExchangeInput, FlightMultiSearchInput, FlightPriceInput, FlightRefundInput, FlightSearchInput, FlightSeatSelectionInput, FlightSsrInput, GrantSummary, InviteTokenSummary, IssueTokenInput, LinkCapability, LinkSummary, ListBookingActivitiesQuery, ListGrantsQuery, ListHealthEventsQuery, ListLinksQuery, ListOperatorBookingsQuery, ListProjectionSyncsQuery, ListRequestLogsQuery, ListWebhookDeliveriesQuery, ListWebhookEventsQuery, OAuthClientSummary, OAuthTokenResponse, OperatorBookingSummary, OperatorProductDetail, OperatorProductSummary, OperatorProviderRegistration, OperatorScope, OperatorSummary, OperatorSupplierSummary, ProjectionSyncRunReceipt, PublicInviteInfo, RotatedWebhookSecret, SearchDocument, SearchDocumentQuery, SearchProjectionChangePage, SearchProjectionChangeQuery, UpdateConnectionInput, UpdateConnectorProviderInput, UpdateLinkCapabilityInput, UpdateLinkInput, UpdateOperatorGrantInput, UpdateOperatorInput, UpdateTuiProviderSettingsInput, UpdateWebhookSubscriptionInput, UpsertProviderRegistrationInput, UsageQuery, UsageSummary, VoyantConnectClientOptions, WebhookDeliveryReplayReceipt, WebhookDeliverySummary, WebhookSubscriptionSummary, WebhookSubscriptionTestReceipt } from "./types.js";
4
+ export declare class VoyantConnectClient {
5
+ readonly transport: VoyantTransport;
6
+ readonly defaultOperatorId: string | null;
7
+ constructor(options: VoyantConnectClientOptions);
8
+ private resolveOperatorId;
9
+ readonly oauth: {
10
+ issueToken: (input: IssueTokenInput) => Promise<OAuthTokenResponse>;
11
+ };
12
+ readonly operators: {
13
+ list: () => Promise<OperatorSummary[]>;
14
+ get: (operatorId: string) => Promise<OperatorSummary>;
15
+ create: (input: CreateOperatorInput) => Promise<OperatorSummary>;
16
+ update: (operatorId: string, input: UpdateOperatorInput) => Promise<OperatorSummary>;
17
+ deactivate: (operatorId: string) => Promise<OperatorSummary>;
18
+ getUsage: (operatorId: string, query?: UsageQuery) => Promise<UsageSummary>;
19
+ listSearchDocuments: (operatorId: string, query?: SearchDocumentQuery) => Promise<SearchDocument[]>;
20
+ listSearchProjectionChanges: (operatorId: string, query?: SearchProjectionChangeQuery) => Promise<SearchProjectionChangePage>;
21
+ };
22
+ readonly connectorProviders: {
23
+ list: () => Promise<ConnectorProviderSummary[]>;
24
+ update: (providerKey: string, input: UpdateConnectorProviderInput) => Promise<ConnectorProviderSummary>;
25
+ listApplications: (providerKey: string) => Promise<ConnectorProviderApplicationSummary[]>;
26
+ listRegistrations: (operatorId: string) => Promise<OperatorProviderRegistration[]>;
27
+ getRegistration: (operatorId: string, registrationId: string) => Promise<OperatorProviderRegistration>;
28
+ upsertRegistration: (operatorId: string, input: UpsertProviderRegistrationInput) => Promise<OperatorProviderRegistration>;
29
+ updateRegistration: (operatorId: string, registrationId: string, input: UpsertProviderRegistrationInput) => Promise<OperatorProviderRegistration>;
30
+ updateTuiSettings: (operatorId: string, registrationId: string, input: UpdateTuiProviderSettingsInput) => Promise<OperatorProviderRegistration>;
31
+ revalidateRegistration: (operatorId: string, registrationId: string) => Promise<OperatorProviderRegistration>;
32
+ };
33
+ readonly connections: {
34
+ list: (operatorId: string) => Promise<ConnectionSummary[]>;
35
+ get: (operatorId: string, connectionId: string) => Promise<ConnectionSummary>;
36
+ create: (operatorId: string, input: CreateConnectionInput) => Promise<ConnectionSummary>;
37
+ update: (operatorId: string, connectionId: string, input: UpdateConnectionInput) => Promise<ConnectionSummary>;
38
+ delete: (operatorId: string, connectionId: string) => Promise<ConnectionSummary>;
39
+ rotateWebhookSecret: (operatorId: string, connectionId: string) => Promise<RotatedWebhookSecret>;
40
+ listProjectionSyncs: (operatorId: string, connectionId: string, query?: ListProjectionSyncsQuery) => Promise<JsonObject[]>;
41
+ triggerProjectionSync: (operatorId: string, connectionId: string) => Promise<ProjectionSyncRunReceipt>;
42
+ listWebhookEvents: (operatorId: string, connectionId: string, query?: ListWebhookEventsQuery) => Promise<JsonObject[]>;
43
+ listHealthEvents: (operatorId: string, connectionId: string, query?: ListHealthEventsQuery) => Promise<JsonObject[]>;
44
+ listRequestLogs: (operatorId: string, connectionId: string, query?: ListRequestLogsQuery) => Promise<JsonObject[]>;
45
+ };
46
+ readonly links: {
47
+ list: (operatorId: string, query?: ListLinksQuery) => Promise<LinkSummary[]>;
48
+ get: (operatorId: string, linkId: string) => Promise<LinkSummary>;
49
+ create: (operatorId: string, input: CreateLinkInput) => Promise<LinkSummary>;
50
+ update: (operatorId: string, linkId: string, input: UpdateLinkInput) => Promise<LinkSummary>;
51
+ updateCapability: (operatorId: string, linkId: string, capabilityId: string, input: UpdateLinkCapabilityInput) => Promise<LinkCapability>;
52
+ };
53
+ readonly oauthClients: {
54
+ list: (operatorId: string) => Promise<OAuthClientSummary[]>;
55
+ create: (operatorId: string, input: CreateOAuthClientInput) => Promise<OAuthClientSummary>;
56
+ revoke: (operatorId: string, clientId: string) => Promise<OAuthClientSummary>;
57
+ };
58
+ readonly grants: {
59
+ listForOperator: (operatorId: string, query?: ListGrantsQuery) => Promise<GrantSummary[]>;
60
+ create: (operatorId: string, input: CreateOperatorGrantInput) => Promise<GrantSummary>;
61
+ update: (operatorId: string, grantId: string, input: UpdateOperatorGrantInput) => Promise<GrantSummary>;
62
+ revoke: (operatorId: string, grantId: string) => Promise<GrantSummary>;
63
+ listReceived: (query?: ListGrantsQuery) => Promise<GrantSummary[]>;
64
+ get: (grantId: string) => Promise<GrantSummary>;
65
+ };
66
+ readonly auditLogs: {
67
+ list: (query?: AuditLogQuery) => Promise<AuditLogPage>;
68
+ };
69
+ readonly inviteTokens: {
70
+ list: (operatorId: string) => Promise<InviteTokenSummary[]>;
71
+ create: (operatorId: string, input: CreateInviteTokenInput) => Promise<InviteTokenSummary>;
72
+ revoke: (operatorId: string, inviteId: string) => Promise<InviteTokenSummary>;
73
+ lookup: (token: string) => Promise<PublicInviteInfo>;
74
+ redeem: (token: string) => Promise<GrantSummary>;
75
+ };
76
+ readonly webhookSubscriptions: {
77
+ list: (operatorId: string) => Promise<WebhookSubscriptionSummary[]>;
78
+ create: (operatorId: string, input: CreateWebhookSubscriptionInput) => Promise<WebhookSubscriptionSummary>;
79
+ update: (operatorId: string, subscriptionId: string, input: UpdateWebhookSubscriptionInput) => Promise<WebhookSubscriptionSummary>;
80
+ delete: (operatorId: string, subscriptionId: string) => Promise<WebhookSubscriptionSummary>;
81
+ listDeliveries: (operatorId: string, subscriptionId: string, query?: ListWebhookDeliveriesQuery) => Promise<WebhookDeliverySummary[]>;
82
+ sendTestEvent: (operatorId: string, subscriptionId: string) => Promise<WebhookSubscriptionTestReceipt>;
83
+ replayDelivery: (operatorId: string, subscriptionId: string, deliveryId: string) => Promise<WebhookDeliveryReplayReceipt>;
84
+ };
85
+ readonly customConnectionRequests: {
86
+ list: (organizationId: string) => Promise<CustomConnectionRequestSummary[]>;
87
+ create: (organizationId: string, input: CreateCustomConnectionRequestInput) => Promise<CustomConnectionRequestSummary>;
88
+ };
89
+ readonly products: {
90
+ /**
91
+ * List products across all connections in the operator's catalog.
92
+ * Optionally filter by `connectionId` and/or `providerKey` (single value
93
+ * or array). Falls back to the client's default `operatorId` when omitted.
94
+ */
95
+ list: (filter?: ConnectionScopeFilter & OperatorScope) => Promise<OperatorProductSummary[]>;
96
+ /** Look up a single product in the operator's catalog. */
97
+ get: (productId: string, scope?: OperatorScope) => Promise<OperatorProductDetail>;
98
+ /** Per-connection list (Connect-normalized). Optional `supplierId` filter. */
99
+ listOnConnection: (connectionId: string, options?: {
100
+ supplierId?: string;
101
+ }) => Promise<JsonObject[]>;
102
+ /** Per-connection product lookup (Connect-normalized). */
103
+ getOnConnection: (connectionId: string, productId: string) => Promise<JsonObject>;
104
+ /** List options for a product on a connection. */
105
+ listOptions: (connectionId: string, productId: string) => Promise<ConnectOptionSummary[]>;
106
+ /** List extras (add-ons) for a product on a connection. */
107
+ listExtras: (connectionId: string, productId: string) => Promise<ConnectProductExtraSummary[]>;
108
+ };
109
+ readonly options: {
110
+ /** List units (pricing/capacity buckets) for an option. */
111
+ listUnits: (connectionId: string, optionId: string) => Promise<ConnectUnitSummary[]>;
112
+ /** List per-option extras configuration. */
113
+ listExtraConfigs: (connectionId: string, optionId: string) => Promise<ConnectOptionExtraConfigSummary[]>;
114
+ };
115
+ readonly suppliers: {
116
+ /**
117
+ * List suppliers across all connections in the operator's catalog.
118
+ * Optionally filter by `connectionId` and/or `providerKey`.
119
+ */
120
+ list: (filter?: ConnectionScopeFilter & OperatorScope) => Promise<OperatorSupplierSummary[]>;
121
+ /** Per-connection list (Connect-normalized). */
122
+ listOnConnection: (connectionId: string) => Promise<JsonObject[]>;
123
+ };
124
+ readonly availability: {
125
+ /** Per-connection availability slots (Connect-normalized). */
126
+ list: (connectionId: string, query: ConnectAvailabilityQuery) => Promise<JsonObject[]>;
127
+ /** Per-connection calendar query (Connect-normalized). */
128
+ calendar: (connectionId: string, input: AvailabilityCalendarQueryInput) => Promise<JsonObject[]>;
129
+ };
130
+ readonly bookings: {
131
+ /**
132
+ * List bookings across all connections in the operator's catalog.
133
+ * Filter by `connectionId`, `providerKey`, status, and/or date range.
134
+ */
135
+ listAll: (filter?: ConnectionScopeFilter & OperatorScope & ListOperatorBookingsQuery) => Promise<OperatorBookingSummary[]>;
136
+ /** Per-connection booking list (Connect-normalized). */
137
+ list: (connectionId: string, query?: ConnectListBookingsQuery) => Promise<JsonObject[]>;
138
+ get: (connectionId: string, bookingId: string) => Promise<JsonObject>;
139
+ create: (connectionId: string, input: CreateBookingInput, options?: {
140
+ idempotencyKey?: string;
141
+ }) => Promise<JsonObject>;
142
+ confirm: (connectionId: string, bookingId: string, input?: ConfirmBookingInput) => Promise<JsonObject>;
143
+ cancel: (connectionId: string, bookingId: string, input?: CancelBookingInput) => Promise<JsonObject>;
144
+ /** Booking activity log (Connect-normalized). */
145
+ listActivities: (connectionId: string, bookingId: string, query?: ListBookingActivitiesQuery) => Promise<JsonObject[]>;
146
+ };
147
+ readonly health: {
148
+ /** Per-connection sync health. */
149
+ get: (connectionId: string) => Promise<ConnectChannelHealth>;
150
+ };
151
+ readonly accommodations: {
152
+ /**
153
+ * List accommodations across all connections in the operator's catalog.
154
+ * Filter by `connectionId`, `providerKey`, `category`, `countryCode`,
155
+ * `city`, `minStars`, `locale`. Falls back to client.operatorId.
156
+ */
157
+ list: (filter?: ConnectionScopeFilter & OperatorScope & ListAccommodationsQuery) => Promise<OperatorAccommodationSummary[]>;
158
+ /** Look up an accommodation in the operator's catalog. */
159
+ get: (accommodationId: string, scope?: OperatorScope & {
160
+ locale?: string;
161
+ }) => Promise<OperatorAccommodationDetail>;
162
+ /** Per-connection list (Connect-normalized). */
163
+ listOnConnection: (connectionId: string, options?: {
164
+ locale?: string;
165
+ limit?: number;
166
+ }) => Promise<JsonObject[]>;
167
+ /** Per-connection accommodation lookup. */
168
+ getOnConnection: (connectionId: string, accommodationId: string, options?: {
169
+ locale?: string;
170
+ }) => Promise<JsonObject>;
171
+ /** List room types for an accommodation on a connection. */
172
+ listRoomTypes: (connectionId: string, accommodationExternalId: string, options?: {
173
+ locale?: string;
174
+ }) => Promise<RoomType[]>;
175
+ /** List rate plans for an accommodation, optionally filtered by room type. */
176
+ listRatePlans: (connectionId: string, accommodationExternalId: string, options?: {
177
+ roomTypeId?: string;
178
+ locale?: string;
179
+ }) => Promise<RatePlan[]>;
180
+ };
181
+ readonly stays: {
182
+ /** Per-connection search; delegates to the adapter. Returns offers + diagnostics. */
183
+ search: (connectionId: string, query: StaySearchQuery) => Promise<StaySearchResponse>;
184
+ /**
185
+ * Cross-connection search. Fans out across the operator's accessible
186
+ * connections in parallel, merges offers, returns a unified response with
187
+ * `connectionDiagnostics` per connection.
188
+ */
189
+ searchAcrossProviders: (query: StaySearchQuery, filter?: ConnectionScopeFilter & OperatorScope) => Promise<StaySearchResponse>;
190
+ /**
191
+ * Lock an offer. Pass the StayOffer returned from search; Connect creates a
192
+ * server-side hold whose TTL caps any provider-native lock that exists.
193
+ */
194
+ lock: (connectionId: string, offer: StayOffer, options?: {
195
+ ttlMinutes?: number;
196
+ }) => Promise<StayHold>;
197
+ releaseLock: (connectionId: string, holdId: string) => Promise<StayHold>;
198
+ getHold: (connectionId: string, holdId: string) => Promise<StayHold>;
199
+ /**
200
+ * Confirm a held offer into a booking. `idempotencyKey` becomes
201
+ * `Idempotency-Key` and is enforced server-side against the hold.
202
+ */
203
+ confirm: (connectionId: string, input: StayConfirmInput, options?: {
204
+ idempotencyKey?: string;
205
+ }) => Promise<StayBooking>;
206
+ cancel: (connectionId: string, bookingId: string, options?: {
207
+ reason?: string;
208
+ }) => Promise<StayBooking>;
209
+ get: (connectionId: string, bookingId: string) => Promise<StayBooking>;
210
+ list: (connectionId: string, query?: {
211
+ status?: string | string[];
212
+ checkInFrom?: string;
213
+ checkInTo?: string;
214
+ limit?: number;
215
+ }) => Promise<StayBooking[]>;
216
+ /** Cross-connection booking list scoped to the operator. */
217
+ listAll: (filter?: ConnectionScopeFilter & OperatorScope & {
218
+ status?: string | string[];
219
+ checkInFrom?: string;
220
+ checkInTo?: string;
221
+ limit?: number;
222
+ }) => Promise<(StayBooking & {
223
+ providerKey: string | null;
224
+ supplierName: string;
225
+ })[]>;
226
+ };
227
+ readonly cruises: {
228
+ /**
229
+ * List cruises across all of the operator's accessible connections.
230
+ * Filter by `connectionId`, `providerKey`, `cruiseType`, line/ship,
231
+ * `minNights`/`maxNights`, `locale`. Falls back to client.operatorId.
232
+ */
233
+ list: (filter?: ConnectionScopeFilter & OperatorScope & ListCruisesQuery) => Promise<OperatorCruiseSummary[]>;
234
+ /** Look up a cruise by id in the operator's catalog. */
235
+ get: (cruiseId: string, scope?: OperatorScope & {
236
+ locale?: string;
237
+ }) => Promise<OperatorCruiseDetail>;
238
+ /** Per-connection list (Connect-normalized). */
239
+ listOnConnection: (connectionId: string, options?: {
240
+ locale?: string;
241
+ limit?: number;
242
+ }) => Promise<JsonObject[]>;
243
+ /** Per-connection cruise lookup. */
244
+ getOnConnection: (connectionId: string, cruiseId: string, options?: {
245
+ locale?: string;
246
+ }) => Promise<JsonObject>;
247
+ /**
248
+ * Cross-connection sailings list — primary search axis is departure
249
+ * window. Filter by cruise/ship/sales status.
250
+ */
251
+ listSailings: (filter?: ConnectionScopeFilter & OperatorScope & ListSailingsQuery) => Promise<OperatorSailingSummary[]>;
252
+ /** Look up a sailing by id in the operator's catalog. */
253
+ getSailing: (sailingId: string, scope?: OperatorScope) => Promise<OperatorSailingDetail>;
254
+ /** Per-connection sailings list. */
255
+ listSailingsOnConnection: (connectionId: string, options?: {
256
+ cruiseExternalId?: string;
257
+ departureFrom?: string;
258
+ departureTo?: string;
259
+ salesStatus?: string | string[];
260
+ limit?: number;
261
+ }) => Promise<JsonObject[]>;
262
+ /** Per-connection sailing lookup. */
263
+ getSailingOnConnection: (connectionId: string, sailingId: string) => Promise<JsonObject>;
264
+ /** Itinerary days for a sailing on a connection (port calls + sea days). */
265
+ listItinerary: (connectionId: string, sailingExternalId: string) => Promise<ListItineraryDay[]>;
266
+ /** Cabin pricing grid for a sailing on a connection. */
267
+ listSailingPricing: (connectionId: string, sailingExternalId: string, query?: ListSailingPricingQuery) => Promise<CabinPricing[]>;
268
+ /** Cruise lines available on a connection. */
269
+ listCruiseLines: (connectionId: string, options?: {
270
+ locale?: string;
271
+ }) => Promise<JsonObject[]>;
272
+ /** Ships on a connection — optionally filter by cruise line. */
273
+ listShips: (connectionId: string, options?: {
274
+ cruiseLineExternalId?: string;
275
+ locale?: string;
276
+ limit?: number;
277
+ }) => Promise<JsonObject[]>;
278
+ /** Per-connection ship lookup. */
279
+ getShip: (connectionId: string, shipId: string) => Promise<JsonObject>;
280
+ /** Cabin categories for a ship on a connection. */
281
+ listCabinCategories: (connectionId: string, shipExternalId: string, options?: {
282
+ locale?: string;
283
+ }) => Promise<JsonObject[]>;
284
+ /** Per-connection cruise search; reads the local cache. */
285
+ search: (connectionId: string, query: CruiseSearchQuery) => Promise<CruiseSearchResponse>;
286
+ /**
287
+ * Cross-connection cruise search. Fans out across the operator's
288
+ * accessible connections, merges offers, returns a unified response with
289
+ * `connectionDiagnostics` per connection.
290
+ */
291
+ searchAcrossProviders: (query: CruiseSearchQuery, filter?: ConnectionScopeFilter & OperatorScope) => Promise<CruiseSearchResponse>;
292
+ };
293
+ readonly cruiseBookings: {
294
+ /**
295
+ * Inquiry-mode booking: creates a sales lead, no provider hold. The
296
+ * reseller follows up out-of-band. Returns the booking with status
297
+ * `inquiry`.
298
+ */
299
+ inquire: (connectionId: string, input: CruiseInquireInput) => Promise<CruiseBooking>;
300
+ /**
301
+ * Lock a cruise offer (reserve mode). Connect creates a server-side
302
+ * quote with a 24h default TTL; if the adapter has a native option API
303
+ * (e.g. Viking), Connect calls it under the hood.
304
+ */
305
+ lock: (connectionId: string, offer: CruiseOffer, options?: {
306
+ ttlHours?: number;
307
+ }) => Promise<CruiseQuote>;
308
+ /**
309
+ * Lock a concrete cruise selection. Connect resolves the current
310
+ * normalized pricing row server-side, builds the canonical offer snapshot,
311
+ * optionally calls the provider lock API, and returns the quote.
312
+ */
313
+ lockSelection: (connectionId: string, input: CruiseLockSelectionInput) => Promise<CruiseQuote>;
314
+ releaseLock: (connectionId: string, quoteId: string) => Promise<CruiseQuote>;
315
+ getQuote: (connectionId: string, quoteId: string) => Promise<CruiseQuote>;
316
+ /**
317
+ * Confirm a held offer into a booking (reserve mode). `idempotencyKey`
318
+ * becomes `Idempotency-Key` and is enforced server-side against the
319
+ * quote.
320
+ */
321
+ confirm: (connectionId: string, input: CruiseConfirmInput, options?: {
322
+ idempotencyKey?: string;
323
+ }) => Promise<CruiseBooking>;
324
+ cancel: (connectionId: string, bookingId: string, options?: {
325
+ reason?: string;
326
+ }) => Promise<CruiseBooking>;
327
+ get: (connectionId: string, bookingId: string) => Promise<CruiseBooking>;
328
+ list: (connectionId: string, query?: {
329
+ status?: string | string[];
330
+ mode?: string | string[];
331
+ departureFrom?: string;
332
+ departureTo?: string;
333
+ limit?: number;
334
+ }) => Promise<CruiseBooking[]>;
335
+ /** Cross-connection booking list scoped to the operator. */
336
+ listAll: (filter?: ConnectionScopeFilter & OperatorScope & {
337
+ status?: string | string[];
338
+ mode?: string | string[];
339
+ departureFrom?: string;
340
+ departureTo?: string;
341
+ limit?: number;
342
+ }) => Promise<(CruiseBooking & {
343
+ providerKey: string | null;
344
+ supplierName: string;
345
+ })[]>;
346
+ };
347
+ readonly flights: {
348
+ search: (input: FlightMultiSearchInput) => Promise<JsonObject>;
349
+ /**
350
+ * Server-Sent Events variant of multi-connection search. Returns the raw
351
+ * `Response` so callers can stream events with their preferred parser.
352
+ */
353
+ searchStream: (input: FlightMultiSearchInput, options?: {
354
+ signal?: AbortSignal;
355
+ }) => Promise<Response>;
356
+ searchOnConnection: (connectionId: string, input: FlightSearchInput) => Promise<JsonObject>;
357
+ price: (connectionId: string, input: FlightPriceInput) => Promise<JsonObject>;
358
+ book: (connectionId: string, input: FlightBookInput) => Promise<JsonObject>;
359
+ getOrder: (connectionId: string, orderId: string) => Promise<JsonObject>;
360
+ cancelOrder: (connectionId: string, orderId: string) => Promise<JsonObject>;
361
+ ticketOrder: (connectionId: string, orderId: string) => Promise<JsonObject>;
362
+ getSeatMap: (connectionId: string, orderId: string, segmentId: string) => Promise<JsonObject>;
363
+ selectSeats: (connectionId: string, orderId: string, input: FlightSeatSelectionInput) => Promise<JsonObject>;
364
+ getAncillaries: (connectionId: string, orderId: string) => Promise<JsonObject>;
365
+ addAncillary: (connectionId: string, orderId: string, input: FlightAncillaryInput) => Promise<JsonObject>;
366
+ checkIn: (connectionId: string, orderId: string, input: FlightCheckInInput) => Promise<JsonObject>;
367
+ exchange: (connectionId: string, orderId: string, input: FlightExchangeInput) => Promise<JsonObject>;
368
+ refund: (connectionId: string, orderId: string, input: FlightRefundInput) => Promise<JsonObject>;
369
+ voidOrder: (connectionId: string, orderId: string) => Promise<JsonObject>;
370
+ addServiceRequest: (connectionId: string, orderId: string, input: FlightSsrInput) => Promise<JsonObject>;
371
+ };
372
+ }
373
+ export declare function createVoyantConnectClient(options: VoyantConnectClientOptions): VoyantConnectClient;
374
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}