@gojinko/api-client 2.19.1 → 2.21.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.
@@ -16,9 +16,7 @@ export interface paths {
16
16
  */
17
17
  get: {
18
18
  parameters: {
19
- query: {
20
- /** @description Analysis mode. `trend` is accepted but currently returns snapshot-shaped data. */
21
- analysis: components["parameters"]["analysis"];
19
+ query?: {
22
20
  /** @description Origin market filter as <Level>:<Code>, e.g. Country:US or City:NYC. */
23
21
  origin_market?: components["parameters"]["originMarket"];
24
22
  /** @description Optional destination filter as <Level>:<Code>, e.g. Country:TH. */
@@ -41,10 +39,8 @@ export interface paths {
41
39
  search_window_min?: components["parameters"]["searchWindowMin"];
42
40
  /** @description Maximum advance-purchase window in days (must be >= search_window_min). */
43
41
  search_window_max?: components["parameters"]["searchWindowMax"];
44
- /** @description Snapshot mode only: number of most-recent days of search activity aggregated into the demand level (min 2, default 7, max 90 — a 1-day window is the current day, whose data is incomplete; the cube retains 90 days). Rejected when analysis=trend. */
42
+ /** @description Number of most-recent days of search activity aggregated into the demand level (min 2, default 7, max 90 — a 1-day window is the current day, whose data is incomplete; the cube retains 90 days). */
45
43
  snapshot_window_days?: components["parameters"]["snapshotWindowDays"];
46
- /** @description Trend mode only: size in days of each of the two adjacent windows compared for growth (min 2, default 7, max 45 — a 1-day window's recent period is the current day, whose data is incomplete; a trend spans 2x the window within the cube's 90-day retention). Rejected when analysis=snapshot. */
47
- trend_window_days?: components["parameters"]["trendWindowDays"];
48
44
  /** @description Max rows (1-200, default 20). */
49
45
  limit?: components["parameters"]["limit"];
50
46
  };
@@ -105,8 +101,6 @@ export interface paths {
105
101
  get: {
106
102
  parameters: {
107
103
  query: {
108
- /** @description Analysis mode. `trend` is accepted but currently returns snapshot-shaped data. */
109
- analysis: components["parameters"]["analysis"];
110
104
  /** @description Destination as <Level>:<Code>, e.g. Country:TH. Required for this endpoint. */
111
105
  destination: components["parameters"]["destinationRequired"];
112
106
  /** @description Origin market filter as <Level>:<Code>, e.g. Country:US or City:NYC. */
@@ -129,10 +123,8 @@ export interface paths {
129
123
  search_window_min?: components["parameters"]["searchWindowMin"];
130
124
  /** @description Maximum advance-purchase window in days (must be >= search_window_min). */
131
125
  search_window_max?: components["parameters"]["searchWindowMax"];
132
- /** @description Snapshot mode only: number of most-recent days of search activity aggregated into the demand level (min 2, default 7, max 90 — a 1-day window is the current day, whose data is incomplete; the cube retains 90 days). Rejected when analysis=trend. */
126
+ /** @description Number of most-recent days of search activity aggregated into the demand level (min 2, default 7, max 90 — a 1-day window is the current day, whose data is incomplete; the cube retains 90 days). */
133
127
  snapshot_window_days?: components["parameters"]["snapshotWindowDays"];
134
- /** @description Trend mode only: size in days of each of the two adjacent windows compared for growth (min 2, default 7, max 45 — a 1-day window's recent period is the current day, whose data is incomplete; a trend spans 2x the window within the cube's 90-day retention). Rejected when analysis=snapshot. */
135
- trend_window_days?: components["parameters"]["trendWindowDays"];
136
128
  /** @description Max rows (1-200, default 20). */
137
129
  limit?: components["parameters"]["limit"];
138
130
  };
@@ -193,8 +185,6 @@ export interface paths {
193
185
  get: {
194
186
  parameters: {
195
187
  query: {
196
- /** @description Analysis mode. `trend` is accepted but currently returns snapshot-shaped data. */
197
- analysis: components["parameters"]["analysis"];
198
188
  /** @description Destination as <Level>:<Code>, e.g. Country:TH. Required for this endpoint. */
199
189
  destination: components["parameters"]["destinationRequired"];
200
190
  /** @description Origin market filter as <Level>:<Code>, e.g. Country:US or City:NYC. */
@@ -215,10 +205,8 @@ export interface paths {
215
205
  search_window_min?: components["parameters"]["searchWindowMin"];
216
206
  /** @description Maximum advance-purchase window in days (must be >= search_window_min). */
217
207
  search_window_max?: components["parameters"]["searchWindowMax"];
218
- /** @description Snapshot mode only: number of most-recent days of search activity aggregated into the demand level (min 2, default 7, max 90 — a 1-day window is the current day, whose data is incomplete; the cube retains 90 days). Rejected when analysis=trend. */
208
+ /** @description Number of most-recent days of search activity aggregated into the demand level (min 2, default 7, max 90 — a 1-day window is the current day, whose data is incomplete; the cube retains 90 days). */
219
209
  snapshot_window_days?: components["parameters"]["snapshotWindowDays"];
220
- /** @description Trend mode only: size in days of each of the two adjacent windows compared for growth (min 2, default 7, max 45 — a 1-day window's recent period is the current day, whose data is incomplete; a trend spans 2x the window within the cube's 90-day retention). Rejected when analysis=snapshot. */
221
- trend_window_days?: components["parameters"]["trendWindowDays"];
222
210
  /** @description Max rows (1-200, default 20). */
223
211
  limit?: components["parameters"]["limit"];
224
212
  };
@@ -265,6 +253,346 @@ export interface paths {
265
253
  patch?: never;
266
254
  trace?: never;
267
255
  };
256
+ "/v1/trend": {
257
+ parameters: {
258
+ query?: never;
259
+ header?: never;
260
+ path?: never;
261
+ cookie?: never;
262
+ };
263
+ /**
264
+ * Demand time series for explicit origin/destination pairs
265
+ * @description Deep dive: returns one de-sampled search-volume series per (origin, destination) pair. v1 allows a list on only one side — a single origin with many destinations, or many origins with a single destination.
266
+ */
267
+ get: {
268
+ parameters: {
269
+ query: {
270
+ /** @description Pairs endpoint: comma-separated origin selectors `<Level>:<Code>` (e.g. `Country:US,Country:CA`). v1: at most one of origins/destinations may have more than one entry. */
271
+ origins: components["parameters"]["origins"];
272
+ /** @description Pairs endpoint: comma-separated destination selectors `<Level>:<Code>` (e.g. `Country:FR,Country:DE`). */
273
+ destinations: components["parameters"]["destinations"];
274
+ /** @description Named departure window (defaults to Next90Days server-side). */
275
+ travel_period?: components["parameters"]["travelPeriod"];
276
+ /** @description Start of departure window (YYYY-MM-DD). Required when travel_period=Custom. */
277
+ departure_date_from?: components["parameters"]["departureDateFrom"];
278
+ /** @description End of departure window (YYYY-MM-DD). Required when travel_period=Custom. */
279
+ departure_date_to?: components["parameters"]["departureDateTo"];
280
+ /** @description Optional traveler-type filter. */
281
+ traveler_type?: components["parameters"]["travelerType"];
282
+ /** @description Optional trip-type filter. */
283
+ trip_type?: components["parameters"]["tripType"];
284
+ /** @description Minimum trip length in nights (return_date − dep_date). Round-trips only; must be >= 0. */
285
+ trip_duration_min?: components["parameters"]["tripDurationMin"];
286
+ /** @description Maximum trip length in nights (must be >= trip_duration_min). */
287
+ trip_duration_max?: components["parameters"]["tripDurationMax"];
288
+ /** @description Minimum advance-purchase window in days (dep_date − search_date): searches made at least this many days before departure. Must be >= 0. */
289
+ search_window_min?: components["parameters"]["searchWindowMin"];
290
+ /** @description Maximum advance-purchase window in days (must be >= search_window_min). */
291
+ search_window_max?: components["parameters"]["searchWindowMax"];
292
+ /** @description Number of buckets N in the chosen granularity's own unit (min 2; max depends on granularity: day <= 60, week <= 52, month <= 12; default 12 applied server-side). The series spans the last N complete buckets, excluding the in-progress one. */
293
+ trend_window?: components["parameters"]["trendWindow"];
294
+ /** @description Bucket size for the returned series: week (default), day, or month. */
295
+ granularity?: components["parameters"]["granularity"];
296
+ };
297
+ header?: never;
298
+ path?: never;
299
+ cookie?: never;
300
+ };
301
+ requestBody?: never;
302
+ responses: {
303
+ /** @description Per-pair demand time series */
304
+ 200: {
305
+ headers: {
306
+ [name: string]: unknown;
307
+ };
308
+ content: {
309
+ "application/json": components["schemas"]["TrendResponse"];
310
+ };
311
+ };
312
+ /** @description Authentication required */
313
+ 401: {
314
+ headers: {
315
+ [name: string]: unknown;
316
+ };
317
+ content: {
318
+ "application/json": components["schemas"]["ErrorResponse"];
319
+ };
320
+ };
321
+ /** @description Validation error */
322
+ 422: {
323
+ headers: {
324
+ [name: string]: unknown;
325
+ };
326
+ content: {
327
+ "application/json": components["schemas"]["ErrorResponse"];
328
+ };
329
+ };
330
+ };
331
+ };
332
+ put?: never;
333
+ post?: never;
334
+ delete?: never;
335
+ options?: never;
336
+ head?: never;
337
+ patch?: never;
338
+ trace?: never;
339
+ };
340
+ "/v1/destination/trend": {
341
+ parameters: {
342
+ query?: never;
343
+ header?: never;
344
+ path?: never;
345
+ cookie?: never;
346
+ };
347
+ /**
348
+ * Demand time series for the top-N destinations
349
+ * @description Ranks destinations (optionally reachable from origin_market) by within-window growth, then returns each top-N destination's series.
350
+ */
351
+ get: {
352
+ parameters: {
353
+ query?: {
354
+ /** @description Origin market filter as <Level>:<Code>, e.g. Country:US or City:NYC. */
355
+ origin_market?: components["parameters"]["originMarket"];
356
+ /** @description Optional destination filter as <Level>:<Code>, e.g. Country:TH. */
357
+ destination?: components["parameters"]["destinationFilter"];
358
+ /** @description Named departure window (defaults to Next90Days server-side). */
359
+ travel_period?: components["parameters"]["travelPeriod"];
360
+ /** @description Start of departure window (YYYY-MM-DD). Required when travel_period=Custom. */
361
+ departure_date_from?: components["parameters"]["departureDateFrom"];
362
+ /** @description End of departure window (YYYY-MM-DD). Required when travel_period=Custom. */
363
+ departure_date_to?: components["parameters"]["departureDateTo"];
364
+ /** @description Optional traveler-type filter. */
365
+ traveler_type?: components["parameters"]["travelerType"];
366
+ /** @description Optional trip-type filter. */
367
+ trip_type?: components["parameters"]["tripType"];
368
+ /** @description Minimum trip length in nights (return_date − dep_date). Round-trips only; must be >= 0. */
369
+ trip_duration_min?: components["parameters"]["tripDurationMin"];
370
+ /** @description Maximum trip length in nights (must be >= trip_duration_min). */
371
+ trip_duration_max?: components["parameters"]["tripDurationMax"];
372
+ /** @description Minimum advance-purchase window in days (dep_date − search_date): searches made at least this many days before departure. Must be >= 0. */
373
+ search_window_min?: components["parameters"]["searchWindowMin"];
374
+ /** @description Maximum advance-purchase window in days (must be >= search_window_min). */
375
+ search_window_max?: components["parameters"]["searchWindowMax"];
376
+ /** @description Number of buckets N in the chosen granularity's own unit (min 2; max depends on granularity: day <= 60, week <= 52, month <= 12; default 12 applied server-side). The series spans the last N complete buckets, excluding the in-progress one. */
377
+ trend_window?: components["parameters"]["trendWindow"];
378
+ /** @description Bucket size for the returned series: week (default), day, or month. */
379
+ granularity?: components["parameters"]["granularity"];
380
+ /** @description Trend endpoints: maximum number of series (top-N keys). Default 10, max 50. */
381
+ limit?: components["parameters"]["trendLimit"];
382
+ };
383
+ header?: never;
384
+ path?: never;
385
+ cookie?: never;
386
+ };
387
+ requestBody?: never;
388
+ responses: {
389
+ /** @description Top-N destination time series */
390
+ 200: {
391
+ headers: {
392
+ [name: string]: unknown;
393
+ };
394
+ content: {
395
+ "application/json": components["schemas"]["TrendResponse"];
396
+ };
397
+ };
398
+ /** @description Authentication required */
399
+ 401: {
400
+ headers: {
401
+ [name: string]: unknown;
402
+ };
403
+ content: {
404
+ "application/json": components["schemas"]["ErrorResponse"];
405
+ };
406
+ };
407
+ /** @description Validation error */
408
+ 422: {
409
+ headers: {
410
+ [name: string]: unknown;
411
+ };
412
+ content: {
413
+ "application/json": components["schemas"]["ErrorResponse"];
414
+ };
415
+ };
416
+ };
417
+ };
418
+ put?: never;
419
+ post?: never;
420
+ delete?: never;
421
+ options?: never;
422
+ head?: never;
423
+ patch?: never;
424
+ trace?: never;
425
+ };
426
+ "/v1/market/trend": {
427
+ parameters: {
428
+ query?: never;
429
+ header?: never;
430
+ path?: never;
431
+ cookie?: never;
432
+ };
433
+ /**
434
+ * Demand time series for the top-N source markets
435
+ * @description Ranks source markets for a destination by within-window growth, then returns each top-N market's series. `destination` is required.
436
+ */
437
+ get: {
438
+ parameters: {
439
+ query: {
440
+ /** @description Destination as <Level>:<Code>, e.g. Country:TH. Required for this endpoint. */
441
+ destination: components["parameters"]["destinationRequired"];
442
+ /** @description Origin market filter as <Level>:<Code>, e.g. Country:US or City:NYC. */
443
+ origin_market?: components["parameters"]["originMarket"];
444
+ /** @description Named departure window (defaults to Next90Days server-side). */
445
+ travel_period?: components["parameters"]["travelPeriod"];
446
+ /** @description Start of departure window (YYYY-MM-DD). Required when travel_period=Custom. */
447
+ departure_date_from?: components["parameters"]["departureDateFrom"];
448
+ /** @description End of departure window (YYYY-MM-DD). Required when travel_period=Custom. */
449
+ departure_date_to?: components["parameters"]["departureDateTo"];
450
+ /** @description Optional traveler-type filter. */
451
+ traveler_type?: components["parameters"]["travelerType"];
452
+ /** @description Optional trip-type filter. */
453
+ trip_type?: components["parameters"]["tripType"];
454
+ /** @description Minimum trip length in nights (return_date − dep_date). Round-trips only; must be >= 0. */
455
+ trip_duration_min?: components["parameters"]["tripDurationMin"];
456
+ /** @description Maximum trip length in nights (must be >= trip_duration_min). */
457
+ trip_duration_max?: components["parameters"]["tripDurationMax"];
458
+ /** @description Minimum advance-purchase window in days (dep_date − search_date): searches made at least this many days before departure. Must be >= 0. */
459
+ search_window_min?: components["parameters"]["searchWindowMin"];
460
+ /** @description Maximum advance-purchase window in days (must be >= search_window_min). */
461
+ search_window_max?: components["parameters"]["searchWindowMax"];
462
+ /** @description Number of buckets N in the chosen granularity's own unit (min 2; max depends on granularity: day <= 60, week <= 52, month <= 12; default 12 applied server-side). The series spans the last N complete buckets, excluding the in-progress one. */
463
+ trend_window?: components["parameters"]["trendWindow"];
464
+ /** @description Bucket size for the returned series: week (default), day, or month. */
465
+ granularity?: components["parameters"]["granularity"];
466
+ /** @description Trend endpoints: maximum number of series (top-N keys). Default 10, max 50. */
467
+ limit?: components["parameters"]["trendLimit"];
468
+ };
469
+ header?: never;
470
+ path?: never;
471
+ cookie?: never;
472
+ };
473
+ requestBody?: never;
474
+ responses: {
475
+ /** @description Top-N market time series */
476
+ 200: {
477
+ headers: {
478
+ [name: string]: unknown;
479
+ };
480
+ content: {
481
+ "application/json": components["schemas"]["TrendResponse"];
482
+ };
483
+ };
484
+ /** @description Authentication required */
485
+ 401: {
486
+ headers: {
487
+ [name: string]: unknown;
488
+ };
489
+ content: {
490
+ "application/json": components["schemas"]["ErrorResponse"];
491
+ };
492
+ };
493
+ /** @description Validation error */
494
+ 422: {
495
+ headers: {
496
+ [name: string]: unknown;
497
+ };
498
+ content: {
499
+ "application/json": components["schemas"]["ErrorResponse"];
500
+ };
501
+ };
502
+ };
503
+ };
504
+ put?: never;
505
+ post?: never;
506
+ delete?: never;
507
+ options?: never;
508
+ head?: never;
509
+ patch?: never;
510
+ trace?: never;
511
+ };
512
+ "/v1/audience/trend": {
513
+ parameters: {
514
+ query?: never;
515
+ header?: never;
516
+ path?: never;
517
+ cookie?: never;
518
+ };
519
+ /**
520
+ * Demand time series for the traveler-type mix
521
+ * @description Returns a series per traveler-type segment (Solo / Couple / Family / Group) of demand for a destination. `destination` is required; `traveler_type` is not a filter here — this endpoint buckets by it.
522
+ */
523
+ get: {
524
+ parameters: {
525
+ query: {
526
+ /** @description Destination as <Level>:<Code>, e.g. Country:TH. Required for this endpoint. */
527
+ destination: components["parameters"]["destinationRequired"];
528
+ /** @description Origin market filter as <Level>:<Code>, e.g. Country:US or City:NYC. */
529
+ origin_market?: components["parameters"]["originMarket"];
530
+ /** @description Named departure window (defaults to Next90Days server-side). */
531
+ travel_period?: components["parameters"]["travelPeriod"];
532
+ /** @description Start of departure window (YYYY-MM-DD). Required when travel_period=Custom. */
533
+ departure_date_from?: components["parameters"]["departureDateFrom"];
534
+ /** @description End of departure window (YYYY-MM-DD). Required when travel_period=Custom. */
535
+ departure_date_to?: components["parameters"]["departureDateTo"];
536
+ /** @description Optional trip-type filter. */
537
+ trip_type?: components["parameters"]["tripType"];
538
+ /** @description Minimum trip length in nights (return_date − dep_date). Round-trips only; must be >= 0. */
539
+ trip_duration_min?: components["parameters"]["tripDurationMin"];
540
+ /** @description Maximum trip length in nights (must be >= trip_duration_min). */
541
+ trip_duration_max?: components["parameters"]["tripDurationMax"];
542
+ /** @description Minimum advance-purchase window in days (dep_date − search_date): searches made at least this many days before departure. Must be >= 0. */
543
+ search_window_min?: components["parameters"]["searchWindowMin"];
544
+ /** @description Maximum advance-purchase window in days (must be >= search_window_min). */
545
+ search_window_max?: components["parameters"]["searchWindowMax"];
546
+ /** @description Number of buckets N in the chosen granularity's own unit (min 2; max depends on granularity: day <= 60, week <= 52, month <= 12; default 12 applied server-side). The series spans the last N complete buckets, excluding the in-progress one. */
547
+ trend_window?: components["parameters"]["trendWindow"];
548
+ /** @description Bucket size for the returned series: week (default), day, or month. */
549
+ granularity?: components["parameters"]["granularity"];
550
+ /** @description Trend endpoints: maximum number of series (top-N keys). Default 10, max 50. */
551
+ limit?: components["parameters"]["trendLimit"];
552
+ };
553
+ header?: never;
554
+ path?: never;
555
+ cookie?: never;
556
+ };
557
+ requestBody?: never;
558
+ responses: {
559
+ /** @description Per-segment time series */
560
+ 200: {
561
+ headers: {
562
+ [name: string]: unknown;
563
+ };
564
+ content: {
565
+ "application/json": components["schemas"]["TrendResponse"];
566
+ };
567
+ };
568
+ /** @description Authentication required */
569
+ 401: {
570
+ headers: {
571
+ [name: string]: unknown;
572
+ };
573
+ content: {
574
+ "application/json": components["schemas"]["ErrorResponse"];
575
+ };
576
+ };
577
+ /** @description Validation error */
578
+ 422: {
579
+ headers: {
580
+ [name: string]: unknown;
581
+ };
582
+ content: {
583
+ "application/json": components["schemas"]["ErrorResponse"];
584
+ };
585
+ };
586
+ };
587
+ };
588
+ put?: never;
589
+ post?: never;
590
+ delete?: never;
591
+ options?: never;
592
+ head?: never;
593
+ patch?: never;
594
+ trace?: never;
595
+ };
268
596
  "/health": {
269
597
  parameters: {
270
598
  query?: never;
@@ -3204,8 +3532,6 @@ export interface components {
3204
3532
  last_name?: string;
3205
3533
  };
3206
3534
  /** @enum {string} */
3207
- AnalysisType: "snapshot" | "trend";
3208
- /** @enum {string} */
3209
3535
  TravelPeriod: "Summer" | "Winter" | "Christmas" | "Easter" | "Next30Days" | "Next90Days" | "Custom";
3210
3536
  /** @enum {string} */
3211
3537
  TravelerType: "Solo" | "Couple" | "Group" | "Family";
@@ -3216,51 +3542,114 @@ export interface components {
3216
3542
  destination: string;
3217
3543
  /** Format: double */
3218
3544
  share?: number;
3219
- /**
3220
- * Format: double
3221
- * @description Growth % in trend mode (analysis=trend); omitted in snapshot.
3222
- */
3223
- growth?: number;
3224
3545
  };
3225
3546
  MarketRow: {
3226
3547
  rank?: number;
3227
3548
  market: string;
3228
3549
  /** Format: double */
3229
3550
  share?: number;
3230
- /**
3231
- * Format: double
3232
- * @description Growth % in trend mode (analysis=trend); omitted in snapshot.
3233
- */
3234
- growth?: number;
3235
3551
  };
3236
3552
  AudienceRow: {
3237
3553
  rank?: number;
3238
3554
  audience: string;
3239
3555
  /** Format: double */
3240
3556
  share?: number;
3241
- /**
3242
- * Format: double
3243
- * @description Growth % in trend mode (analysis=trend); omitted in snapshot.
3244
- */
3245
- growth?: number;
3246
3557
  };
3247
3558
  DestinationResponse: {
3248
- analysis_type: components["schemas"]["AnalysisType"];
3249
3559
  rows: components["schemas"]["DestinationRow"][];
3250
3560
  };
3251
3561
  MarketResponse: {
3252
- analysis_type: components["schemas"]["AnalysisType"];
3253
3562
  rows: components["schemas"]["MarketRow"][];
3254
3563
  };
3255
3564
  AudienceResponse: {
3256
- analysis_type: components["schemas"]["AnalysisType"];
3257
3565
  rows: components["schemas"]["AudienceRow"][];
3258
3566
  };
3567
+ /**
3568
+ * @description Bucket size for a trend series: week (default), day, or month.
3569
+ * @enum {string}
3570
+ */
3571
+ Granularity: "day" | "week" | "month";
3572
+ TrendPoint: {
3573
+ /**
3574
+ * Format: date
3575
+ * @description Bucket start date (YYYY-MM-DD).
3576
+ * @example 2026-06-20
3577
+ */
3578
+ date: string;
3579
+ /**
3580
+ * Format: double
3581
+ * @description De-sampled search volume for the bucket.
3582
+ * @example 1234
3583
+ */
3584
+ value: number;
3585
+ };
3586
+ /** @description Per-series rollup over the returned window. */
3587
+ SeriesSummary: {
3588
+ /**
3589
+ * Format: double
3590
+ * @example 34567
3591
+ */
3592
+ total?: number;
3593
+ /**
3594
+ * Format: double
3595
+ * @example 1191
3596
+ */
3597
+ avg_per_day?: number;
3598
+ /**
3599
+ * Format: double
3600
+ * @description Within-window growth %: recent half vs. prior half. Null when the prior half is empty.
3601
+ * @example 12.3
3602
+ */
3603
+ growth_pct?: number | null;
3604
+ /**
3605
+ * Format: date
3606
+ * @example 2026-06-14
3607
+ */
3608
+ peak_date?: string;
3609
+ /**
3610
+ * Format: double
3611
+ * @example 1890
3612
+ */
3613
+ peak_value?: number;
3614
+ };
3615
+ TrendSeries: {
3616
+ /**
3617
+ * @description Ranked dimension value (destination/market/audience endpoints); omitted for the pairs endpoint.
3618
+ * @example Country:FR
3619
+ */
3620
+ label?: string;
3621
+ /**
3622
+ * @description Pairs endpoint only: the origin selector for this series.
3623
+ * @example Country:US
3624
+ */
3625
+ origin?: string;
3626
+ /**
3627
+ * @description Pairs endpoint only: the destination selector for this series.
3628
+ * @example Country:FR
3629
+ */
3630
+ destination?: string;
3631
+ series: components["schemas"]["TrendPoint"][];
3632
+ summary?: components["schemas"]["SeriesSummary"];
3633
+ };
3634
+ TrendResponse: {
3635
+ granularity: components["schemas"]["Granularity"];
3636
+ /**
3637
+ * Format: date
3638
+ * @description First (inclusive) bucket date of the window.
3639
+ * @example 2026-06-19
3640
+ */
3641
+ from: string;
3642
+ /**
3643
+ * Format: date
3644
+ * @description Last (inclusive) bucket date of the window.
3645
+ * @example 2026-06-25
3646
+ */
3647
+ to: string;
3648
+ series: components["schemas"]["TrendSeries"][];
3649
+ };
3259
3650
  };
3260
3651
  responses: never;
3261
3652
  parameters: {
3262
- /** @description Analysis mode. `trend` is accepted but currently returns snapshot-shaped data. */
3263
- analysis: components["schemas"]["AnalysisType"];
3264
3653
  /** @description Origin market filter as <Level>:<Code>, e.g. Country:US or City:NYC. */
3265
3654
  originMarket: string;
3266
3655
  /** @description Optional destination filter as <Level>:<Code>, e.g. Country:TH. */
@@ -3285,12 +3674,20 @@ export interface components {
3285
3674
  searchWindowMin: number;
3286
3675
  /** @description Maximum advance-purchase window in days (must be >= search_window_min). */
3287
3676
  searchWindowMax: number;
3288
- /** @description Snapshot mode only: number of most-recent days of search activity aggregated into the demand level (min 2, default 7, max 90 — a 1-day window is the current day, whose data is incomplete; the cube retains 90 days). Rejected when analysis=trend. */
3677
+ /** @description Number of most-recent days of search activity aggregated into the demand level (min 2, default 7, max 90 — a 1-day window is the current day, whose data is incomplete; the cube retains 90 days). */
3289
3678
  snapshotWindowDays: number;
3290
- /** @description Trend mode only: size in days of each of the two adjacent windows compared for growth (min 2, default 7, max 45 — a 1-day window's recent period is the current day, whose data is incomplete; a trend spans 2x the window within the cube's 90-day retention). Rejected when analysis=snapshot. */
3291
- trendWindowDays: number;
3292
3679
  /** @description Max rows (1-200, default 20). */
3293
3680
  limit: number;
3681
+ /** @description Pairs endpoint: comma-separated origin selectors `<Level>:<Code>` (e.g. `Country:US,Country:CA`). v1: at most one of origins/destinations may have more than one entry. */
3682
+ origins: string;
3683
+ /** @description Pairs endpoint: comma-separated destination selectors `<Level>:<Code>` (e.g. `Country:FR,Country:DE`). */
3684
+ destinations: string;
3685
+ /** @description Number of buckets N in the chosen granularity's own unit (min 2; max depends on granularity: day <= 60, week <= 52, month <= 12; default 12 applied server-side). The series spans the last N complete buckets, excluding the in-progress one. */
3686
+ trendWindow: number;
3687
+ /** @description Bucket size for the returned series: week (default), day, or month. */
3688
+ granularity: components["schemas"]["Granularity"];
3689
+ /** @description Trend endpoints: maximum number of series (top-N keys). Default 10, max 50. */
3690
+ trendLimit: number;
3294
3691
  };
3295
3692
  requestBodies: never;
3296
3693
  headers: never;