@stridge/openapi 0.2.1 → 0.4.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/types.d.ts CHANGED
@@ -243,7 +243,7 @@ export interface paths {
243
243
  put?: never;
244
244
  /**
245
245
  * Create payout
246
- * @description Create a payout from the tenant's vault wallet to an external address. Provide either `amount` (crypto) or `usd_amount` (converted to crypto at the current rate). Payouts are idempotent by `(vault_id, reference_id)` — resubmitting a `reference_id` returns `409` instead of paying twice.
246
+ * @description Create a payout from the tenant's vault wallet to an external address. Provide either `amount` (crypto) or `usd_amount` (converted to crypto at the current rate). Payouts are idempotent by `(vault_id, reference_id)` — resubmitting a `reference_id` returns `409` instead of paying twice. Set `type` to `forceful` for a single fail-fast attempt — gas is still refilled when needed, but the refill and transfer are each tried once with no retry; the default `normal` refills and retries until `expired_at`.
247
247
  */
248
248
  post: operations["create-payout"];
249
249
  delete?: never;
@@ -372,6 +372,46 @@ export interface paths {
372
372
  patch?: never;
373
373
  trace?: never;
374
374
  };
375
+ "/routing-policies": {
376
+ parameters: {
377
+ query?: never;
378
+ header?: never;
379
+ path?: never;
380
+ cookie?: never;
381
+ };
382
+ /**
383
+ * List routing policies
384
+ * @description List the routing policies configured for your tenant, including the default policy. Read-only — create and edit policies from the dashboard.
385
+ */
386
+ get: operations["list-routing-policies"];
387
+ put?: never;
388
+ post?: never;
389
+ delete?: never;
390
+ options?: never;
391
+ head?: never;
392
+ patch?: never;
393
+ trace?: never;
394
+ };
395
+ "/routing-policies/{id}": {
396
+ parameters: {
397
+ query?: never;
398
+ header?: never;
399
+ path?: never;
400
+ cookie?: never;
401
+ };
402
+ /**
403
+ * Get a routing policy
404
+ * @description Fetch a single routing policy by id.
405
+ */
406
+ get: operations["get-routing-policy"];
407
+ put?: never;
408
+ post?: never;
409
+ delete?: never;
410
+ options?: never;
411
+ head?: never;
412
+ patch?: never;
413
+ trace?: never;
414
+ };
375
415
  }
376
416
  export type webhooks = Record<string, never>;
377
417
  export interface components {
@@ -523,6 +563,11 @@ export interface components {
523
563
  asset_symbol?: string;
524
564
  };
525
565
  }[];
566
+ /**
567
+ * @description Routing policy to attach to this UDA. Omit or send an empty string to attach the tenant's default policy. Per-UDA inline `routing_rules` still take precedence over the policy.
568
+ * @example rpol_2f8c1a9d4e5f6071
569
+ */
570
+ routing_policy_id?: string;
526
571
  };
527
572
  DepositAsset: {
528
573
  /** @example USDC */
@@ -711,6 +756,121 @@ export interface components {
711
756
  asset_decimals?: number;
712
757
  };
713
758
  }[];
759
+ /**
760
+ * @description The routing policy attached to this UDA, when set. Omitted for legacy UDAs that inherit the tenant default policy.
761
+ * @example rpol_2f8c1a9d4e5f6071
762
+ */
763
+ routing_policy_id?: string;
764
+ };
765
+ /** @description A tenant-scoped, ordered routing-policy. Rules are evaluated first-match-wins; an empty rule set falls through to the UDA's default destination. */
766
+ RoutingPolicy: {
767
+ /** @example rpol_2f8c1a9d4e5f6071 */
768
+ id?: string;
769
+ /** @example vip_tier */
770
+ name?: string;
771
+ /**
772
+ * @description Whether this is the tenant's default policy (one per tenant).
773
+ * @example false
774
+ */
775
+ is_default?: boolean;
776
+ /** @description Ordered, first-match-wins routing rules (dual form). */
777
+ rules?: {
778
+ match?: {
779
+ /** @example 60 */
780
+ source_network_id?: string;
781
+ /** @example USDT */
782
+ source_asset_symbol?: string;
783
+ /** @example 0xdAC17F958D2ee523a2206206994597C13D831ec7 */
784
+ source_token_address?: string;
785
+ };
786
+ destination?: {
787
+ /** @example 0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345 */
788
+ address?: string;
789
+ /** @example 60 */
790
+ network_id?: string;
791
+ /** @example 1 */
792
+ eip155_id?: string;
793
+ /** @example Ethereum */
794
+ network_name?: string;
795
+ /** @example USDC */
796
+ asset_symbol?: string;
797
+ /** @example 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 */
798
+ asset_address?: string;
799
+ /** @example 6 */
800
+ asset_decimals?: number;
801
+ };
802
+ }[];
803
+ /**
804
+ * Format: date-time
805
+ * @example 2026-05-20T14:03:12Z
806
+ */
807
+ created_at?: string;
808
+ /**
809
+ * Format: date-time
810
+ * @example 2026-05-20T14:03:12Z
811
+ */
812
+ updated_at?: string;
813
+ };
814
+ RoutingPolicyList: {
815
+ data?: {
816
+ /** @example rpol_2f8c1a9d4e5f6071 */
817
+ id?: string;
818
+ /** @example vip_tier */
819
+ name?: string;
820
+ /**
821
+ * @description Whether this is the tenant's default policy (one per tenant).
822
+ * @example false
823
+ */
824
+ is_default?: boolean;
825
+ /** @description Ordered, first-match-wins routing rules (dual form). */
826
+ rules?: {
827
+ match?: {
828
+ /** @example 60 */
829
+ source_network_id?: string;
830
+ /** @example USDT */
831
+ source_asset_symbol?: string;
832
+ /** @example 0xdAC17F958D2ee523a2206206994597C13D831ec7 */
833
+ source_token_address?: string;
834
+ };
835
+ destination?: {
836
+ /** @example 0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345 */
837
+ address?: string;
838
+ /** @example 60 */
839
+ network_id?: string;
840
+ /** @example 1 */
841
+ eip155_id?: string;
842
+ /** @example Ethereum */
843
+ network_name?: string;
844
+ /** @example USDC */
845
+ asset_symbol?: string;
846
+ /** @example 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 */
847
+ asset_address?: string;
848
+ /** @example 6 */
849
+ asset_decimals?: number;
850
+ };
851
+ }[];
852
+ /**
853
+ * Format: date-time
854
+ * @example 2026-05-20T14:03:12Z
855
+ */
856
+ created_at?: string;
857
+ /**
858
+ * Format: date-time
859
+ * @example 2026-05-20T14:03:12Z
860
+ */
861
+ updated_at?: string;
862
+ }[];
863
+ pagination?: {
864
+ /**
865
+ * @description Number of items in this page.
866
+ * @example 20
867
+ */
868
+ count?: number;
869
+ /** @example 50 */
870
+ limit?: number;
871
+ /** @example 0 */
872
+ offset?: number;
873
+ };
714
874
  };
715
875
  UDAAddressList: {
716
876
  data?: {
@@ -795,6 +955,11 @@ export interface components {
795
955
  asset_decimals?: number;
796
956
  };
797
957
  }[];
958
+ /**
959
+ * @description The routing policy attached to this UDA, when set. Omitted for legacy UDAs that inherit the tenant default policy.
960
+ * @example rpol_2f8c1a9d4e5f6071
961
+ */
962
+ routing_policy_id?: string;
798
963
  }[];
799
964
  pagination?: {
800
965
  /**
@@ -1330,13 +1495,16 @@ export interface components {
1330
1495
  network_name?: string;
1331
1496
  /** @example ETH */
1332
1497
  network_symbol?: string;
1333
- /** @example 1 */
1498
+ /**
1499
+ * @description Chain-specific numeric id: the EIP-155 chain id for EVM networks, or the analogous numeric chain id Stridge uses for non-EVM (TVM, SVM) networks. Always present.
1500
+ * @example 1
1501
+ */
1334
1502
  eip155_id?: number;
1335
1503
  /**
1336
1504
  * @example EVM
1337
1505
  * @enum {string}
1338
1506
  */
1339
- chain_type?: "EVM" | "TVM";
1507
+ chain_type?: "EVM" | "TVM" | "SVM";
1340
1508
  native_currency?: {
1341
1509
  /** @example ETH */
1342
1510
  symbol?: string;
@@ -1376,13 +1544,16 @@ export interface components {
1376
1544
  network_name?: string;
1377
1545
  /** @example ETH */
1378
1546
  network_symbol?: string;
1379
- /** @example 1 */
1547
+ /**
1548
+ * @description Chain-specific numeric id: the EIP-155 chain id for EVM networks, or the analogous numeric chain id Stridge uses for non-EVM (TVM, SVM) networks. Always present.
1549
+ * @example 1
1550
+ */
1380
1551
  eip155_id?: number;
1381
1552
  /**
1382
1553
  * @example EVM
1383
1554
  * @enum {string}
1384
1555
  */
1385
- chain_type?: "EVM" | "TVM";
1556
+ chain_type?: "EVM" | "TVM" | "SVM";
1386
1557
  native_currency?: {
1387
1558
  /** @example ETH */
1388
1559
  symbol?: string;
@@ -1623,7 +1794,8 @@ export interface components {
1623
1794
  * "reference_id": "order-12345",
1624
1795
  * "amount": "100.50",
1625
1796
  * "remark": "Payment for order #12345",
1626
- * "expired_at": "2026-12-31T23:59:59Z"
1797
+ * "type": "normal",
1798
+ * "expired_at": "2026-01-01T01:00:00Z"
1627
1799
  * }
1628
1800
  */
1629
1801
  CreatePayoutRequest: {
@@ -1667,10 +1839,16 @@ export interface components {
1667
1839
  * @example Payment for order #12345
1668
1840
  */
1669
1841
  remark?: string;
1842
+ /**
1843
+ * @description Payout strategy. `normal` (default) refills gas when needed and retries until `expired_at`. `forceful` still refills when needed but is single-attempt — the refill and the transfer are each tried once, with no retry and no `expired_at`; it fails immediately if either can't complete.
1844
+ * @default normal
1845
+ * @enum {string}
1846
+ */
1847
+ type: "normal" | "forceful";
1670
1848
  /**
1671
1849
  * Format: date-time
1672
- * @description Cutoff after which a non-confirmed payout expires.
1673
- * @example 2026-12-31T23:59:59Z
1850
+ * @description Cutoff after which a non-confirmed payout expires. Defaults to 1 hour from creation; capped at 12 hours ahead. Ignored for `forceful` payouts.
1851
+ * @example 2026-01-01T01:00:00Z
1674
1852
  */
1675
1853
  expired_at?: string;
1676
1854
  };
@@ -1704,6 +1882,12 @@ export interface components {
1704
1882
  reference_id?: string;
1705
1883
  /** @example Payment for order #12345 */
1706
1884
  remark?: string;
1885
+ /**
1886
+ * @description Payout strategy the payout was created with.
1887
+ * @example normal
1888
+ * @enum {string}
1889
+ */
1890
+ type?: "normal" | "forceful";
1707
1891
  /**
1708
1892
  * @example confirmed
1709
1893
  * @enum {string}
@@ -1731,7 +1915,7 @@ export interface components {
1731
1915
  confirmed_at?: string;
1732
1916
  /**
1733
1917
  * Format: date-time
1734
- * @example 2026-12-31T23:59:59Z
1918
+ * @example 2026-01-01T01:00:00Z
1735
1919
  */
1736
1920
  expired_at?: string;
1737
1921
  };
@@ -1766,6 +1950,12 @@ export interface components {
1766
1950
  reference_id?: string;
1767
1951
  /** @example Payment for order #12345 */
1768
1952
  remark?: string;
1953
+ /**
1954
+ * @description Payout strategy the payout was created with.
1955
+ * @example normal
1956
+ * @enum {string}
1957
+ */
1958
+ type?: "normal" | "forceful";
1769
1959
  /**
1770
1960
  * @example confirmed
1771
1961
  * @enum {string}
@@ -1793,7 +1983,7 @@ export interface components {
1793
1983
  confirmed_at?: string;
1794
1984
  /**
1795
1985
  * Format: date-time
1796
- * @example 2026-12-31T23:59:59Z
1986
+ * @example 2026-01-01T01:00:00Z
1797
1987
  */
1798
1988
  expired_at?: string;
1799
1989
  };
@@ -1829,6 +2019,12 @@ export interface components {
1829
2019
  reference_id?: string;
1830
2020
  /** @example Payment for order #12345 */
1831
2021
  remark?: string;
2022
+ /**
2023
+ * @description Payout strategy the payout was created with.
2024
+ * @example normal
2025
+ * @enum {string}
2026
+ */
2027
+ type?: "normal" | "forceful";
1832
2028
  /**
1833
2029
  * @example confirmed
1834
2030
  * @enum {string}
@@ -1856,7 +2052,7 @@ export interface components {
1856
2052
  confirmed_at?: string;
1857
2053
  /**
1858
2054
  * Format: date-time
1859
- * @example 2026-12-31T23:59:59Z
2055
+ * @example 2026-01-01T01:00:00Z
1860
2056
  */
1861
2057
  expired_at?: string;
1862
2058
  }[];
@@ -2285,6 +2481,11 @@ export interface operations {
2285
2481
  asset_decimals?: number;
2286
2482
  };
2287
2483
  }[];
2484
+ /**
2485
+ * @description The routing policy attached to this UDA, when set. Omitted for legacy UDAs that inherit the tenant default policy.
2486
+ * @example rpol_2f8c1a9d4e5f6071
2487
+ */
2488
+ routing_policy_id?: string;
2288
2489
  }[];
2289
2490
  pagination?: {
2290
2491
  /**
@@ -2449,6 +2650,11 @@ export interface operations {
2449
2650
  asset_symbol?: string;
2450
2651
  };
2451
2652
  }[];
2653
+ /**
2654
+ * @description Routing policy to attach to this UDA. Omit or send an empty string to attach the tenant's default policy. Per-UDA inline `routing_rules` still take precedence over the policy.
2655
+ * @example rpol_2f8c1a9d4e5f6071
2656
+ */
2657
+ routing_policy_id?: string;
2452
2658
  };
2453
2659
  };
2454
2660
  };
@@ -2541,6 +2747,11 @@ export interface operations {
2541
2747
  asset_decimals?: number;
2542
2748
  };
2543
2749
  }[];
2750
+ /**
2751
+ * @description The routing policy attached to this UDA, when set. Omitted for legacy UDAs that inherit the tenant default policy.
2752
+ * @example rpol_2f8c1a9d4e5f6071
2753
+ */
2754
+ routing_policy_id?: string;
2544
2755
  };
2545
2756
  };
2546
2757
  };
@@ -2632,6 +2843,11 @@ export interface operations {
2632
2843
  asset_decimals?: number;
2633
2844
  };
2634
2845
  }[];
2846
+ /**
2847
+ * @description The routing policy attached to this UDA, when set. Omitted for legacy UDAs that inherit the tenant default policy.
2848
+ * @example rpol_2f8c1a9d4e5f6071
2849
+ */
2850
+ routing_policy_id?: string;
2635
2851
  };
2636
2852
  };
2637
2853
  };
@@ -2890,13 +3106,16 @@ export interface operations {
2890
3106
  network_name?: string;
2891
3107
  /** @example ETH */
2892
3108
  network_symbol?: string;
2893
- /** @example 1 */
3109
+ /**
3110
+ * @description Chain-specific numeric id: the EIP-155 chain id for EVM networks, or the analogous numeric chain id Stridge uses for non-EVM (TVM, SVM) networks. Always present.
3111
+ * @example 1
3112
+ */
2894
3113
  eip155_id?: number;
2895
3114
  /**
2896
3115
  * @example EVM
2897
3116
  * @enum {string}
2898
3117
  */
2899
- chain_type?: "EVM" | "TVM";
3118
+ chain_type?: "EVM" | "TVM" | "SVM";
2900
3119
  native_currency?: {
2901
3120
  /** @example ETH */
2902
3121
  symbol?: string;
@@ -4313,6 +4532,12 @@ export interface operations {
4313
4532
  reference_id?: string;
4314
4533
  /** @example Payment for order #12345 */
4315
4534
  remark?: string;
4535
+ /**
4536
+ * @description Payout strategy the payout was created with.
4537
+ * @example normal
4538
+ * @enum {string}
4539
+ */
4540
+ type?: "normal" | "forceful";
4316
4541
  /**
4317
4542
  * @example confirmed
4318
4543
  * @enum {string}
@@ -4340,7 +4565,7 @@ export interface operations {
4340
4565
  confirmed_at?: string;
4341
4566
  /**
4342
4567
  * Format: date-time
4343
- * @example 2026-12-31T23:59:59Z
4568
+ * @example 2026-01-01T01:00:00Z
4344
4569
  */
4345
4570
  expired_at?: string;
4346
4571
  }[];
@@ -4495,10 +4720,16 @@ export interface operations {
4495
4720
  * @example Payment for order #12345
4496
4721
  */
4497
4722
  remark?: string;
4723
+ /**
4724
+ * @description Payout strategy. `normal` (default) refills gas when needed and retries until `expired_at`. `forceful` still refills when needed but is single-attempt — the refill and the transfer are each tried once, with no retry and no `expired_at`; it fails immediately if either can't complete.
4725
+ * @default normal
4726
+ * @enum {string}
4727
+ */
4728
+ type?: "normal" | "forceful";
4498
4729
  /**
4499
4730
  * Format: date-time
4500
- * @description Cutoff after which a non-confirmed payout expires.
4501
- * @example 2026-12-31T23:59:59Z
4731
+ * @description Cutoff after which a non-confirmed payout expires. Defaults to 1 hour from creation; capped at 12 hours ahead. Ignored for `forceful` payouts.
4732
+ * @example 2026-01-01T01:00:00Z
4502
4733
  */
4503
4734
  expired_at?: string;
4504
4735
  };
@@ -4542,6 +4773,12 @@ export interface operations {
4542
4773
  reference_id?: string;
4543
4774
  /** @example Payment for order #12345 */
4544
4775
  remark?: string;
4776
+ /**
4777
+ * @description Payout strategy the payout was created with.
4778
+ * @example normal
4779
+ * @enum {string}
4780
+ */
4781
+ type?: "normal" | "forceful";
4545
4782
  /**
4546
4783
  * @example confirmed
4547
4784
  * @enum {string}
@@ -4569,7 +4806,7 @@ export interface operations {
4569
4806
  confirmed_at?: string;
4570
4807
  /**
4571
4808
  * Format: date-time
4572
- * @example 2026-12-31T23:59:59Z
4809
+ * @example 2026-01-01T01:00:00Z
4573
4810
  */
4574
4811
  expired_at?: string;
4575
4812
  };
@@ -4762,6 +4999,12 @@ export interface operations {
4762
4999
  reference_id?: string;
4763
5000
  /** @example Payment for order #12345 */
4764
5001
  remark?: string;
5002
+ /**
5003
+ * @description Payout strategy the payout was created with.
5004
+ * @example normal
5005
+ * @enum {string}
5006
+ */
5007
+ type?: "normal" | "forceful";
4765
5008
  /**
4766
5009
  * @example confirmed
4767
5010
  * @enum {string}
@@ -4789,7 +5032,7 @@ export interface operations {
4789
5032
  confirmed_at?: string;
4790
5033
  /**
4791
5034
  * Format: date-time
4792
- * @example 2026-12-31T23:59:59Z
5035
+ * @example 2026-01-01T01:00:00Z
4793
5036
  */
4794
5037
  expired_at?: string;
4795
5038
  }[];
@@ -4942,6 +5185,12 @@ export interface operations {
4942
5185
  reference_id?: string;
4943
5186
  /** @example Payment for order #12345 */
4944
5187
  remark?: string;
5188
+ /**
5189
+ * @description Payout strategy the payout was created with.
5190
+ * @example normal
5191
+ * @enum {string}
5192
+ */
5193
+ type?: "normal" | "forceful";
4945
5194
  /**
4946
5195
  * @example confirmed
4947
5196
  * @enum {string}
@@ -4969,7 +5218,7 @@ export interface operations {
4969
5218
  confirmed_at?: string;
4970
5219
  /**
4971
5220
  * Format: date-time
4972
- * @example 2026-12-31T23:59:59Z
5221
+ * @example 2026-01-01T01:00:00Z
4973
5222
  */
4974
5223
  expired_at?: string;
4975
5224
  };
@@ -5740,4 +5989,333 @@ export interface operations {
5740
5989
  };
5741
5990
  };
5742
5991
  };
5992
+ "list-routing-policies": {
5993
+ parameters: {
5994
+ query?: {
5995
+ /** @description Page size (default 50, max 200). */
5996
+ limit?: number;
5997
+ /** @description Number of items to skip (default 0). */
5998
+ offset?: number;
5999
+ };
6000
+ header?: never;
6001
+ path?: never;
6002
+ cookie?: never;
6003
+ };
6004
+ requestBody?: never;
6005
+ responses: {
6006
+ /** @description A page of routing policies. */
6007
+ 200: {
6008
+ headers: {
6009
+ [name: string]: unknown;
6010
+ };
6011
+ content: {
6012
+ "application/json": {
6013
+ data?: {
6014
+ /** @example rpol_2f8c1a9d4e5f6071 */
6015
+ id?: string;
6016
+ /** @example vip_tier */
6017
+ name?: string;
6018
+ /**
6019
+ * @description Whether this is the tenant's default policy (one per tenant).
6020
+ * @example false
6021
+ */
6022
+ is_default?: boolean;
6023
+ /** @description Ordered, first-match-wins routing rules (dual form). */
6024
+ rules?: {
6025
+ match?: {
6026
+ /** @example 60 */
6027
+ source_network_id?: string;
6028
+ /** @example USDT */
6029
+ source_asset_symbol?: string;
6030
+ /** @example 0xdAC17F958D2ee523a2206206994597C13D831ec7 */
6031
+ source_token_address?: string;
6032
+ };
6033
+ destination?: {
6034
+ /** @example 0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345 */
6035
+ address?: string;
6036
+ /** @example 60 */
6037
+ network_id?: string;
6038
+ /** @example 1 */
6039
+ eip155_id?: string;
6040
+ /** @example Ethereum */
6041
+ network_name?: string;
6042
+ /** @example USDC */
6043
+ asset_symbol?: string;
6044
+ /** @example 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 */
6045
+ asset_address?: string;
6046
+ /** @example 6 */
6047
+ asset_decimals?: number;
6048
+ };
6049
+ }[];
6050
+ /**
6051
+ * Format: date-time
6052
+ * @example 2026-05-20T14:03:12Z
6053
+ */
6054
+ created_at?: string;
6055
+ /**
6056
+ * Format: date-time
6057
+ * @example 2026-05-20T14:03:12Z
6058
+ */
6059
+ updated_at?: string;
6060
+ }[];
6061
+ pagination?: {
6062
+ /**
6063
+ * @description Number of items in this page.
6064
+ * @example 20
6065
+ */
6066
+ count?: number;
6067
+ /** @example 50 */
6068
+ limit?: number;
6069
+ /** @example 0 */
6070
+ offset?: number;
6071
+ };
6072
+ };
6073
+ };
6074
+ };
6075
+ /** @description The request was malformed or failed validation. */
6076
+ 400: {
6077
+ headers: {
6078
+ [name: string]: unknown;
6079
+ };
6080
+ content: {
6081
+ /**
6082
+ * @example {
6083
+ * "success": false,
6084
+ * "code": 400,
6085
+ * "error": "invalid request"
6086
+ * }
6087
+ */
6088
+ "application/json": {
6089
+ /** @example false */
6090
+ success: boolean;
6091
+ /**
6092
+ * @description HTTP status code echoed in the body.
6093
+ * @example 400
6094
+ */
6095
+ code?: number;
6096
+ /**
6097
+ * @description Human-readable error message.
6098
+ * @example invalid request
6099
+ */
6100
+ error: string;
6101
+ };
6102
+ };
6103
+ };
6104
+ /** @description The `X-API-Key` header is missing or invalid. */
6105
+ 401: {
6106
+ headers: {
6107
+ [name: string]: unknown;
6108
+ };
6109
+ content: {
6110
+ /**
6111
+ * @example {
6112
+ * "success": false,
6113
+ * "code": 401,
6114
+ * "error": "unauthenticated"
6115
+ * }
6116
+ */
6117
+ "application/json": {
6118
+ /** @example false */
6119
+ success: boolean;
6120
+ /**
6121
+ * @description HTTP status code echoed in the body.
6122
+ * @example 400
6123
+ */
6124
+ code?: number;
6125
+ /**
6126
+ * @description Human-readable error message.
6127
+ * @example invalid request
6128
+ */
6129
+ error: string;
6130
+ };
6131
+ };
6132
+ };
6133
+ /** @description An unexpected error occurred on the server. */
6134
+ 500: {
6135
+ headers: {
6136
+ [name: string]: unknown;
6137
+ };
6138
+ content: {
6139
+ /**
6140
+ * @example {
6141
+ * "success": false,
6142
+ * "code": 500,
6143
+ * "error": "internal server error"
6144
+ * }
6145
+ */
6146
+ "application/json": {
6147
+ /** @example false */
6148
+ success: boolean;
6149
+ /**
6150
+ * @description HTTP status code echoed in the body.
6151
+ * @example 400
6152
+ */
6153
+ code?: number;
6154
+ /**
6155
+ * @description Human-readable error message.
6156
+ * @example invalid request
6157
+ */
6158
+ error: string;
6159
+ };
6160
+ };
6161
+ };
6162
+ };
6163
+ };
6164
+ "get-routing-policy": {
6165
+ parameters: {
6166
+ query?: never;
6167
+ header?: never;
6168
+ path: {
6169
+ /** @description Routing policy id. */
6170
+ id: string;
6171
+ };
6172
+ cookie?: never;
6173
+ };
6174
+ requestBody?: never;
6175
+ responses: {
6176
+ /** @description The routing policy. */
6177
+ 200: {
6178
+ headers: {
6179
+ [name: string]: unknown;
6180
+ };
6181
+ content: {
6182
+ "application/json": {
6183
+ /** @example rpol_2f8c1a9d4e5f6071 */
6184
+ id?: string;
6185
+ /** @example vip_tier */
6186
+ name?: string;
6187
+ /**
6188
+ * @description Whether this is the tenant's default policy (one per tenant).
6189
+ * @example false
6190
+ */
6191
+ is_default?: boolean;
6192
+ /** @description Ordered, first-match-wins routing rules (dual form). */
6193
+ rules?: {
6194
+ match?: {
6195
+ /** @example 60 */
6196
+ source_network_id?: string;
6197
+ /** @example USDT */
6198
+ source_asset_symbol?: string;
6199
+ /** @example 0xdAC17F958D2ee523a2206206994597C13D831ec7 */
6200
+ source_token_address?: string;
6201
+ };
6202
+ destination?: {
6203
+ /** @example 0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345 */
6204
+ address?: string;
6205
+ /** @example 60 */
6206
+ network_id?: string;
6207
+ /** @example 1 */
6208
+ eip155_id?: string;
6209
+ /** @example Ethereum */
6210
+ network_name?: string;
6211
+ /** @example USDC */
6212
+ asset_symbol?: string;
6213
+ /** @example 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 */
6214
+ asset_address?: string;
6215
+ /** @example 6 */
6216
+ asset_decimals?: number;
6217
+ };
6218
+ }[];
6219
+ /**
6220
+ * Format: date-time
6221
+ * @example 2026-05-20T14:03:12Z
6222
+ */
6223
+ created_at?: string;
6224
+ /**
6225
+ * Format: date-time
6226
+ * @example 2026-05-20T14:03:12Z
6227
+ */
6228
+ updated_at?: string;
6229
+ };
6230
+ };
6231
+ };
6232
+ /** @description The `X-API-Key` header is missing or invalid. */
6233
+ 401: {
6234
+ headers: {
6235
+ [name: string]: unknown;
6236
+ };
6237
+ content: {
6238
+ /**
6239
+ * @example {
6240
+ * "success": false,
6241
+ * "code": 401,
6242
+ * "error": "unauthenticated"
6243
+ * }
6244
+ */
6245
+ "application/json": {
6246
+ /** @example false */
6247
+ success: boolean;
6248
+ /**
6249
+ * @description HTTP status code echoed in the body.
6250
+ * @example 400
6251
+ */
6252
+ code?: number;
6253
+ /**
6254
+ * @description Human-readable error message.
6255
+ * @example invalid request
6256
+ */
6257
+ error: string;
6258
+ };
6259
+ };
6260
+ };
6261
+ /** @description The requested resource does not exist. */
6262
+ 404: {
6263
+ headers: {
6264
+ [name: string]: unknown;
6265
+ };
6266
+ content: {
6267
+ /**
6268
+ * @example {
6269
+ * "success": false,
6270
+ * "code": 404,
6271
+ * "error": "not found"
6272
+ * }
6273
+ */
6274
+ "application/json": {
6275
+ /** @example false */
6276
+ success: boolean;
6277
+ /**
6278
+ * @description HTTP status code echoed in the body.
6279
+ * @example 400
6280
+ */
6281
+ code?: number;
6282
+ /**
6283
+ * @description Human-readable error message.
6284
+ * @example invalid request
6285
+ */
6286
+ error: string;
6287
+ };
6288
+ };
6289
+ };
6290
+ /** @description An unexpected error occurred on the server. */
6291
+ 500: {
6292
+ headers: {
6293
+ [name: string]: unknown;
6294
+ };
6295
+ content: {
6296
+ /**
6297
+ * @example {
6298
+ * "success": false,
6299
+ * "code": 500,
6300
+ * "error": "internal server error"
6301
+ * }
6302
+ */
6303
+ "application/json": {
6304
+ /** @example false */
6305
+ success: boolean;
6306
+ /**
6307
+ * @description HTTP status code echoed in the body.
6308
+ * @example 400
6309
+ */
6310
+ code?: number;
6311
+ /**
6312
+ * @description Human-readable error message.
6313
+ * @example invalid request
6314
+ */
6315
+ error: string;
6316
+ };
6317
+ };
6318
+ };
6319
+ };
6320
+ };
5743
6321
  }