@vrplatform/api 1.3.1-stage.4728 → 1.3.1-stage.4736

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/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.3.1-stage.4728",
6
+ "version": "1.3.1-stage.4736",
7
7
  "description": "",
8
8
  "main": "build/main/index.js",
9
9
  "module": "build/module/index.js",
@@ -202,7 +202,7 @@ export interface paths {
202
202
  /** @description List API token metadata for the current team without revealing token secrets. Requires an authenticated team admin. */
203
203
  get: operations["getApiTokens"];
204
204
  put?: never;
205
- /** @description Create an API token for the current team. Requires an authenticated team admin. The token secret is never written to audit records. */
205
+ /** @description Generate an API token for the current team and return its secret. Partner teams may provide capability bundles to restrict the token; omission grants unrestricted partner API access. An optional IP allowlist is enforced on every API-key request. Requires an authenticated team admin. The token secret is never written to audit records. */
206
206
  post: operations["postApiTokens"];
207
207
  delete?: never;
208
208
  options?: never;
@@ -1793,57 +1793,6 @@ export interface paths {
1793
1793
  patch?: never;
1794
1794
  trace?: never;
1795
1795
  };
1796
- "/internal/partner-api-keys": {
1797
- parameters: {
1798
- query?: never;
1799
- header?: never;
1800
- path?: never;
1801
- cookie?: never;
1802
- };
1803
- get?: never;
1804
- put?: never;
1805
- /** @description Create a scoped partner API key. The returned secret is shown only once. VRP-admin only. */
1806
- post: operations["createPartnerApiKey"];
1807
- delete?: never;
1808
- options?: never;
1809
- head?: never;
1810
- patch?: never;
1811
- trace?: never;
1812
- };
1813
- "/internal/partner-api-keys/{id}": {
1814
- parameters: {
1815
- query?: never;
1816
- header?: never;
1817
- path?: never;
1818
- cookie?: never;
1819
- };
1820
- get?: never;
1821
- put?: never;
1822
- post?: never;
1823
- /** @description Revoke a partner API key immediately. VRP-admin only. */
1824
- delete: operations["revokePartnerApiKey"];
1825
- options?: never;
1826
- head?: never;
1827
- patch?: never;
1828
- trace?: never;
1829
- };
1830
- "/internal/partner-api-keys/{id}/rotate": {
1831
- parameters: {
1832
- query?: never;
1833
- header?: never;
1834
- path?: never;
1835
- cookie?: never;
1836
- };
1837
- get?: never;
1838
- put?: never;
1839
- /** @description Replace a partner API key secret while preserving its grants. The new secret is shown only once. VRP-admin only. */
1840
- post: operations["rotatePartnerApiKey"];
1841
- delete?: never;
1842
- options?: never;
1843
- head?: never;
1844
- patch?: never;
1845
- trace?: never;
1846
- };
1847
1796
  "/internal/users": {
1848
1797
  parameters: {
1849
1798
  query?: never;
@@ -8285,6 +8234,8 @@ export interface operations {
8285
8234
  content: {
8286
8235
  "application/json": {
8287
8236
  data: {
8237
+ allowedIpCidrs: string[];
8238
+ bundles: ("embed:exports:v1" | "embed:reports:v1" | "embed:statements:v1" | "partner:accounting-data:v1" | "partner:banking:v1" | "partner:onboarding:v1" | "partner:provisioning:v1" | "partner:reports:v1" | "partner:statements:v1" | "partner:webhooks:v1")[];
8288
8239
  /** Format: uuid */
8289
8240
  id: string;
8290
8241
  /**
@@ -8296,6 +8247,7 @@ export interface operations {
8296
8247
  hint: string | null;
8297
8248
  role: string | null;
8298
8249
  scope: string | null;
8250
+ scopes: ("self:read" | "partner:read" | "teams:read" | "teams:provision" | "teams:write" | "teams:delete" | "teams:initialize" | "embedded-sessions:issue" | "team-members:read" | "team-members:manage" | "partner-users:read" | "partner-users:manage" | "partner-memberships:manage" | "team-settings:read" | "team-settings:write" | "team-onboarding:read" | "team-onboarding:write" | "team-issues:read" | "books:close" | "listings:read" | "listings:write" | "listings:delete" | "listings:export" | "contacts:read" | "contacts:write" | "contacts:delete" | "contacts:export" | "ownerships:read" | "ownerships:write" | "ownerships:delete" | "reservations:read" | "reservations:write" | "reservations:delete" | "reservations:export" | "reservations:post-journals" | "transactions:read" | "transactions:write" | "transactions:delete" | "transactions:export" | "transactions:post-journals" | "transactions:pay" | "accounts:read" | "accounts:write" | "accounts:delete" | "accounts:export" | "accounts:recalculate" | "tax-rates:read" | "tax-rates:write" | "tax-rates:delete" | "reservation-mappings:read" | "reservation-mappings:write" | "transaction-mappings:read" | "transaction-mappings:write" | "statements:read" | "statements:write" | "statements:delete" | "statements:publish" | "statements:pay" | "statements:export" | "statement-layouts:read" | "reports:read" | "reports:export" | "metrics:read" | "bank-accounts:read" | "bank-accounts:write" | "bank-connections:manage" | "bank-records:read" | "bank-records:write" | "bank-records:delete" | "bank-records:export" | "bank-rules:read" | "bank-rules:write" | "bank-rules:delete" | "bank-rules:execute" | "webhooks:read" | "webhooks:manage" | "webhooks:replay")[];
8299
8251
  }[];
8300
8252
  pagination: {
8301
8253
  /** @default 100 */
@@ -8453,8 +8405,10 @@ export interface operations {
8453
8405
  requestBody?: {
8454
8406
  content: {
8455
8407
  "application/json": {
8456
- /** @description Client-generated API token secret to store. */
8457
- apiToken: string;
8408
+ /** @description Optional IPv4 or IPv6 addresses and CIDRs allowed to use this token. Individual addresses are normalized to /32 or /128. Omit or send an empty array for no IP restriction. */
8409
+ allowedIpCidrs?: string[];
8410
+ /** @description Optional capability restrictions for a partner-owned API token. Omit for unrestricted partner API access. Rejected for ordinary teams. */
8411
+ bundles?: ("embed:exports:v1" | "embed:reports:v1" | "embed:statements:v1" | "partner:accounting-data:v1" | "partner:banking:v1" | "partner:onboarding:v1" | "partner:provisioning:v1" | "partner:reports:v1" | "partner:statements:v1" | "partner:webhooks:v1")[];
8458
8412
  };
8459
8413
  };
8460
8414
  };
@@ -8466,6 +8420,8 @@ export interface operations {
8466
8420
  };
8467
8421
  content: {
8468
8422
  "application/json": {
8423
+ allowedIpCidrs: string[];
8424
+ bundles: ("embed:exports:v1" | "embed:reports:v1" | "embed:statements:v1" | "partner:accounting-data:v1" | "partner:banking:v1" | "partner:onboarding:v1" | "partner:provisioning:v1" | "partner:reports:v1" | "partner:statements:v1" | "partner:webhooks:v1")[];
8469
8425
  /** Format: uuid */
8470
8426
  id: string;
8471
8427
  /**
@@ -8477,6 +8433,8 @@ export interface operations {
8477
8433
  hint: string | null;
8478
8434
  role: string | null;
8479
8435
  scope: string | null;
8436
+ scopes: ("self:read" | "partner:read" | "teams:read" | "teams:provision" | "teams:write" | "teams:delete" | "teams:initialize" | "embedded-sessions:issue" | "team-members:read" | "team-members:manage" | "partner-users:read" | "partner-users:manage" | "partner-memberships:manage" | "team-settings:read" | "team-settings:write" | "team-onboarding:read" | "team-onboarding:write" | "team-issues:read" | "books:close" | "listings:read" | "listings:write" | "listings:delete" | "listings:export" | "contacts:read" | "contacts:write" | "contacts:delete" | "contacts:export" | "ownerships:read" | "ownerships:write" | "ownerships:delete" | "reservations:read" | "reservations:write" | "reservations:delete" | "reservations:export" | "reservations:post-journals" | "transactions:read" | "transactions:write" | "transactions:delete" | "transactions:export" | "transactions:post-journals" | "transactions:pay" | "accounts:read" | "accounts:write" | "accounts:delete" | "accounts:export" | "accounts:recalculate" | "tax-rates:read" | "tax-rates:write" | "tax-rates:delete" | "reservation-mappings:read" | "reservation-mappings:write" | "transaction-mappings:read" | "transaction-mappings:write" | "statements:read" | "statements:write" | "statements:delete" | "statements:publish" | "statements:pay" | "statements:export" | "statement-layouts:read" | "reports:read" | "reports:export" | "metrics:read" | "bank-accounts:read" | "bank-accounts:write" | "bank-connections:manage" | "bank-records:read" | "bank-records:write" | "bank-records:delete" | "bank-records:export" | "bank-rules:read" | "bank-rules:write" | "bank-rules:delete" | "bank-rules:execute" | "webhooks:read" | "webhooks:manage" | "webhooks:replay")[];
8437
+ apiToken: string;
8480
8438
  };
8481
8439
  };
8482
8440
  };
@@ -8632,6 +8590,8 @@ export interface operations {
8632
8590
  };
8633
8591
  content: {
8634
8592
  "application/json": {
8593
+ allowedIpCidrs: string[];
8594
+ bundles: ("embed:exports:v1" | "embed:reports:v1" | "embed:statements:v1" | "partner:accounting-data:v1" | "partner:banking:v1" | "partner:onboarding:v1" | "partner:provisioning:v1" | "partner:reports:v1" | "partner:statements:v1" | "partner:webhooks:v1")[];
8635
8595
  /** Format: uuid */
8636
8596
  id: string;
8637
8597
  /**
@@ -8643,6 +8603,7 @@ export interface operations {
8643
8603
  hint: string | null;
8644
8604
  role: string | null;
8645
8605
  scope: string | null;
8606
+ scopes: ("self:read" | "partner:read" | "teams:read" | "teams:provision" | "teams:write" | "teams:delete" | "teams:initialize" | "embedded-sessions:issue" | "team-members:read" | "team-members:manage" | "partner-users:read" | "partner-users:manage" | "partner-memberships:manage" | "team-settings:read" | "team-settings:write" | "team-onboarding:read" | "team-onboarding:write" | "team-issues:read" | "books:close" | "listings:read" | "listings:write" | "listings:delete" | "listings:export" | "contacts:read" | "contacts:write" | "contacts:delete" | "contacts:export" | "ownerships:read" | "ownerships:write" | "ownerships:delete" | "reservations:read" | "reservations:write" | "reservations:delete" | "reservations:export" | "reservations:post-journals" | "transactions:read" | "transactions:write" | "transactions:delete" | "transactions:export" | "transactions:post-journals" | "transactions:pay" | "accounts:read" | "accounts:write" | "accounts:delete" | "accounts:export" | "accounts:recalculate" | "tax-rates:read" | "tax-rates:write" | "tax-rates:delete" | "reservation-mappings:read" | "reservation-mappings:write" | "transaction-mappings:read" | "transaction-mappings:write" | "statements:read" | "statements:write" | "statements:delete" | "statements:publish" | "statements:pay" | "statements:export" | "statement-layouts:read" | "reports:read" | "reports:export" | "metrics:read" | "bank-accounts:read" | "bank-accounts:write" | "bank-connections:manage" | "bank-records:read" | "bank-records:write" | "bank-records:delete" | "bank-records:export" | "bank-rules:read" | "bank-rules:write" | "bank-rules:delete" | "bank-rules:execute" | "webhooks:read" | "webhooks:manage" | "webhooks:replay")[];
8646
8607
  apiToken: string;
8647
8608
  };
8648
8609
  };
@@ -32303,507 +32264,6 @@ export interface operations {
32303
32264
  };
32304
32265
  };
32305
32266
  };
32306
- createPartnerApiKey: {
32307
- parameters: {
32308
- query?: never;
32309
- header?: never;
32310
- path?: never;
32311
- cookie?: never;
32312
- };
32313
- requestBody?: {
32314
- content: {
32315
- "application/json": {
32316
- /** @enum {string} */
32317
- audience: "hostaway-production" | "hostaway-staging" | "vrplatform-production" | "vrplatform-staging";
32318
- bundles: ("embed:exports:v1" | "embed:reports:v1" | "embed:statements:v1" | "partner:accounting-data:v1" | "partner:banking:v1" | "partner:onboarding:v1" | "partner:provisioning:v1" | "partner:reports:v1" | "partner:statements:v1" | "partner:webhooks:v1")[];
32319
- /** Format: uuid */
32320
- partnerId: string;
32321
- };
32322
- };
32323
- };
32324
- responses: {
32325
- /** @description Successful response */
32326
- 200: {
32327
- headers: {
32328
- [name: string]: unknown;
32329
- };
32330
- content: {
32331
- "application/json": {
32332
- /** @enum {string} */
32333
- audience: "hostaway-production" | "hostaway-staging" | "vrplatform-production" | "vrplatform-staging";
32334
- bundles: ("embed:exports:v1" | "embed:reports:v1" | "embed:statements:v1" | "partner:accounting-data:v1" | "partner:banking:v1" | "partner:onboarding:v1" | "partner:provisioning:v1" | "partner:reports:v1" | "partner:statements:v1" | "partner:webhooks:v1")[];
32335
- /** Format: uuid */
32336
- id: string;
32337
- /** Format: uuid */
32338
- partnerId: string;
32339
- secret: string;
32340
- };
32341
- };
32342
- };
32343
- /** @description Bad request */
32344
- 400: {
32345
- headers: {
32346
- [name: string]: unknown;
32347
- };
32348
- content: {
32349
- "application/json": {
32350
- code: string;
32351
- message: string;
32352
- links?: {
32353
- docs: string;
32354
- schema: string;
32355
- };
32356
- issues?: {
32357
- message: string;
32358
- path?: (string | number)[];
32359
- schema?: string;
32360
- }[];
32361
- context?: unknown;
32362
- };
32363
- };
32364
- };
32365
- /** @description Unauthorized */
32366
- 401: {
32367
- headers: {
32368
- [name: string]: unknown;
32369
- };
32370
- content: {
32371
- "application/json": {
32372
- code: string;
32373
- message: string;
32374
- links?: {
32375
- docs: string;
32376
- schema: string;
32377
- };
32378
- issues?: {
32379
- message: string;
32380
- path?: (string | number)[];
32381
- schema?: string;
32382
- }[];
32383
- context?: unknown;
32384
- };
32385
- };
32386
- };
32387
- /** @description Forbidden */
32388
- 403: {
32389
- headers: {
32390
- [name: string]: unknown;
32391
- };
32392
- content: {
32393
- "application/json": {
32394
- code: string;
32395
- message: string;
32396
- links?: {
32397
- docs: string;
32398
- schema: string;
32399
- };
32400
- issues?: {
32401
- message: string;
32402
- path?: (string | number)[];
32403
- schema?: string;
32404
- }[];
32405
- context?: unknown;
32406
- };
32407
- };
32408
- };
32409
- /** @description Not found */
32410
- 404: {
32411
- headers: {
32412
- [name: string]: unknown;
32413
- };
32414
- content: {
32415
- "application/json": {
32416
- code: string;
32417
- message: string;
32418
- links?: {
32419
- docs: string;
32420
- schema: string;
32421
- };
32422
- issues?: {
32423
- message: string;
32424
- path?: (string | number)[];
32425
- schema?: string;
32426
- }[];
32427
- context?: unknown;
32428
- };
32429
- };
32430
- };
32431
- /** @description Internal server error */
32432
- 500: {
32433
- headers: {
32434
- [name: string]: unknown;
32435
- };
32436
- content: {
32437
- "application/json": {
32438
- code: string;
32439
- message: string;
32440
- links?: {
32441
- docs: string;
32442
- schema: string;
32443
- };
32444
- issues?: {
32445
- message: string;
32446
- path?: (string | number)[];
32447
- schema?: string;
32448
- }[];
32449
- context?: unknown;
32450
- };
32451
- };
32452
- };
32453
- /** @description Service unavailable */
32454
- 503: {
32455
- headers: {
32456
- [name: string]: unknown;
32457
- };
32458
- content: {
32459
- "application/json": {
32460
- code: string;
32461
- message: string;
32462
- links?: {
32463
- docs: string;
32464
- schema: string;
32465
- };
32466
- issues?: {
32467
- message: string;
32468
- path?: (string | number)[];
32469
- schema?: string;
32470
- }[];
32471
- context?: unknown;
32472
- };
32473
- };
32474
- };
32475
- };
32476
- };
32477
- revokePartnerApiKey: {
32478
- parameters: {
32479
- query?: never;
32480
- header?: never;
32481
- path: {
32482
- id: string;
32483
- };
32484
- cookie?: never;
32485
- };
32486
- requestBody?: {
32487
- content: {
32488
- "application/json": Record<string, never>;
32489
- };
32490
- };
32491
- responses: {
32492
- /** @description Successful response */
32493
- 200: {
32494
- headers: {
32495
- [name: string]: unknown;
32496
- };
32497
- content: {
32498
- "application/json": {
32499
- /** Format: uuid */
32500
- id: string;
32501
- /** @constant */
32502
- status: "deleted";
32503
- };
32504
- };
32505
- };
32506
- /** @description Bad request */
32507
- 400: {
32508
- headers: {
32509
- [name: string]: unknown;
32510
- };
32511
- content: {
32512
- "application/json": {
32513
- code: string;
32514
- message: string;
32515
- links?: {
32516
- docs: string;
32517
- schema: string;
32518
- };
32519
- issues?: {
32520
- message: string;
32521
- path?: (string | number)[];
32522
- schema?: string;
32523
- }[];
32524
- context?: unknown;
32525
- };
32526
- };
32527
- };
32528
- /** @description Unauthorized */
32529
- 401: {
32530
- headers: {
32531
- [name: string]: unknown;
32532
- };
32533
- content: {
32534
- "application/json": {
32535
- code: string;
32536
- message: string;
32537
- links?: {
32538
- docs: string;
32539
- schema: string;
32540
- };
32541
- issues?: {
32542
- message: string;
32543
- path?: (string | number)[];
32544
- schema?: string;
32545
- }[];
32546
- context?: unknown;
32547
- };
32548
- };
32549
- };
32550
- /** @description Forbidden */
32551
- 403: {
32552
- headers: {
32553
- [name: string]: unknown;
32554
- };
32555
- content: {
32556
- "application/json": {
32557
- code: string;
32558
- message: string;
32559
- links?: {
32560
- docs: string;
32561
- schema: string;
32562
- };
32563
- issues?: {
32564
- message: string;
32565
- path?: (string | number)[];
32566
- schema?: string;
32567
- }[];
32568
- context?: unknown;
32569
- };
32570
- };
32571
- };
32572
- /** @description Not found */
32573
- 404: {
32574
- headers: {
32575
- [name: string]: unknown;
32576
- };
32577
- content: {
32578
- "application/json": {
32579
- code: string;
32580
- message: string;
32581
- links?: {
32582
- docs: string;
32583
- schema: string;
32584
- };
32585
- issues?: {
32586
- message: string;
32587
- path?: (string | number)[];
32588
- schema?: string;
32589
- }[];
32590
- context?: unknown;
32591
- };
32592
- };
32593
- };
32594
- /** @description Internal server error */
32595
- 500: {
32596
- headers: {
32597
- [name: string]: unknown;
32598
- };
32599
- content: {
32600
- "application/json": {
32601
- code: string;
32602
- message: string;
32603
- links?: {
32604
- docs: string;
32605
- schema: string;
32606
- };
32607
- issues?: {
32608
- message: string;
32609
- path?: (string | number)[];
32610
- schema?: string;
32611
- }[];
32612
- context?: unknown;
32613
- };
32614
- };
32615
- };
32616
- /** @description Service unavailable */
32617
- 503: {
32618
- headers: {
32619
- [name: string]: unknown;
32620
- };
32621
- content: {
32622
- "application/json": {
32623
- code: string;
32624
- message: string;
32625
- links?: {
32626
- docs: string;
32627
- schema: string;
32628
- };
32629
- issues?: {
32630
- message: string;
32631
- path?: (string | number)[];
32632
- schema?: string;
32633
- }[];
32634
- context?: unknown;
32635
- };
32636
- };
32637
- };
32638
- };
32639
- };
32640
- rotatePartnerApiKey: {
32641
- parameters: {
32642
- query?: never;
32643
- header?: never;
32644
- path: {
32645
- id: string;
32646
- };
32647
- cookie?: never;
32648
- };
32649
- requestBody?: {
32650
- content: {
32651
- "application/json": Record<string, never>;
32652
- };
32653
- };
32654
- responses: {
32655
- /** @description Successful response */
32656
- 200: {
32657
- headers: {
32658
- [name: string]: unknown;
32659
- };
32660
- content: {
32661
- "application/json": {
32662
- /** @enum {string} */
32663
- audience: "hostaway-production" | "hostaway-staging" | "vrplatform-production" | "vrplatform-staging";
32664
- bundles: ("embed:exports:v1" | "embed:reports:v1" | "embed:statements:v1" | "partner:accounting-data:v1" | "partner:banking:v1" | "partner:onboarding:v1" | "partner:provisioning:v1" | "partner:reports:v1" | "partner:statements:v1" | "partner:webhooks:v1")[];
32665
- /** Format: uuid */
32666
- id: string;
32667
- /** Format: uuid */
32668
- partnerId: string;
32669
- secret: string;
32670
- };
32671
- };
32672
- };
32673
- /** @description Bad request */
32674
- 400: {
32675
- headers: {
32676
- [name: string]: unknown;
32677
- };
32678
- content: {
32679
- "application/json": {
32680
- code: string;
32681
- message: string;
32682
- links?: {
32683
- docs: string;
32684
- schema: string;
32685
- };
32686
- issues?: {
32687
- message: string;
32688
- path?: (string | number)[];
32689
- schema?: string;
32690
- }[];
32691
- context?: unknown;
32692
- };
32693
- };
32694
- };
32695
- /** @description Unauthorized */
32696
- 401: {
32697
- headers: {
32698
- [name: string]: unknown;
32699
- };
32700
- content: {
32701
- "application/json": {
32702
- code: string;
32703
- message: string;
32704
- links?: {
32705
- docs: string;
32706
- schema: string;
32707
- };
32708
- issues?: {
32709
- message: string;
32710
- path?: (string | number)[];
32711
- schema?: string;
32712
- }[];
32713
- context?: unknown;
32714
- };
32715
- };
32716
- };
32717
- /** @description Forbidden */
32718
- 403: {
32719
- headers: {
32720
- [name: string]: unknown;
32721
- };
32722
- content: {
32723
- "application/json": {
32724
- code: string;
32725
- message: string;
32726
- links?: {
32727
- docs: string;
32728
- schema: string;
32729
- };
32730
- issues?: {
32731
- message: string;
32732
- path?: (string | number)[];
32733
- schema?: string;
32734
- }[];
32735
- context?: unknown;
32736
- };
32737
- };
32738
- };
32739
- /** @description Not found */
32740
- 404: {
32741
- headers: {
32742
- [name: string]: unknown;
32743
- };
32744
- content: {
32745
- "application/json": {
32746
- code: string;
32747
- message: string;
32748
- links?: {
32749
- docs: string;
32750
- schema: string;
32751
- };
32752
- issues?: {
32753
- message: string;
32754
- path?: (string | number)[];
32755
- schema?: string;
32756
- }[];
32757
- context?: unknown;
32758
- };
32759
- };
32760
- };
32761
- /** @description Internal server error */
32762
- 500: {
32763
- headers: {
32764
- [name: string]: unknown;
32765
- };
32766
- content: {
32767
- "application/json": {
32768
- code: string;
32769
- message: string;
32770
- links?: {
32771
- docs: string;
32772
- schema: string;
32773
- };
32774
- issues?: {
32775
- message: string;
32776
- path?: (string | number)[];
32777
- schema?: string;
32778
- }[];
32779
- context?: unknown;
32780
- };
32781
- };
32782
- };
32783
- /** @description Service unavailable */
32784
- 503: {
32785
- headers: {
32786
- [name: string]: unknown;
32787
- };
32788
- content: {
32789
- "application/json": {
32790
- code: string;
32791
- message: string;
32792
- links?: {
32793
- docs: string;
32794
- schema: string;
32795
- };
32796
- issues?: {
32797
- message: string;
32798
- path?: (string | number)[];
32799
- schema?: string;
32800
- }[];
32801
- context?: unknown;
32802
- };
32803
- };
32804
- };
32805
- };
32806
- };
32807
32267
  getInternalUsers: {
32808
32268
  parameters: {
32809
32269
  query?: {