@stridge/openapi 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.
@@ -0,0 +1,4477 @@
1
+ {
2
+ "openapi": "3.1.0",
3
+ "info": {
4
+ "title": "Stridge API",
5
+ "version": "1.0.0",
6
+ "summary": "Public REST API for Stridge Universal Deposit Addresses (UDA).",
7
+ "description": "The Stridge API lets you allocate **Universal Deposit Addresses (UDA)** — cross-chain deposit addresses that route any incoming deposit to a destination you control — fetch indicative cross-chain/cross-asset quotes, and track the settlements those deposits produce.\n\n## Authentication\n\nAuthenticate by sending your secret API key in the `X-API-Key` header on every request. Two endpoints are public and need no key: `GET /uda/quote` and `GET /uda/supported-assets`. All other endpoints require a key.\n\n``` X-API-Key: sk_live_8f3c2b1a9d4e5f60718293a4b5c6d7e8 ```\n\nKeep your secret key on the server. Never embed it in a browser bundle, mobile app, or any client you ship to users.\n\n## Base URLs\n\n| Environment | Base URL | | --- | --- | | Production | `https://api.stridge.com/v1` | | Sandbox | `https://api.stridge.dev/v1` |\n\nAll paths in this reference are relative to the selected base URL — e.g. `POST /uda` is `POST https://api.stridge.com/v1/uda`.\n\n## Conventions\n\nAmounts are integer strings in the asset's smallest unit (e.g. `wei`, USDC `\"1000000\"` = 1 USDC). List endpoints paginate with `limit` (default 50, max 200) and `offset`, and return a `pagination` object. Errors return a consistent JSON envelope (see the `Error` schema).\n",
8
+ "contact": {
9
+ "name": "Stridge Developer Support",
10
+ "url": "https://stridge.com"
11
+ }
12
+ },
13
+ "servers": [
14
+ {
15
+ "url": "https://api.stridge.com/v1",
16
+ "description": "Production"
17
+ },
18
+ {
19
+ "url": "https://api.stridge.dev/v1",
20
+ "description": "Sandbox"
21
+ }
22
+ ],
23
+ "tags": [
24
+ {
25
+ "name": "UDA",
26
+ "description": "Universal Deposit Addresses — allocate cross-chain deposit addresses, fetch indicative quotes, and track settlements.\n"
27
+ }
28
+ ],
29
+ "paths": {
30
+ "/uda": {
31
+ "get": {
32
+ "operationId": "list-uda-addresses",
33
+ "tags": [
34
+ "UDA"
35
+ ],
36
+ "summary": "List UDA addresses",
37
+ "description": "List the Universal Deposit Addresses configured for your tenant. The tuple `(owner, network_id, to_address, asset_symbol)` uniquely identifies a UDA; pass any subset to filter. `to_address` and `asset_symbol` each require `network_id`.\n",
38
+ "security": [
39
+ {
40
+ "ApiKeyAuth": []
41
+ }
42
+ ],
43
+ "parameters": [
44
+ {
45
+ "name": "owner",
46
+ "in": "query",
47
+ "description": "Filter by owner.",
48
+ "schema": {
49
+ "type": "string"
50
+ }
51
+ },
52
+ {
53
+ "name": "network_id",
54
+ "in": "query",
55
+ "description": "Filter by destination network id.",
56
+ "schema": {
57
+ "type": "string"
58
+ }
59
+ },
60
+ {
61
+ "name": "to_address",
62
+ "in": "query",
63
+ "description": "Filter by destination address.",
64
+ "schema": {
65
+ "type": "string"
66
+ }
67
+ },
68
+ {
69
+ "name": "asset_symbol",
70
+ "in": "query",
71
+ "description": "Filter by destination asset symbol (requires network_id).",
72
+ "schema": {
73
+ "type": "string"
74
+ }
75
+ },
76
+ {
77
+ "name": "status",
78
+ "in": "query",
79
+ "description": "Filter by status.",
80
+ "schema": {
81
+ "type": "string",
82
+ "enum": [
83
+ "active",
84
+ "retired"
85
+ ]
86
+ }
87
+ },
88
+ {
89
+ "name": "limit",
90
+ "in": "query",
91
+ "description": "Page size (default 50, max 200).",
92
+ "schema": {
93
+ "type": "integer",
94
+ "default": 50,
95
+ "minimum": 1,
96
+ "maximum": 200
97
+ }
98
+ },
99
+ {
100
+ "name": "offset",
101
+ "in": "query",
102
+ "description": "Number of items to skip (default 0).",
103
+ "schema": {
104
+ "type": "integer",
105
+ "default": 0,
106
+ "minimum": 0
107
+ }
108
+ }
109
+ ],
110
+ "responses": {
111
+ "200": {
112
+ "description": "A page of UDA addresses.",
113
+ "content": {
114
+ "application/json": {
115
+ "schema": {
116
+ "type": "object",
117
+ "properties": {
118
+ "data": {
119
+ "type": "array",
120
+ "items": {
121
+ "type": "object",
122
+ "properties": {
123
+ "id": {
124
+ "type": "string",
125
+ "example": "uda_2f8c1a9d4e5f6071"
126
+ },
127
+ "owner": {
128
+ "type": "string",
129
+ "example": "0x9f8e7d6c5b4a39281706f5e4d3c2b1a098765432"
130
+ },
131
+ "status": {
132
+ "type": "string",
133
+ "enum": [
134
+ "active",
135
+ "retired"
136
+ ],
137
+ "example": "active"
138
+ },
139
+ "created_at": {
140
+ "type": "string",
141
+ "format": "date-time",
142
+ "example": "2026-05-20T14:03:12Z"
143
+ },
144
+ "destination": {
145
+ "type": "object",
146
+ "description": "Resolved destination (symbol plus the resolved contract address).",
147
+ "properties": {
148
+ "address": {
149
+ "type": "string",
150
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
151
+ },
152
+ "network_id": {
153
+ "type": "string",
154
+ "example": "60"
155
+ },
156
+ "eip155_id": {
157
+ "type": "string",
158
+ "example": "1"
159
+ },
160
+ "network_name": {
161
+ "type": "string",
162
+ "example": "Ethereum"
163
+ },
164
+ "asset_symbol": {
165
+ "type": "string",
166
+ "example": "USDC"
167
+ },
168
+ "asset_address": {
169
+ "type": "string",
170
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
171
+ },
172
+ "asset_decimals": {
173
+ "type": "integer",
174
+ "example": 6
175
+ }
176
+ }
177
+ },
178
+ "deposit_addresses": {
179
+ "type": "array",
180
+ "items": {
181
+ "type": "object",
182
+ "description": "A per-chain address a depositor can send funds to.",
183
+ "properties": {
184
+ "address": {
185
+ "type": "string",
186
+ "example": "0x7c2d9a1b3e4f5061728394a5b6c7d8e9f0a1b2c3"
187
+ },
188
+ "network_id": {
189
+ "type": "string",
190
+ "example": "60"
191
+ },
192
+ "eip155_id": {
193
+ "type": "string",
194
+ "example": "1"
195
+ },
196
+ "network_name": {
197
+ "type": "string",
198
+ "example": "Ethereum"
199
+ },
200
+ "accepted_assets": {
201
+ "type": "array",
202
+ "items": {
203
+ "type": "object",
204
+ "properties": {
205
+ "symbol": {
206
+ "type": "string",
207
+ "example": "USDC"
208
+ },
209
+ "address": {
210
+ "type": "string",
211
+ "description": "Token contract address (zero address for native).",
212
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
213
+ },
214
+ "decimals": {
215
+ "type": "integer",
216
+ "example": 6
217
+ },
218
+ "logo": {
219
+ "type": "string",
220
+ "example": "https://assets.stridge.com/tokens/usdc.png"
221
+ }
222
+ }
223
+ }
224
+ }
225
+ }
226
+ }
227
+ },
228
+ "routing_rules": {
229
+ "type": "array",
230
+ "description": "Empty when no rules are configured.",
231
+ "items": {
232
+ "type": "object",
233
+ "description": "An echoed routing rule in dual form (symbol plus resolved contract address).",
234
+ "properties": {
235
+ "match": {
236
+ "type": "object",
237
+ "properties": {
238
+ "source_network_id": {
239
+ "type": "string",
240
+ "example": "60"
241
+ },
242
+ "source_asset_symbol": {
243
+ "type": "string",
244
+ "example": "USDT"
245
+ },
246
+ "source_token_address": {
247
+ "type": "string",
248
+ "example": "0xdAC17F958D2ee523a2206206994597C13D831ec7"
249
+ }
250
+ }
251
+ },
252
+ "destination": {
253
+ "type": "object",
254
+ "properties": {
255
+ "address": {
256
+ "type": "string",
257
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
258
+ },
259
+ "network_id": {
260
+ "type": "string",
261
+ "example": "60"
262
+ },
263
+ "eip155_id": {
264
+ "type": "string",
265
+ "example": "1"
266
+ },
267
+ "network_name": {
268
+ "type": "string",
269
+ "example": "Ethereum"
270
+ },
271
+ "asset_symbol": {
272
+ "type": "string",
273
+ "example": "USDC"
274
+ },
275
+ "asset_address": {
276
+ "type": "string",
277
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
278
+ },
279
+ "asset_decimals": {
280
+ "type": "integer",
281
+ "example": 6
282
+ }
283
+ }
284
+ }
285
+ }
286
+ }
287
+ }
288
+ }
289
+ }
290
+ },
291
+ "pagination": {
292
+ "type": "object",
293
+ "properties": {
294
+ "count": {
295
+ "type": "integer",
296
+ "description": "Number of items in this page.",
297
+ "example": 20
298
+ },
299
+ "limit": {
300
+ "type": "integer",
301
+ "example": 50
302
+ },
303
+ "offset": {
304
+ "type": "integer",
305
+ "example": 0
306
+ }
307
+ }
308
+ }
309
+ }
310
+ }
311
+ }
312
+ }
313
+ },
314
+ "400": {
315
+ "description": "The request was malformed or failed validation.",
316
+ "content": {
317
+ "application/json": {
318
+ "schema": {
319
+ "type": "object",
320
+ "description": "Canonical error envelope returned by every endpoint on failure.",
321
+ "properties": {
322
+ "success": {
323
+ "type": "boolean",
324
+ "example": false
325
+ },
326
+ "code": {
327
+ "type": "integer",
328
+ "description": "HTTP status code echoed in the body.",
329
+ "example": 400
330
+ },
331
+ "error": {
332
+ "type": "string",
333
+ "description": "Human-readable error message.",
334
+ "example": "invalid request"
335
+ }
336
+ },
337
+ "required": [
338
+ "success",
339
+ "error"
340
+ ]
341
+ },
342
+ "example": {
343
+ "success": false,
344
+ "code": 400,
345
+ "error": "invalid request"
346
+ }
347
+ }
348
+ }
349
+ },
350
+ "401": {
351
+ "description": "The `X-API-Key` header is missing or invalid.",
352
+ "content": {
353
+ "application/json": {
354
+ "schema": {
355
+ "type": "object",
356
+ "description": "Canonical error envelope returned by every endpoint on failure.",
357
+ "properties": {
358
+ "success": {
359
+ "type": "boolean",
360
+ "example": false
361
+ },
362
+ "code": {
363
+ "type": "integer",
364
+ "description": "HTTP status code echoed in the body.",
365
+ "example": 400
366
+ },
367
+ "error": {
368
+ "type": "string",
369
+ "description": "Human-readable error message.",
370
+ "example": "invalid request"
371
+ }
372
+ },
373
+ "required": [
374
+ "success",
375
+ "error"
376
+ ]
377
+ },
378
+ "example": {
379
+ "success": false,
380
+ "code": 401,
381
+ "error": "unauthenticated"
382
+ }
383
+ }
384
+ }
385
+ },
386
+ "500": {
387
+ "description": "An unexpected error occurred on the server.",
388
+ "content": {
389
+ "application/json": {
390
+ "schema": {
391
+ "type": "object",
392
+ "description": "Canonical error envelope returned by every endpoint on failure.",
393
+ "properties": {
394
+ "success": {
395
+ "type": "boolean",
396
+ "example": false
397
+ },
398
+ "code": {
399
+ "type": "integer",
400
+ "description": "HTTP status code echoed in the body.",
401
+ "example": 400
402
+ },
403
+ "error": {
404
+ "type": "string",
405
+ "description": "Human-readable error message.",
406
+ "example": "invalid request"
407
+ }
408
+ },
409
+ "required": [
410
+ "success",
411
+ "error"
412
+ ]
413
+ },
414
+ "example": {
415
+ "success": false,
416
+ "code": 500,
417
+ "error": "internal server error"
418
+ }
419
+ }
420
+ }
421
+ }
422
+ }
423
+ },
424
+ "post": {
425
+ "operationId": "create-uda-address",
426
+ "tags": [
427
+ "UDA"
428
+ ],
429
+ "summary": "Create a UDA address",
430
+ "description": "Allocate a new Universal Deposit Address for your tenant. If a UDA for the `(tenant, owner)` pair already exists, the existing record is returned with `200` instead of an error. `accepted_assets` is a list of asset symbols (e.g. `[\"USDC\", \"USDT\"]`); if empty, the UDA accepts every asset configured on every UDA-supported chain.\n",
431
+ "security": [
432
+ {
433
+ "ApiKeyAuth": []
434
+ }
435
+ ],
436
+ "requestBody": {
437
+ "required": true,
438
+ "description": "UDA address configuration.",
439
+ "content": {
440
+ "application/json": {
441
+ "schema": {
442
+ "type": "object",
443
+ "properties": {
444
+ "owner": {
445
+ "type": "string",
446
+ "description": "The owner the UDA is allocated for.",
447
+ "example": "0x9f8e7d6c5b4a39281706f5e4d3c2b1a098765432"
448
+ },
449
+ "destination": {
450
+ "type": "object",
451
+ "description": "Where settlements for this UDA should be delivered.",
452
+ "properties": {
453
+ "address": {
454
+ "type": "string",
455
+ "description": "Destination wallet address.",
456
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
457
+ },
458
+ "network_id": {
459
+ "type": "string",
460
+ "description": "Destination SLIP-44 network id.",
461
+ "example": "60"
462
+ },
463
+ "asset_symbol": {
464
+ "type": "string",
465
+ "description": "Destination asset symbol.",
466
+ "example": "USDC"
467
+ }
468
+ },
469
+ "required": [
470
+ "address",
471
+ "network_id"
472
+ ]
473
+ },
474
+ "accepted_assets": {
475
+ "type": "array",
476
+ "items": {
477
+ "type": "string"
478
+ },
479
+ "description": "Asset symbols this UDA accepts; empty means every asset on every UDA-supported chain.",
480
+ "example": [
481
+ "USDC",
482
+ "USDT"
483
+ ]
484
+ },
485
+ "routing_rules": {
486
+ "type": "array",
487
+ "items": {
488
+ "type": "object",
489
+ "properties": {
490
+ "match": {
491
+ "type": "object",
492
+ "description": "Conditions a deposit must meet for this routing rule to apply.",
493
+ "properties": {
494
+ "source_network_id": {
495
+ "type": "string",
496
+ "example": "60"
497
+ },
498
+ "source_asset_symbol": {
499
+ "type": "string",
500
+ "example": "USDT"
501
+ }
502
+ },
503
+ "required": [
504
+ "source_network_id"
505
+ ]
506
+ },
507
+ "destination": {
508
+ "type": "object",
509
+ "properties": {
510
+ "address": {
511
+ "type": "string",
512
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
513
+ },
514
+ "network_id": {
515
+ "type": "string",
516
+ "example": "60"
517
+ },
518
+ "asset_symbol": {
519
+ "type": "string",
520
+ "example": "USDC"
521
+ }
522
+ },
523
+ "required": [
524
+ "address",
525
+ "network_id"
526
+ ]
527
+ }
528
+ },
529
+ "required": [
530
+ "match",
531
+ "destination"
532
+ ]
533
+ },
534
+ "description": "Optional; max 3. Specificity-wins precedence: a rule pinning both `source_network_id` and `source_asset_symbol` beats a network-only rule. When nothing matches, settlements use the default destination.\n"
535
+ }
536
+ },
537
+ "required": [
538
+ "owner",
539
+ "destination"
540
+ ],
541
+ "example": {
542
+ "owner": "0x9f8e7d6c5b4a39281706f5e4d3c2b1a098765432",
543
+ "destination": {
544
+ "address": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345",
545
+ "network_id": "60",
546
+ "asset_symbol": "USDC"
547
+ },
548
+ "accepted_assets": [
549
+ "USDC",
550
+ "USDT"
551
+ ]
552
+ }
553
+ }
554
+ }
555
+ }
556
+ },
557
+ "responses": {
558
+ "200": {
559
+ "description": "An existing UDA address for the `(tenant, owner)` pair was returned.",
560
+ "content": {
561
+ "application/json": {
562
+ "schema": {
563
+ "type": "object",
564
+ "properties": {
565
+ "id": {
566
+ "type": "string",
567
+ "example": "uda_2f8c1a9d4e5f6071"
568
+ },
569
+ "owner": {
570
+ "type": "string",
571
+ "example": "0x9f8e7d6c5b4a39281706f5e4d3c2b1a098765432"
572
+ },
573
+ "status": {
574
+ "type": "string",
575
+ "enum": [
576
+ "active",
577
+ "retired"
578
+ ],
579
+ "example": "active"
580
+ },
581
+ "created_at": {
582
+ "type": "string",
583
+ "format": "date-time",
584
+ "example": "2026-05-20T14:03:12Z"
585
+ },
586
+ "destination": {
587
+ "type": "object",
588
+ "description": "Resolved destination (symbol plus the resolved contract address).",
589
+ "properties": {
590
+ "address": {
591
+ "type": "string",
592
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
593
+ },
594
+ "network_id": {
595
+ "type": "string",
596
+ "example": "60"
597
+ },
598
+ "eip155_id": {
599
+ "type": "string",
600
+ "example": "1"
601
+ },
602
+ "network_name": {
603
+ "type": "string",
604
+ "example": "Ethereum"
605
+ },
606
+ "asset_symbol": {
607
+ "type": "string",
608
+ "example": "USDC"
609
+ },
610
+ "asset_address": {
611
+ "type": "string",
612
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
613
+ },
614
+ "asset_decimals": {
615
+ "type": "integer",
616
+ "example": 6
617
+ }
618
+ }
619
+ },
620
+ "deposit_addresses": {
621
+ "type": "array",
622
+ "items": {
623
+ "type": "object",
624
+ "description": "A per-chain address a depositor can send funds to.",
625
+ "properties": {
626
+ "address": {
627
+ "type": "string",
628
+ "example": "0x7c2d9a1b3e4f5061728394a5b6c7d8e9f0a1b2c3"
629
+ },
630
+ "network_id": {
631
+ "type": "string",
632
+ "example": "60"
633
+ },
634
+ "eip155_id": {
635
+ "type": "string",
636
+ "example": "1"
637
+ },
638
+ "network_name": {
639
+ "type": "string",
640
+ "example": "Ethereum"
641
+ },
642
+ "accepted_assets": {
643
+ "type": "array",
644
+ "items": {
645
+ "type": "object",
646
+ "properties": {
647
+ "symbol": {
648
+ "type": "string",
649
+ "example": "USDC"
650
+ },
651
+ "address": {
652
+ "type": "string",
653
+ "description": "Token contract address (zero address for native).",
654
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
655
+ },
656
+ "decimals": {
657
+ "type": "integer",
658
+ "example": 6
659
+ },
660
+ "logo": {
661
+ "type": "string",
662
+ "example": "https://assets.stridge.com/tokens/usdc.png"
663
+ }
664
+ }
665
+ }
666
+ }
667
+ }
668
+ }
669
+ },
670
+ "routing_rules": {
671
+ "type": "array",
672
+ "description": "Empty when no rules are configured.",
673
+ "items": {
674
+ "type": "object",
675
+ "description": "An echoed routing rule in dual form (symbol plus resolved contract address).",
676
+ "properties": {
677
+ "match": {
678
+ "type": "object",
679
+ "properties": {
680
+ "source_network_id": {
681
+ "type": "string",
682
+ "example": "60"
683
+ },
684
+ "source_asset_symbol": {
685
+ "type": "string",
686
+ "example": "USDT"
687
+ },
688
+ "source_token_address": {
689
+ "type": "string",
690
+ "example": "0xdAC17F958D2ee523a2206206994597C13D831ec7"
691
+ }
692
+ }
693
+ },
694
+ "destination": {
695
+ "type": "object",
696
+ "properties": {
697
+ "address": {
698
+ "type": "string",
699
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
700
+ },
701
+ "network_id": {
702
+ "type": "string",
703
+ "example": "60"
704
+ },
705
+ "eip155_id": {
706
+ "type": "string",
707
+ "example": "1"
708
+ },
709
+ "network_name": {
710
+ "type": "string",
711
+ "example": "Ethereum"
712
+ },
713
+ "asset_symbol": {
714
+ "type": "string",
715
+ "example": "USDC"
716
+ },
717
+ "asset_address": {
718
+ "type": "string",
719
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
720
+ },
721
+ "asset_decimals": {
722
+ "type": "integer",
723
+ "example": 6
724
+ }
725
+ }
726
+ }
727
+ }
728
+ }
729
+ }
730
+ }
731
+ }
732
+ }
733
+ }
734
+ },
735
+ "201": {
736
+ "description": "A new UDA address was created.",
737
+ "content": {
738
+ "application/json": {
739
+ "schema": {
740
+ "type": "object",
741
+ "properties": {
742
+ "id": {
743
+ "type": "string",
744
+ "example": "uda_2f8c1a9d4e5f6071"
745
+ },
746
+ "owner": {
747
+ "type": "string",
748
+ "example": "0x9f8e7d6c5b4a39281706f5e4d3c2b1a098765432"
749
+ },
750
+ "status": {
751
+ "type": "string",
752
+ "enum": [
753
+ "active",
754
+ "retired"
755
+ ],
756
+ "example": "active"
757
+ },
758
+ "created_at": {
759
+ "type": "string",
760
+ "format": "date-time",
761
+ "example": "2026-05-20T14:03:12Z"
762
+ },
763
+ "destination": {
764
+ "type": "object",
765
+ "description": "Resolved destination (symbol plus the resolved contract address).",
766
+ "properties": {
767
+ "address": {
768
+ "type": "string",
769
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
770
+ },
771
+ "network_id": {
772
+ "type": "string",
773
+ "example": "60"
774
+ },
775
+ "eip155_id": {
776
+ "type": "string",
777
+ "example": "1"
778
+ },
779
+ "network_name": {
780
+ "type": "string",
781
+ "example": "Ethereum"
782
+ },
783
+ "asset_symbol": {
784
+ "type": "string",
785
+ "example": "USDC"
786
+ },
787
+ "asset_address": {
788
+ "type": "string",
789
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
790
+ },
791
+ "asset_decimals": {
792
+ "type": "integer",
793
+ "example": 6
794
+ }
795
+ }
796
+ },
797
+ "deposit_addresses": {
798
+ "type": "array",
799
+ "items": {
800
+ "type": "object",
801
+ "description": "A per-chain address a depositor can send funds to.",
802
+ "properties": {
803
+ "address": {
804
+ "type": "string",
805
+ "example": "0x7c2d9a1b3e4f5061728394a5b6c7d8e9f0a1b2c3"
806
+ },
807
+ "network_id": {
808
+ "type": "string",
809
+ "example": "60"
810
+ },
811
+ "eip155_id": {
812
+ "type": "string",
813
+ "example": "1"
814
+ },
815
+ "network_name": {
816
+ "type": "string",
817
+ "example": "Ethereum"
818
+ },
819
+ "accepted_assets": {
820
+ "type": "array",
821
+ "items": {
822
+ "type": "object",
823
+ "properties": {
824
+ "symbol": {
825
+ "type": "string",
826
+ "example": "USDC"
827
+ },
828
+ "address": {
829
+ "type": "string",
830
+ "description": "Token contract address (zero address for native).",
831
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
832
+ },
833
+ "decimals": {
834
+ "type": "integer",
835
+ "example": 6
836
+ },
837
+ "logo": {
838
+ "type": "string",
839
+ "example": "https://assets.stridge.com/tokens/usdc.png"
840
+ }
841
+ }
842
+ }
843
+ }
844
+ }
845
+ }
846
+ },
847
+ "routing_rules": {
848
+ "type": "array",
849
+ "description": "Empty when no rules are configured.",
850
+ "items": {
851
+ "type": "object",
852
+ "description": "An echoed routing rule in dual form (symbol plus resolved contract address).",
853
+ "properties": {
854
+ "match": {
855
+ "type": "object",
856
+ "properties": {
857
+ "source_network_id": {
858
+ "type": "string",
859
+ "example": "60"
860
+ },
861
+ "source_asset_symbol": {
862
+ "type": "string",
863
+ "example": "USDT"
864
+ },
865
+ "source_token_address": {
866
+ "type": "string",
867
+ "example": "0xdAC17F958D2ee523a2206206994597C13D831ec7"
868
+ }
869
+ }
870
+ },
871
+ "destination": {
872
+ "type": "object",
873
+ "properties": {
874
+ "address": {
875
+ "type": "string",
876
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
877
+ },
878
+ "network_id": {
879
+ "type": "string",
880
+ "example": "60"
881
+ },
882
+ "eip155_id": {
883
+ "type": "string",
884
+ "example": "1"
885
+ },
886
+ "network_name": {
887
+ "type": "string",
888
+ "example": "Ethereum"
889
+ },
890
+ "asset_symbol": {
891
+ "type": "string",
892
+ "example": "USDC"
893
+ },
894
+ "asset_address": {
895
+ "type": "string",
896
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
897
+ },
898
+ "asset_decimals": {
899
+ "type": "integer",
900
+ "example": 6
901
+ }
902
+ }
903
+ }
904
+ }
905
+ }
906
+ }
907
+ }
908
+ }
909
+ }
910
+ }
911
+ },
912
+ "400": {
913
+ "description": "The request was malformed or failed validation.",
914
+ "content": {
915
+ "application/json": {
916
+ "schema": {
917
+ "type": "object",
918
+ "description": "Canonical error envelope returned by every endpoint on failure.",
919
+ "properties": {
920
+ "success": {
921
+ "type": "boolean",
922
+ "example": false
923
+ },
924
+ "code": {
925
+ "type": "integer",
926
+ "description": "HTTP status code echoed in the body.",
927
+ "example": 400
928
+ },
929
+ "error": {
930
+ "type": "string",
931
+ "description": "Human-readable error message.",
932
+ "example": "invalid request"
933
+ }
934
+ },
935
+ "required": [
936
+ "success",
937
+ "error"
938
+ ]
939
+ },
940
+ "example": {
941
+ "success": false,
942
+ "code": 400,
943
+ "error": "invalid request"
944
+ }
945
+ }
946
+ }
947
+ },
948
+ "401": {
949
+ "description": "The `X-API-Key` header is missing or invalid.",
950
+ "content": {
951
+ "application/json": {
952
+ "schema": {
953
+ "type": "object",
954
+ "description": "Canonical error envelope returned by every endpoint on failure.",
955
+ "properties": {
956
+ "success": {
957
+ "type": "boolean",
958
+ "example": false
959
+ },
960
+ "code": {
961
+ "type": "integer",
962
+ "description": "HTTP status code echoed in the body.",
963
+ "example": 400
964
+ },
965
+ "error": {
966
+ "type": "string",
967
+ "description": "Human-readable error message.",
968
+ "example": "invalid request"
969
+ }
970
+ },
971
+ "required": [
972
+ "success",
973
+ "error"
974
+ ]
975
+ },
976
+ "example": {
977
+ "success": false,
978
+ "code": 401,
979
+ "error": "unauthenticated"
980
+ }
981
+ }
982
+ }
983
+ }
984
+ }
985
+ }
986
+ },
987
+ "/uda/quote": {
988
+ "get": {
989
+ "operationId": "get-quote",
990
+ "tags": [
991
+ "UDA"
992
+ ],
993
+ "summary": "Get a cross-chain / cross-asset quote",
994
+ "description": "Return an indicative quote for routing a given amount from a source `(network, asset)` to a destination `(network, asset)`. This endpoint is public — no API key required. USD fields are omitted until a price feed is wired in.\n",
995
+ "parameters": [
996
+ {
997
+ "name": "from_network_id",
998
+ "in": "query",
999
+ "required": true,
1000
+ "description": "Source SLIP-44 network id (e.g. `60`) or EIP-155 chain id (e.g. `1`).",
1001
+ "schema": {
1002
+ "type": "integer",
1003
+ "example": 1
1004
+ }
1005
+ },
1006
+ {
1007
+ "name": "from_asset",
1008
+ "in": "query",
1009
+ "required": true,
1010
+ "description": "Source token contract address (use the zero address for the chain's native asset).",
1011
+ "schema": {
1012
+ "type": "string",
1013
+ "example": "0x0000000000000000000000000000000000000000"
1014
+ }
1015
+ },
1016
+ {
1017
+ "name": "to_network_id",
1018
+ "in": "query",
1019
+ "required": true,
1020
+ "description": "Destination SLIP-44 network id (e.g. `9006`) or EIP-155 chain id (e.g. `56`).",
1021
+ "schema": {
1022
+ "type": "integer",
1023
+ "example": 56
1024
+ }
1025
+ },
1026
+ {
1027
+ "name": "to_asset",
1028
+ "in": "query",
1029
+ "required": true,
1030
+ "description": "Destination token contract address.",
1031
+ "schema": {
1032
+ "type": "string",
1033
+ "example": "0x55d398326f99059fF775485246999027B3197955"
1034
+ }
1035
+ },
1036
+ {
1037
+ "name": "amount",
1038
+ "in": "query",
1039
+ "required": true,
1040
+ "description": "Source amount as an integer string in the source token's smallest unit.",
1041
+ "schema": {
1042
+ "type": "string",
1043
+ "example": "1000000000000000000"
1044
+ }
1045
+ },
1046
+ {
1047
+ "name": "from_address",
1048
+ "in": "query",
1049
+ "description": "Source (signer) EOA; required for an executable quote.",
1050
+ "schema": {
1051
+ "type": "string"
1052
+ }
1053
+ },
1054
+ {
1055
+ "name": "to_address",
1056
+ "in": "query",
1057
+ "description": "Destination recipient address; defaults to `from_address` at the provider.",
1058
+ "schema": {
1059
+ "type": "string"
1060
+ }
1061
+ }
1062
+ ],
1063
+ "responses": {
1064
+ "200": {
1065
+ "description": "An indicative quote.",
1066
+ "content": {
1067
+ "application/json": {
1068
+ "schema": {
1069
+ "allOf": [
1070
+ {
1071
+ "type": "object",
1072
+ "description": "Wrapper carried by enveloped responses; the payload is in `data`.",
1073
+ "properties": {
1074
+ "success": {
1075
+ "type": "boolean",
1076
+ "example": true
1077
+ },
1078
+ "message": {
1079
+ "type": "string",
1080
+ "example": "operation completed successfully"
1081
+ }
1082
+ },
1083
+ "required": [
1084
+ "success"
1085
+ ]
1086
+ },
1087
+ {
1088
+ "type": "object",
1089
+ "properties": {
1090
+ "data": {
1091
+ "type": "object",
1092
+ "properties": {
1093
+ "from": {
1094
+ "type": "object",
1095
+ "properties": {
1096
+ "network_id": {
1097
+ "type": "integer",
1098
+ "description": "EIP-155 chain id for this side.",
1099
+ "example": 1
1100
+ },
1101
+ "asset_address": {
1102
+ "type": "string",
1103
+ "example": "0x0000000000000000000000000000000000000000"
1104
+ },
1105
+ "amount": {
1106
+ "type": "string",
1107
+ "description": "Amount in the asset's smallest unit.",
1108
+ "example": "1000000000000000000"
1109
+ }
1110
+ }
1111
+ },
1112
+ "to": {
1113
+ "type": "object",
1114
+ "properties": {
1115
+ "network_id": {
1116
+ "type": "integer",
1117
+ "description": "EIP-155 chain id for this side.",
1118
+ "example": 1
1119
+ },
1120
+ "asset_address": {
1121
+ "type": "string",
1122
+ "example": "0x0000000000000000000000000000000000000000"
1123
+ },
1124
+ "amount": {
1125
+ "type": "string",
1126
+ "description": "Amount in the asset's smallest unit.",
1127
+ "example": "1000000000000000000"
1128
+ }
1129
+ }
1130
+ },
1131
+ "exchange_rate": {
1132
+ "type": "string",
1133
+ "example": "0.9985"
1134
+ },
1135
+ "expires_at": {
1136
+ "type": "string",
1137
+ "format": "date-time",
1138
+ "example": "2026-05-29T12:05:00Z"
1139
+ },
1140
+ "fees": {
1141
+ "type": "object",
1142
+ "properties": {
1143
+ "total_fee": {
1144
+ "type": "string",
1145
+ "example": "3500000000000000"
1146
+ },
1147
+ "gas_fee": {
1148
+ "type": "string",
1149
+ "example": "1000000000000000"
1150
+ },
1151
+ "network_reserve": {
1152
+ "type": "string",
1153
+ "description": "Chain-level reserve (e.g. TRON bandwidth).",
1154
+ "example": "0"
1155
+ },
1156
+ "platform_fee": {
1157
+ "type": "string",
1158
+ "example": "2500000000000000"
1159
+ },
1160
+ "provider_fee": {
1161
+ "type": "string",
1162
+ "description": "Third-party (e.g. LiFi / Relay) fee.",
1163
+ "example": "0"
1164
+ },
1165
+ "items": {
1166
+ "type": "array",
1167
+ "items": {
1168
+ "type": "object",
1169
+ "properties": {
1170
+ "kind": {
1171
+ "type": "string",
1172
+ "example": "platform"
1173
+ },
1174
+ "amount": {
1175
+ "type": "string",
1176
+ "example": "2500000000000000"
1177
+ },
1178
+ "source": {
1179
+ "type": "string",
1180
+ "example": "stridge"
1181
+ },
1182
+ "recipient": {
1183
+ "type": "string",
1184
+ "example": "0xfee0000000000000000000000000000000000000"
1185
+ }
1186
+ }
1187
+ }
1188
+ }
1189
+ }
1190
+ },
1191
+ "route": {
1192
+ "type": "object",
1193
+ "properties": {
1194
+ "provider": {
1195
+ "type": "string",
1196
+ "example": "lifi"
1197
+ },
1198
+ "scenario": {
1199
+ "type": "string",
1200
+ "example": "cross_chain_swap"
1201
+ },
1202
+ "estimated_time_seconds": {
1203
+ "type": "integer",
1204
+ "example": 45
1205
+ }
1206
+ }
1207
+ }
1208
+ }
1209
+ }
1210
+ }
1211
+ }
1212
+ ]
1213
+ }
1214
+ }
1215
+ }
1216
+ },
1217
+ "400": {
1218
+ "description": "The request was malformed or failed validation.",
1219
+ "content": {
1220
+ "application/json": {
1221
+ "schema": {
1222
+ "type": "object",
1223
+ "description": "Canonical error envelope returned by every endpoint on failure.",
1224
+ "properties": {
1225
+ "success": {
1226
+ "type": "boolean",
1227
+ "example": false
1228
+ },
1229
+ "code": {
1230
+ "type": "integer",
1231
+ "description": "HTTP status code echoed in the body.",
1232
+ "example": 400
1233
+ },
1234
+ "error": {
1235
+ "type": "string",
1236
+ "description": "Human-readable error message.",
1237
+ "example": "invalid request"
1238
+ }
1239
+ },
1240
+ "required": [
1241
+ "success",
1242
+ "error"
1243
+ ]
1244
+ },
1245
+ "example": {
1246
+ "success": false,
1247
+ "code": 400,
1248
+ "error": "invalid request"
1249
+ }
1250
+ }
1251
+ }
1252
+ },
1253
+ "500": {
1254
+ "description": "An unexpected error occurred on the server.",
1255
+ "content": {
1256
+ "application/json": {
1257
+ "schema": {
1258
+ "type": "object",
1259
+ "description": "Canonical error envelope returned by every endpoint on failure.",
1260
+ "properties": {
1261
+ "success": {
1262
+ "type": "boolean",
1263
+ "example": false
1264
+ },
1265
+ "code": {
1266
+ "type": "integer",
1267
+ "description": "HTTP status code echoed in the body.",
1268
+ "example": 400
1269
+ },
1270
+ "error": {
1271
+ "type": "string",
1272
+ "description": "Human-readable error message.",
1273
+ "example": "invalid request"
1274
+ }
1275
+ },
1276
+ "required": [
1277
+ "success",
1278
+ "error"
1279
+ ]
1280
+ },
1281
+ "example": {
1282
+ "success": false,
1283
+ "code": 500,
1284
+ "error": "internal server error"
1285
+ }
1286
+ }
1287
+ }
1288
+ }
1289
+ }
1290
+ }
1291
+ },
1292
+ "/uda/supported-assets": {
1293
+ "get": {
1294
+ "operationId": "list-supported-assets",
1295
+ "tags": [
1296
+ "UDA"
1297
+ ],
1298
+ "summary": "List UDA-supported assets",
1299
+ "description": "Return every chain with UDA support enabled, along with its native currency and configured token contracts. Rows are grouped by network. This endpoint is public — no API key required.\n",
1300
+ "responses": {
1301
+ "200": {
1302
+ "description": "Supported chains and assets.",
1303
+ "content": {
1304
+ "application/json": {
1305
+ "schema": {
1306
+ "type": "object",
1307
+ "properties": {
1308
+ "assets": {
1309
+ "type": "array",
1310
+ "items": {
1311
+ "type": "object",
1312
+ "properties": {
1313
+ "network_id": {
1314
+ "type": "string",
1315
+ "example": "60"
1316
+ },
1317
+ "network_name": {
1318
+ "type": "string",
1319
+ "example": "Ethereum"
1320
+ },
1321
+ "network_symbol": {
1322
+ "type": "string",
1323
+ "example": "ETH"
1324
+ },
1325
+ "eip155_id": {
1326
+ "type": "integer",
1327
+ "example": 1
1328
+ },
1329
+ "chain_type": {
1330
+ "type": "string",
1331
+ "enum": [
1332
+ "EVM",
1333
+ "TVM"
1334
+ ],
1335
+ "example": "EVM"
1336
+ },
1337
+ "native_currency": {
1338
+ "type": "object",
1339
+ "properties": {
1340
+ "symbol": {
1341
+ "type": "string",
1342
+ "example": "ETH"
1343
+ },
1344
+ "name": {
1345
+ "type": "string",
1346
+ "example": "Ether"
1347
+ },
1348
+ "decimals": {
1349
+ "type": "integer",
1350
+ "example": 18
1351
+ },
1352
+ "logo": {
1353
+ "type": "string",
1354
+ "example": "https://assets.stridge.com/tokens/eth.png"
1355
+ },
1356
+ "min_deposit_usd": {
1357
+ "type": "string",
1358
+ "example": "1.00"
1359
+ },
1360
+ "price_impact": {
1361
+ "type": "string",
1362
+ "example": "0"
1363
+ }
1364
+ }
1365
+ },
1366
+ "assets": {
1367
+ "type": "array",
1368
+ "items": {
1369
+ "type": "object",
1370
+ "properties": {
1371
+ "symbol": {
1372
+ "type": "string",
1373
+ "example": "USDC"
1374
+ },
1375
+ "name": {
1376
+ "type": "string",
1377
+ "example": "USD Coin"
1378
+ },
1379
+ "address": {
1380
+ "type": "string",
1381
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
1382
+ },
1383
+ "decimals": {
1384
+ "type": "integer",
1385
+ "example": 6
1386
+ },
1387
+ "logo": {
1388
+ "type": "string",
1389
+ "example": "https://assets.stridge.com/tokens/usdc.png"
1390
+ },
1391
+ "min_deposit_usd": {
1392
+ "type": "string",
1393
+ "example": "1.00"
1394
+ },
1395
+ "price_impact": {
1396
+ "type": "string",
1397
+ "example": "0"
1398
+ }
1399
+ }
1400
+ }
1401
+ }
1402
+ }
1403
+ }
1404
+ }
1405
+ }
1406
+ }
1407
+ }
1408
+ }
1409
+ },
1410
+ "500": {
1411
+ "description": "An unexpected error occurred on the server.",
1412
+ "content": {
1413
+ "application/json": {
1414
+ "schema": {
1415
+ "type": "object",
1416
+ "description": "Canonical error envelope returned by every endpoint on failure.",
1417
+ "properties": {
1418
+ "success": {
1419
+ "type": "boolean",
1420
+ "example": false
1421
+ },
1422
+ "code": {
1423
+ "type": "integer",
1424
+ "description": "HTTP status code echoed in the body.",
1425
+ "example": 400
1426
+ },
1427
+ "error": {
1428
+ "type": "string",
1429
+ "description": "Human-readable error message.",
1430
+ "example": "invalid request"
1431
+ }
1432
+ },
1433
+ "required": [
1434
+ "success",
1435
+ "error"
1436
+ ]
1437
+ },
1438
+ "example": {
1439
+ "success": false,
1440
+ "code": 500,
1441
+ "error": "internal server error"
1442
+ }
1443
+ }
1444
+ }
1445
+ }
1446
+ }
1447
+ }
1448
+ },
1449
+ "/uda/{id}/settlements": {
1450
+ "get": {
1451
+ "operationId": "list-settlements-for-uda",
1452
+ "tags": [
1453
+ "UDA"
1454
+ ],
1455
+ "summary": "List settlements for a UDA address",
1456
+ "description": "List all settlements created for a given UDA address, optionally paginated.",
1457
+ "security": [
1458
+ {
1459
+ "ApiKeyAuth": []
1460
+ }
1461
+ ],
1462
+ "parameters": [
1463
+ {
1464
+ "name": "id",
1465
+ "in": "path",
1466
+ "required": true,
1467
+ "description": "UDA address id.",
1468
+ "schema": {
1469
+ "type": "string"
1470
+ }
1471
+ },
1472
+ {
1473
+ "name": "limit",
1474
+ "in": "query",
1475
+ "description": "Page size (default 50, max 200).",
1476
+ "schema": {
1477
+ "type": "integer",
1478
+ "default": 50,
1479
+ "minimum": 1,
1480
+ "maximum": 200
1481
+ }
1482
+ },
1483
+ {
1484
+ "name": "offset",
1485
+ "in": "query",
1486
+ "description": "Number of items to skip (default 0).",
1487
+ "schema": {
1488
+ "type": "integer",
1489
+ "default": 0,
1490
+ "minimum": 0
1491
+ }
1492
+ }
1493
+ ],
1494
+ "responses": {
1495
+ "200": {
1496
+ "description": "A page of settlements.",
1497
+ "content": {
1498
+ "application/json": {
1499
+ "schema": {
1500
+ "type": "object",
1501
+ "properties": {
1502
+ "data": {
1503
+ "type": "array",
1504
+ "items": {
1505
+ "type": "object",
1506
+ "properties": {
1507
+ "id": {
1508
+ "type": "string",
1509
+ "example": "stl_71829304a5b6c7d8"
1510
+ },
1511
+ "uda_id": {
1512
+ "type": "string",
1513
+ "example": "uda_2f8c1a9d4e5f6071"
1514
+ },
1515
+ "status": {
1516
+ "type": "string",
1517
+ "enum": [
1518
+ "created",
1519
+ "routing",
1520
+ "completed",
1521
+ "failed",
1522
+ "retrying"
1523
+ ],
1524
+ "example": "completed"
1525
+ },
1526
+ "created_at": {
1527
+ "type": "string",
1528
+ "format": "date-time",
1529
+ "example": "2026-05-29T11:58:41Z"
1530
+ },
1531
+ "updated_at": {
1532
+ "type": "string",
1533
+ "format": "date-time",
1534
+ "example": "2026-05-29T11:59:25Z"
1535
+ },
1536
+ "error": {
1537
+ "type": "string",
1538
+ "description": "Failure reason when `status` is `failed`; empty otherwise.",
1539
+ "example": ""
1540
+ },
1541
+ "deposit": {
1542
+ "type": "object",
1543
+ "properties": {
1544
+ "address": {
1545
+ "type": "string",
1546
+ "example": "0x7c2d9a1b3e4f5061728394a5b6c7d8e9f0a1b2c3"
1547
+ },
1548
+ "amount": {
1549
+ "type": "string",
1550
+ "example": "1000000"
1551
+ },
1552
+ "asset_symbol": {
1553
+ "type": "string",
1554
+ "example": "USDC"
1555
+ },
1556
+ "asset_address": {
1557
+ "type": "string",
1558
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
1559
+ },
1560
+ "network_id": {
1561
+ "type": "integer",
1562
+ "example": 1
1563
+ },
1564
+ "network_name": {
1565
+ "type": "string",
1566
+ "example": "Ethereum"
1567
+ },
1568
+ "tx_hash": {
1569
+ "type": "string",
1570
+ "example": "0xab12cd34ef56...7890"
1571
+ },
1572
+ "confirmed_at": {
1573
+ "type": "string",
1574
+ "format": "date-time",
1575
+ "example": "2026-05-29T11:58:40Z"
1576
+ }
1577
+ }
1578
+ },
1579
+ "settlement": {
1580
+ "type": "object",
1581
+ "properties": {
1582
+ "address": {
1583
+ "type": "string",
1584
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
1585
+ },
1586
+ "amount": {
1587
+ "type": "string",
1588
+ "example": "998500"
1589
+ },
1590
+ "asset_symbol": {
1591
+ "type": "string",
1592
+ "example": "USDC"
1593
+ },
1594
+ "asset_address": {
1595
+ "type": "string",
1596
+ "example": "0x55d398326f99059fF775485246999027B3197955"
1597
+ },
1598
+ "network_id": {
1599
+ "type": "integer",
1600
+ "example": 56
1601
+ },
1602
+ "network_name": {
1603
+ "type": "string",
1604
+ "example": "BNB Smart Chain"
1605
+ },
1606
+ "tx_hash": {
1607
+ "type": "string",
1608
+ "example": "0xcd34ef5678...90ab"
1609
+ },
1610
+ "settled_at": {
1611
+ "type": "string",
1612
+ "format": "date-time",
1613
+ "example": "2026-05-29T11:59:25Z"
1614
+ }
1615
+ }
1616
+ },
1617
+ "fees": {
1618
+ "type": "object",
1619
+ "properties": {
1620
+ "total": {
1621
+ "type": "string",
1622
+ "example": "1500"
1623
+ },
1624
+ "platform": {
1625
+ "type": "string",
1626
+ "example": "1500"
1627
+ },
1628
+ "provider": {
1629
+ "type": "string",
1630
+ "example": "0"
1631
+ },
1632
+ "fee_amount": {
1633
+ "type": "string",
1634
+ "description": "Equal to `total` (back-compat field).",
1635
+ "example": "1500"
1636
+ }
1637
+ }
1638
+ },
1639
+ "route": {
1640
+ "type": "object",
1641
+ "properties": {
1642
+ "provider": {
1643
+ "type": "string",
1644
+ "example": "lifi"
1645
+ },
1646
+ "type": {
1647
+ "type": "string",
1648
+ "example": "cross_chain_swap"
1649
+ },
1650
+ "time_ms": {
1651
+ "type": "integer",
1652
+ "example": 45000
1653
+ }
1654
+ }
1655
+ }
1656
+ }
1657
+ }
1658
+ },
1659
+ "pagination": {
1660
+ "type": "object",
1661
+ "properties": {
1662
+ "count": {
1663
+ "type": "integer",
1664
+ "description": "Number of items in this page.",
1665
+ "example": 20
1666
+ },
1667
+ "limit": {
1668
+ "type": "integer",
1669
+ "example": 50
1670
+ },
1671
+ "offset": {
1672
+ "type": "integer",
1673
+ "example": 0
1674
+ }
1675
+ }
1676
+ }
1677
+ }
1678
+ }
1679
+ }
1680
+ }
1681
+ },
1682
+ "401": {
1683
+ "description": "The `X-API-Key` header is missing or invalid.",
1684
+ "content": {
1685
+ "application/json": {
1686
+ "schema": {
1687
+ "type": "object",
1688
+ "description": "Canonical error envelope returned by every endpoint on failure.",
1689
+ "properties": {
1690
+ "success": {
1691
+ "type": "boolean",
1692
+ "example": false
1693
+ },
1694
+ "code": {
1695
+ "type": "integer",
1696
+ "description": "HTTP status code echoed in the body.",
1697
+ "example": 400
1698
+ },
1699
+ "error": {
1700
+ "type": "string",
1701
+ "description": "Human-readable error message.",
1702
+ "example": "invalid request"
1703
+ }
1704
+ },
1705
+ "required": [
1706
+ "success",
1707
+ "error"
1708
+ ]
1709
+ },
1710
+ "example": {
1711
+ "success": false,
1712
+ "code": 401,
1713
+ "error": "unauthenticated"
1714
+ }
1715
+ }
1716
+ }
1717
+ },
1718
+ "500": {
1719
+ "description": "An unexpected error occurred on the server.",
1720
+ "content": {
1721
+ "application/json": {
1722
+ "schema": {
1723
+ "type": "object",
1724
+ "description": "Canonical error envelope returned by every endpoint on failure.",
1725
+ "properties": {
1726
+ "success": {
1727
+ "type": "boolean",
1728
+ "example": false
1729
+ },
1730
+ "code": {
1731
+ "type": "integer",
1732
+ "description": "HTTP status code echoed in the body.",
1733
+ "example": 400
1734
+ },
1735
+ "error": {
1736
+ "type": "string",
1737
+ "description": "Human-readable error message.",
1738
+ "example": "invalid request"
1739
+ }
1740
+ },
1741
+ "required": [
1742
+ "success",
1743
+ "error"
1744
+ ]
1745
+ },
1746
+ "example": {
1747
+ "success": false,
1748
+ "code": 500,
1749
+ "error": "internal server error"
1750
+ }
1751
+ }
1752
+ }
1753
+ }
1754
+ }
1755
+ }
1756
+ },
1757
+ "/uda/settlements/{id}": {
1758
+ "get": {
1759
+ "operationId": "get-settlement",
1760
+ "tags": [
1761
+ "UDA"
1762
+ ],
1763
+ "summary": "Get a settlement",
1764
+ "description": "Fetch a single settlement by id. A settlement is created per confirmed deposit on a UDA address and carries the lifecycle state, scenario, and routing transaction ids.\n",
1765
+ "security": [
1766
+ {
1767
+ "ApiKeyAuth": []
1768
+ }
1769
+ ],
1770
+ "parameters": [
1771
+ {
1772
+ "name": "id",
1773
+ "in": "path",
1774
+ "required": true,
1775
+ "description": "Settlement id.",
1776
+ "schema": {
1777
+ "type": "string"
1778
+ }
1779
+ }
1780
+ ],
1781
+ "responses": {
1782
+ "200": {
1783
+ "description": "The settlement.",
1784
+ "content": {
1785
+ "application/json": {
1786
+ "schema": {
1787
+ "type": "object",
1788
+ "properties": {
1789
+ "id": {
1790
+ "type": "string",
1791
+ "example": "stl_71829304a5b6c7d8"
1792
+ },
1793
+ "uda_id": {
1794
+ "type": "string",
1795
+ "example": "uda_2f8c1a9d4e5f6071"
1796
+ },
1797
+ "status": {
1798
+ "type": "string",
1799
+ "enum": [
1800
+ "created",
1801
+ "routing",
1802
+ "completed",
1803
+ "failed",
1804
+ "retrying"
1805
+ ],
1806
+ "example": "completed"
1807
+ },
1808
+ "created_at": {
1809
+ "type": "string",
1810
+ "format": "date-time",
1811
+ "example": "2026-05-29T11:58:41Z"
1812
+ },
1813
+ "updated_at": {
1814
+ "type": "string",
1815
+ "format": "date-time",
1816
+ "example": "2026-05-29T11:59:25Z"
1817
+ },
1818
+ "error": {
1819
+ "type": "string",
1820
+ "description": "Failure reason when `status` is `failed`; empty otherwise.",
1821
+ "example": ""
1822
+ },
1823
+ "deposit": {
1824
+ "type": "object",
1825
+ "properties": {
1826
+ "address": {
1827
+ "type": "string",
1828
+ "example": "0x7c2d9a1b3e4f5061728394a5b6c7d8e9f0a1b2c3"
1829
+ },
1830
+ "amount": {
1831
+ "type": "string",
1832
+ "example": "1000000"
1833
+ },
1834
+ "asset_symbol": {
1835
+ "type": "string",
1836
+ "example": "USDC"
1837
+ },
1838
+ "asset_address": {
1839
+ "type": "string",
1840
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
1841
+ },
1842
+ "network_id": {
1843
+ "type": "integer",
1844
+ "example": 1
1845
+ },
1846
+ "network_name": {
1847
+ "type": "string",
1848
+ "example": "Ethereum"
1849
+ },
1850
+ "tx_hash": {
1851
+ "type": "string",
1852
+ "example": "0xab12cd34ef56...7890"
1853
+ },
1854
+ "confirmed_at": {
1855
+ "type": "string",
1856
+ "format": "date-time",
1857
+ "example": "2026-05-29T11:58:40Z"
1858
+ }
1859
+ }
1860
+ },
1861
+ "settlement": {
1862
+ "type": "object",
1863
+ "properties": {
1864
+ "address": {
1865
+ "type": "string",
1866
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
1867
+ },
1868
+ "amount": {
1869
+ "type": "string",
1870
+ "example": "998500"
1871
+ },
1872
+ "asset_symbol": {
1873
+ "type": "string",
1874
+ "example": "USDC"
1875
+ },
1876
+ "asset_address": {
1877
+ "type": "string",
1878
+ "example": "0x55d398326f99059fF775485246999027B3197955"
1879
+ },
1880
+ "network_id": {
1881
+ "type": "integer",
1882
+ "example": 56
1883
+ },
1884
+ "network_name": {
1885
+ "type": "string",
1886
+ "example": "BNB Smart Chain"
1887
+ },
1888
+ "tx_hash": {
1889
+ "type": "string",
1890
+ "example": "0xcd34ef5678...90ab"
1891
+ },
1892
+ "settled_at": {
1893
+ "type": "string",
1894
+ "format": "date-time",
1895
+ "example": "2026-05-29T11:59:25Z"
1896
+ }
1897
+ }
1898
+ },
1899
+ "fees": {
1900
+ "type": "object",
1901
+ "properties": {
1902
+ "total": {
1903
+ "type": "string",
1904
+ "example": "1500"
1905
+ },
1906
+ "platform": {
1907
+ "type": "string",
1908
+ "example": "1500"
1909
+ },
1910
+ "provider": {
1911
+ "type": "string",
1912
+ "example": "0"
1913
+ },
1914
+ "fee_amount": {
1915
+ "type": "string",
1916
+ "description": "Equal to `total` (back-compat field).",
1917
+ "example": "1500"
1918
+ }
1919
+ }
1920
+ },
1921
+ "route": {
1922
+ "type": "object",
1923
+ "properties": {
1924
+ "provider": {
1925
+ "type": "string",
1926
+ "example": "lifi"
1927
+ },
1928
+ "type": {
1929
+ "type": "string",
1930
+ "example": "cross_chain_swap"
1931
+ },
1932
+ "time_ms": {
1933
+ "type": "integer",
1934
+ "example": 45000
1935
+ }
1936
+ }
1937
+ }
1938
+ }
1939
+ }
1940
+ }
1941
+ }
1942
+ },
1943
+ "401": {
1944
+ "description": "The `X-API-Key` header is missing or invalid.",
1945
+ "content": {
1946
+ "application/json": {
1947
+ "schema": {
1948
+ "type": "object",
1949
+ "description": "Canonical error envelope returned by every endpoint on failure.",
1950
+ "properties": {
1951
+ "success": {
1952
+ "type": "boolean",
1953
+ "example": false
1954
+ },
1955
+ "code": {
1956
+ "type": "integer",
1957
+ "description": "HTTP status code echoed in the body.",
1958
+ "example": 400
1959
+ },
1960
+ "error": {
1961
+ "type": "string",
1962
+ "description": "Human-readable error message.",
1963
+ "example": "invalid request"
1964
+ }
1965
+ },
1966
+ "required": [
1967
+ "success",
1968
+ "error"
1969
+ ]
1970
+ },
1971
+ "example": {
1972
+ "success": false,
1973
+ "code": 401,
1974
+ "error": "unauthenticated"
1975
+ }
1976
+ }
1977
+ }
1978
+ },
1979
+ "404": {
1980
+ "description": "The requested resource does not exist.",
1981
+ "content": {
1982
+ "application/json": {
1983
+ "schema": {
1984
+ "type": "object",
1985
+ "description": "Canonical error envelope returned by every endpoint on failure.",
1986
+ "properties": {
1987
+ "success": {
1988
+ "type": "boolean",
1989
+ "example": false
1990
+ },
1991
+ "code": {
1992
+ "type": "integer",
1993
+ "description": "HTTP status code echoed in the body.",
1994
+ "example": 400
1995
+ },
1996
+ "error": {
1997
+ "type": "string",
1998
+ "description": "Human-readable error message.",
1999
+ "example": "invalid request"
2000
+ }
2001
+ },
2002
+ "required": [
2003
+ "success",
2004
+ "error"
2005
+ ]
2006
+ },
2007
+ "example": {
2008
+ "success": false,
2009
+ "code": 404,
2010
+ "error": "not found"
2011
+ }
2012
+ }
2013
+ }
2014
+ }
2015
+ }
2016
+ }
2017
+ },
2018
+ "/uda/settlements/by-reference": {
2019
+ "get": {
2020
+ "operationId": "list-settlements-by-reference",
2021
+ "tags": [
2022
+ "UDA"
2023
+ ],
2024
+ "summary": "List settlements by reference",
2025
+ "description": "Look up settlements by a reference you already know. The reference is currently the on-chain deposit transaction id that funded the settlement — useful when you know what you paid with but not the internal settlement id. A single deposit transaction can fund multiple settlements, so the response is always a list (empty when nothing matches).\n",
2026
+ "security": [
2027
+ {
2028
+ "ApiKeyAuth": []
2029
+ }
2030
+ ],
2031
+ "parameters": [
2032
+ {
2033
+ "name": "reference",
2034
+ "in": "query",
2035
+ "required": true,
2036
+ "description": "Lookup reference (on-chain deposit transaction id).",
2037
+ "schema": {
2038
+ "type": "string"
2039
+ }
2040
+ }
2041
+ ],
2042
+ "responses": {
2043
+ "200": {
2044
+ "description": "Matching settlements.",
2045
+ "content": {
2046
+ "application/json": {
2047
+ "schema": {
2048
+ "type": "object",
2049
+ "properties": {
2050
+ "reference": {
2051
+ "type": "string",
2052
+ "description": "The reference that was looked up.",
2053
+ "example": "0xab12cd34ef56...7890"
2054
+ },
2055
+ "count": {
2056
+ "type": "integer",
2057
+ "example": 1
2058
+ },
2059
+ "data": {
2060
+ "type": "array",
2061
+ "items": {
2062
+ "type": "object",
2063
+ "properties": {
2064
+ "id": {
2065
+ "type": "string",
2066
+ "example": "stl_71829304a5b6c7d8"
2067
+ },
2068
+ "uda_id": {
2069
+ "type": "string",
2070
+ "example": "uda_2f8c1a9d4e5f6071"
2071
+ },
2072
+ "status": {
2073
+ "type": "string",
2074
+ "enum": [
2075
+ "created",
2076
+ "routing",
2077
+ "completed",
2078
+ "failed",
2079
+ "retrying"
2080
+ ],
2081
+ "example": "completed"
2082
+ },
2083
+ "created_at": {
2084
+ "type": "string",
2085
+ "format": "date-time",
2086
+ "example": "2026-05-29T11:58:41Z"
2087
+ },
2088
+ "updated_at": {
2089
+ "type": "string",
2090
+ "format": "date-time",
2091
+ "example": "2026-05-29T11:59:25Z"
2092
+ },
2093
+ "error": {
2094
+ "type": "string",
2095
+ "description": "Failure reason when `status` is `failed`; empty otherwise.",
2096
+ "example": ""
2097
+ },
2098
+ "deposit": {
2099
+ "type": "object",
2100
+ "properties": {
2101
+ "address": {
2102
+ "type": "string",
2103
+ "example": "0x7c2d9a1b3e4f5061728394a5b6c7d8e9f0a1b2c3"
2104
+ },
2105
+ "amount": {
2106
+ "type": "string",
2107
+ "example": "1000000"
2108
+ },
2109
+ "asset_symbol": {
2110
+ "type": "string",
2111
+ "example": "USDC"
2112
+ },
2113
+ "asset_address": {
2114
+ "type": "string",
2115
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
2116
+ },
2117
+ "network_id": {
2118
+ "type": "integer",
2119
+ "example": 1
2120
+ },
2121
+ "network_name": {
2122
+ "type": "string",
2123
+ "example": "Ethereum"
2124
+ },
2125
+ "tx_hash": {
2126
+ "type": "string",
2127
+ "example": "0xab12cd34ef56...7890"
2128
+ },
2129
+ "confirmed_at": {
2130
+ "type": "string",
2131
+ "format": "date-time",
2132
+ "example": "2026-05-29T11:58:40Z"
2133
+ }
2134
+ }
2135
+ },
2136
+ "settlement": {
2137
+ "type": "object",
2138
+ "properties": {
2139
+ "address": {
2140
+ "type": "string",
2141
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
2142
+ },
2143
+ "amount": {
2144
+ "type": "string",
2145
+ "example": "998500"
2146
+ },
2147
+ "asset_symbol": {
2148
+ "type": "string",
2149
+ "example": "USDC"
2150
+ },
2151
+ "asset_address": {
2152
+ "type": "string",
2153
+ "example": "0x55d398326f99059fF775485246999027B3197955"
2154
+ },
2155
+ "network_id": {
2156
+ "type": "integer",
2157
+ "example": 56
2158
+ },
2159
+ "network_name": {
2160
+ "type": "string",
2161
+ "example": "BNB Smart Chain"
2162
+ },
2163
+ "tx_hash": {
2164
+ "type": "string",
2165
+ "example": "0xcd34ef5678...90ab"
2166
+ },
2167
+ "settled_at": {
2168
+ "type": "string",
2169
+ "format": "date-time",
2170
+ "example": "2026-05-29T11:59:25Z"
2171
+ }
2172
+ }
2173
+ },
2174
+ "fees": {
2175
+ "type": "object",
2176
+ "properties": {
2177
+ "total": {
2178
+ "type": "string",
2179
+ "example": "1500"
2180
+ },
2181
+ "platform": {
2182
+ "type": "string",
2183
+ "example": "1500"
2184
+ },
2185
+ "provider": {
2186
+ "type": "string",
2187
+ "example": "0"
2188
+ },
2189
+ "fee_amount": {
2190
+ "type": "string",
2191
+ "description": "Equal to `total` (back-compat field).",
2192
+ "example": "1500"
2193
+ }
2194
+ }
2195
+ },
2196
+ "route": {
2197
+ "type": "object",
2198
+ "properties": {
2199
+ "provider": {
2200
+ "type": "string",
2201
+ "example": "lifi"
2202
+ },
2203
+ "type": {
2204
+ "type": "string",
2205
+ "example": "cross_chain_swap"
2206
+ },
2207
+ "time_ms": {
2208
+ "type": "integer",
2209
+ "example": 45000
2210
+ }
2211
+ }
2212
+ }
2213
+ }
2214
+ }
2215
+ }
2216
+ }
2217
+ }
2218
+ }
2219
+ }
2220
+ },
2221
+ "400": {
2222
+ "description": "The request was malformed or failed validation.",
2223
+ "content": {
2224
+ "application/json": {
2225
+ "schema": {
2226
+ "type": "object",
2227
+ "description": "Canonical error envelope returned by every endpoint on failure.",
2228
+ "properties": {
2229
+ "success": {
2230
+ "type": "boolean",
2231
+ "example": false
2232
+ },
2233
+ "code": {
2234
+ "type": "integer",
2235
+ "description": "HTTP status code echoed in the body.",
2236
+ "example": 400
2237
+ },
2238
+ "error": {
2239
+ "type": "string",
2240
+ "description": "Human-readable error message.",
2241
+ "example": "invalid request"
2242
+ }
2243
+ },
2244
+ "required": [
2245
+ "success",
2246
+ "error"
2247
+ ]
2248
+ },
2249
+ "example": {
2250
+ "success": false,
2251
+ "code": 400,
2252
+ "error": "invalid request"
2253
+ }
2254
+ }
2255
+ }
2256
+ },
2257
+ "401": {
2258
+ "description": "The `X-API-Key` header is missing or invalid.",
2259
+ "content": {
2260
+ "application/json": {
2261
+ "schema": {
2262
+ "type": "object",
2263
+ "description": "Canonical error envelope returned by every endpoint on failure.",
2264
+ "properties": {
2265
+ "success": {
2266
+ "type": "boolean",
2267
+ "example": false
2268
+ },
2269
+ "code": {
2270
+ "type": "integer",
2271
+ "description": "HTTP status code echoed in the body.",
2272
+ "example": 400
2273
+ },
2274
+ "error": {
2275
+ "type": "string",
2276
+ "description": "Human-readable error message.",
2277
+ "example": "invalid request"
2278
+ }
2279
+ },
2280
+ "required": [
2281
+ "success",
2282
+ "error"
2283
+ ]
2284
+ },
2285
+ "example": {
2286
+ "success": false,
2287
+ "code": 401,
2288
+ "error": "unauthenticated"
2289
+ }
2290
+ }
2291
+ }
2292
+ },
2293
+ "500": {
2294
+ "description": "An unexpected error occurred on the server.",
2295
+ "content": {
2296
+ "application/json": {
2297
+ "schema": {
2298
+ "type": "object",
2299
+ "description": "Canonical error envelope returned by every endpoint on failure.",
2300
+ "properties": {
2301
+ "success": {
2302
+ "type": "boolean",
2303
+ "example": false
2304
+ },
2305
+ "code": {
2306
+ "type": "integer",
2307
+ "description": "HTTP status code echoed in the body.",
2308
+ "example": 400
2309
+ },
2310
+ "error": {
2311
+ "type": "string",
2312
+ "description": "Human-readable error message.",
2313
+ "example": "invalid request"
2314
+ }
2315
+ },
2316
+ "required": [
2317
+ "success",
2318
+ "error"
2319
+ ]
2320
+ },
2321
+ "example": {
2322
+ "success": false,
2323
+ "code": 500,
2324
+ "error": "internal server error"
2325
+ }
2326
+ }
2327
+ }
2328
+ }
2329
+ }
2330
+ }
2331
+ }
2332
+ },
2333
+ "components": {
2334
+ "securitySchemes": {
2335
+ "ApiKeyAuth": {
2336
+ "type": "apiKey",
2337
+ "in": "header",
2338
+ "name": "X-API-Key",
2339
+ "description": "Secret API key for programmatic access. Send it on every authenticated request. Keep it server-side; never ship it in a client bundle.\n"
2340
+ }
2341
+ },
2342
+ "parameters": {
2343
+ "LimitParam": {
2344
+ "name": "limit",
2345
+ "in": "query",
2346
+ "description": "Page size (default 50, max 200).",
2347
+ "schema": {
2348
+ "type": "integer",
2349
+ "default": 50,
2350
+ "minimum": 1,
2351
+ "maximum": 200
2352
+ }
2353
+ },
2354
+ "OffsetParam": {
2355
+ "name": "offset",
2356
+ "in": "query",
2357
+ "description": "Number of items to skip (default 0).",
2358
+ "schema": {
2359
+ "type": "integer",
2360
+ "default": 0,
2361
+ "minimum": 0
2362
+ }
2363
+ }
2364
+ },
2365
+ "responses": {
2366
+ "BadRequest": {
2367
+ "description": "The request was malformed or failed validation.",
2368
+ "content": {
2369
+ "application/json": {
2370
+ "schema": {
2371
+ "type": "object",
2372
+ "description": "Canonical error envelope returned by every endpoint on failure.",
2373
+ "properties": {
2374
+ "success": {
2375
+ "type": "boolean",
2376
+ "example": false
2377
+ },
2378
+ "code": {
2379
+ "type": "integer",
2380
+ "description": "HTTP status code echoed in the body.",
2381
+ "example": 400
2382
+ },
2383
+ "error": {
2384
+ "type": "string",
2385
+ "description": "Human-readable error message.",
2386
+ "example": "invalid request"
2387
+ }
2388
+ },
2389
+ "required": [
2390
+ "success",
2391
+ "error"
2392
+ ]
2393
+ },
2394
+ "example": {
2395
+ "success": false,
2396
+ "code": 400,
2397
+ "error": "invalid request"
2398
+ }
2399
+ }
2400
+ }
2401
+ },
2402
+ "Unauthorized": {
2403
+ "description": "The `X-API-Key` header is missing or invalid.",
2404
+ "content": {
2405
+ "application/json": {
2406
+ "schema": {
2407
+ "type": "object",
2408
+ "description": "Canonical error envelope returned by every endpoint on failure.",
2409
+ "properties": {
2410
+ "success": {
2411
+ "type": "boolean",
2412
+ "example": false
2413
+ },
2414
+ "code": {
2415
+ "type": "integer",
2416
+ "description": "HTTP status code echoed in the body.",
2417
+ "example": 400
2418
+ },
2419
+ "error": {
2420
+ "type": "string",
2421
+ "description": "Human-readable error message.",
2422
+ "example": "invalid request"
2423
+ }
2424
+ },
2425
+ "required": [
2426
+ "success",
2427
+ "error"
2428
+ ]
2429
+ },
2430
+ "example": {
2431
+ "success": false,
2432
+ "code": 401,
2433
+ "error": "unauthenticated"
2434
+ }
2435
+ }
2436
+ }
2437
+ },
2438
+ "NotFound": {
2439
+ "description": "The requested resource does not exist.",
2440
+ "content": {
2441
+ "application/json": {
2442
+ "schema": {
2443
+ "type": "object",
2444
+ "description": "Canonical error envelope returned by every endpoint on failure.",
2445
+ "properties": {
2446
+ "success": {
2447
+ "type": "boolean",
2448
+ "example": false
2449
+ },
2450
+ "code": {
2451
+ "type": "integer",
2452
+ "description": "HTTP status code echoed in the body.",
2453
+ "example": 400
2454
+ },
2455
+ "error": {
2456
+ "type": "string",
2457
+ "description": "Human-readable error message.",
2458
+ "example": "invalid request"
2459
+ }
2460
+ },
2461
+ "required": [
2462
+ "success",
2463
+ "error"
2464
+ ]
2465
+ },
2466
+ "example": {
2467
+ "success": false,
2468
+ "code": 404,
2469
+ "error": "not found"
2470
+ }
2471
+ }
2472
+ }
2473
+ },
2474
+ "ServerError": {
2475
+ "description": "An unexpected error occurred on the server.",
2476
+ "content": {
2477
+ "application/json": {
2478
+ "schema": {
2479
+ "type": "object",
2480
+ "description": "Canonical error envelope returned by every endpoint on failure.",
2481
+ "properties": {
2482
+ "success": {
2483
+ "type": "boolean",
2484
+ "example": false
2485
+ },
2486
+ "code": {
2487
+ "type": "integer",
2488
+ "description": "HTTP status code echoed in the body.",
2489
+ "example": 400
2490
+ },
2491
+ "error": {
2492
+ "type": "string",
2493
+ "description": "Human-readable error message.",
2494
+ "example": "invalid request"
2495
+ }
2496
+ },
2497
+ "required": [
2498
+ "success",
2499
+ "error"
2500
+ ]
2501
+ },
2502
+ "example": {
2503
+ "success": false,
2504
+ "code": 500,
2505
+ "error": "internal server error"
2506
+ }
2507
+ }
2508
+ }
2509
+ }
2510
+ },
2511
+ "schemas": {
2512
+ "Error": {
2513
+ "type": "object",
2514
+ "description": "Canonical error envelope returned by every endpoint on failure.",
2515
+ "properties": {
2516
+ "success": {
2517
+ "type": "boolean",
2518
+ "example": false
2519
+ },
2520
+ "code": {
2521
+ "type": "integer",
2522
+ "description": "HTTP status code echoed in the body.",
2523
+ "example": 400
2524
+ },
2525
+ "error": {
2526
+ "type": "string",
2527
+ "description": "Human-readable error message.",
2528
+ "example": "invalid request"
2529
+ }
2530
+ },
2531
+ "required": [
2532
+ "success",
2533
+ "error"
2534
+ ]
2535
+ },
2536
+ "SuccessEnvelope": {
2537
+ "type": "object",
2538
+ "description": "Wrapper carried by enveloped responses; the payload is in `data`.",
2539
+ "properties": {
2540
+ "success": {
2541
+ "type": "boolean",
2542
+ "example": true
2543
+ },
2544
+ "message": {
2545
+ "type": "string",
2546
+ "example": "operation completed successfully"
2547
+ }
2548
+ },
2549
+ "required": [
2550
+ "success"
2551
+ ]
2552
+ },
2553
+ "Pagination": {
2554
+ "type": "object",
2555
+ "properties": {
2556
+ "count": {
2557
+ "type": "integer",
2558
+ "description": "Number of items in this page.",
2559
+ "example": 20
2560
+ },
2561
+ "limit": {
2562
+ "type": "integer",
2563
+ "example": 50
2564
+ },
2565
+ "offset": {
2566
+ "type": "integer",
2567
+ "example": 0
2568
+ }
2569
+ }
2570
+ },
2571
+ "DestinationInput": {
2572
+ "type": "object",
2573
+ "description": "Where settlements for this UDA should be delivered.",
2574
+ "properties": {
2575
+ "address": {
2576
+ "type": "string",
2577
+ "description": "Destination wallet address.",
2578
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
2579
+ },
2580
+ "network_id": {
2581
+ "type": "string",
2582
+ "description": "Destination SLIP-44 network id.",
2583
+ "example": "60"
2584
+ },
2585
+ "asset_symbol": {
2586
+ "type": "string",
2587
+ "description": "Destination asset symbol.",
2588
+ "example": "USDC"
2589
+ }
2590
+ },
2591
+ "required": [
2592
+ "address",
2593
+ "network_id"
2594
+ ]
2595
+ },
2596
+ "RoutingRuleMatchInput": {
2597
+ "type": "object",
2598
+ "description": "Conditions a deposit must meet for this routing rule to apply.",
2599
+ "properties": {
2600
+ "source_network_id": {
2601
+ "type": "string",
2602
+ "example": "60"
2603
+ },
2604
+ "source_asset_symbol": {
2605
+ "type": "string",
2606
+ "example": "USDT"
2607
+ }
2608
+ },
2609
+ "required": [
2610
+ "source_network_id"
2611
+ ]
2612
+ },
2613
+ "RoutingRuleDestinationInput": {
2614
+ "type": "object",
2615
+ "properties": {
2616
+ "address": {
2617
+ "type": "string",
2618
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
2619
+ },
2620
+ "network_id": {
2621
+ "type": "string",
2622
+ "example": "60"
2623
+ },
2624
+ "asset_symbol": {
2625
+ "type": "string",
2626
+ "example": "USDC"
2627
+ }
2628
+ },
2629
+ "required": [
2630
+ "address",
2631
+ "network_id"
2632
+ ]
2633
+ },
2634
+ "RoutingRuleInput": {
2635
+ "type": "object",
2636
+ "properties": {
2637
+ "match": {
2638
+ "type": "object",
2639
+ "description": "Conditions a deposit must meet for this routing rule to apply.",
2640
+ "properties": {
2641
+ "source_network_id": {
2642
+ "type": "string",
2643
+ "example": "60"
2644
+ },
2645
+ "source_asset_symbol": {
2646
+ "type": "string",
2647
+ "example": "USDT"
2648
+ }
2649
+ },
2650
+ "required": [
2651
+ "source_network_id"
2652
+ ]
2653
+ },
2654
+ "destination": {
2655
+ "type": "object",
2656
+ "properties": {
2657
+ "address": {
2658
+ "type": "string",
2659
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
2660
+ },
2661
+ "network_id": {
2662
+ "type": "string",
2663
+ "example": "60"
2664
+ },
2665
+ "asset_symbol": {
2666
+ "type": "string",
2667
+ "example": "USDC"
2668
+ }
2669
+ },
2670
+ "required": [
2671
+ "address",
2672
+ "network_id"
2673
+ ]
2674
+ }
2675
+ },
2676
+ "required": [
2677
+ "match",
2678
+ "destination"
2679
+ ]
2680
+ },
2681
+ "CreateUDAAddressRequest": {
2682
+ "type": "object",
2683
+ "properties": {
2684
+ "owner": {
2685
+ "type": "string",
2686
+ "description": "The owner the UDA is allocated for.",
2687
+ "example": "0x9f8e7d6c5b4a39281706f5e4d3c2b1a098765432"
2688
+ },
2689
+ "destination": {
2690
+ "type": "object",
2691
+ "description": "Where settlements for this UDA should be delivered.",
2692
+ "properties": {
2693
+ "address": {
2694
+ "type": "string",
2695
+ "description": "Destination wallet address.",
2696
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
2697
+ },
2698
+ "network_id": {
2699
+ "type": "string",
2700
+ "description": "Destination SLIP-44 network id.",
2701
+ "example": "60"
2702
+ },
2703
+ "asset_symbol": {
2704
+ "type": "string",
2705
+ "description": "Destination asset symbol.",
2706
+ "example": "USDC"
2707
+ }
2708
+ },
2709
+ "required": [
2710
+ "address",
2711
+ "network_id"
2712
+ ]
2713
+ },
2714
+ "accepted_assets": {
2715
+ "type": "array",
2716
+ "items": {
2717
+ "type": "string"
2718
+ },
2719
+ "description": "Asset symbols this UDA accepts; empty means every asset on every UDA-supported chain.",
2720
+ "example": [
2721
+ "USDC",
2722
+ "USDT"
2723
+ ]
2724
+ },
2725
+ "routing_rules": {
2726
+ "type": "array",
2727
+ "items": {
2728
+ "type": "object",
2729
+ "properties": {
2730
+ "match": {
2731
+ "type": "object",
2732
+ "description": "Conditions a deposit must meet for this routing rule to apply.",
2733
+ "properties": {
2734
+ "source_network_id": {
2735
+ "type": "string",
2736
+ "example": "60"
2737
+ },
2738
+ "source_asset_symbol": {
2739
+ "type": "string",
2740
+ "example": "USDT"
2741
+ }
2742
+ },
2743
+ "required": [
2744
+ "source_network_id"
2745
+ ]
2746
+ },
2747
+ "destination": {
2748
+ "type": "object",
2749
+ "properties": {
2750
+ "address": {
2751
+ "type": "string",
2752
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
2753
+ },
2754
+ "network_id": {
2755
+ "type": "string",
2756
+ "example": "60"
2757
+ },
2758
+ "asset_symbol": {
2759
+ "type": "string",
2760
+ "example": "USDC"
2761
+ }
2762
+ },
2763
+ "required": [
2764
+ "address",
2765
+ "network_id"
2766
+ ]
2767
+ }
2768
+ },
2769
+ "required": [
2770
+ "match",
2771
+ "destination"
2772
+ ]
2773
+ },
2774
+ "description": "Optional; max 3. Specificity-wins precedence: a rule pinning both `source_network_id` and `source_asset_symbol` beats a network-only rule. When nothing matches, settlements use the default destination.\n"
2775
+ }
2776
+ },
2777
+ "required": [
2778
+ "owner",
2779
+ "destination"
2780
+ ],
2781
+ "example": {
2782
+ "owner": "0x9f8e7d6c5b4a39281706f5e4d3c2b1a098765432",
2783
+ "destination": {
2784
+ "address": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345",
2785
+ "network_id": "60",
2786
+ "asset_symbol": "USDC"
2787
+ },
2788
+ "accepted_assets": [
2789
+ "USDC",
2790
+ "USDT"
2791
+ ]
2792
+ }
2793
+ },
2794
+ "DepositAsset": {
2795
+ "type": "object",
2796
+ "properties": {
2797
+ "symbol": {
2798
+ "type": "string",
2799
+ "example": "USDC"
2800
+ },
2801
+ "address": {
2802
+ "type": "string",
2803
+ "description": "Token contract address (zero address for native).",
2804
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
2805
+ },
2806
+ "decimals": {
2807
+ "type": "integer",
2808
+ "example": 6
2809
+ },
2810
+ "logo": {
2811
+ "type": "string",
2812
+ "example": "https://assets.stridge.com/tokens/usdc.png"
2813
+ }
2814
+ }
2815
+ },
2816
+ "DepositAddress": {
2817
+ "type": "object",
2818
+ "description": "A per-chain address a depositor can send funds to.",
2819
+ "properties": {
2820
+ "address": {
2821
+ "type": "string",
2822
+ "example": "0x7c2d9a1b3e4f5061728394a5b6c7d8e9f0a1b2c3"
2823
+ },
2824
+ "network_id": {
2825
+ "type": "string",
2826
+ "example": "60"
2827
+ },
2828
+ "eip155_id": {
2829
+ "type": "string",
2830
+ "example": "1"
2831
+ },
2832
+ "network_name": {
2833
+ "type": "string",
2834
+ "example": "Ethereum"
2835
+ },
2836
+ "accepted_assets": {
2837
+ "type": "array",
2838
+ "items": {
2839
+ "type": "object",
2840
+ "properties": {
2841
+ "symbol": {
2842
+ "type": "string",
2843
+ "example": "USDC"
2844
+ },
2845
+ "address": {
2846
+ "type": "string",
2847
+ "description": "Token contract address (zero address for native).",
2848
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
2849
+ },
2850
+ "decimals": {
2851
+ "type": "integer",
2852
+ "example": 6
2853
+ },
2854
+ "logo": {
2855
+ "type": "string",
2856
+ "example": "https://assets.stridge.com/tokens/usdc.png"
2857
+ }
2858
+ }
2859
+ }
2860
+ }
2861
+ }
2862
+ },
2863
+ "Destination": {
2864
+ "type": "object",
2865
+ "description": "Resolved destination (symbol plus the resolved contract address).",
2866
+ "properties": {
2867
+ "address": {
2868
+ "type": "string",
2869
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
2870
+ },
2871
+ "network_id": {
2872
+ "type": "string",
2873
+ "example": "60"
2874
+ },
2875
+ "eip155_id": {
2876
+ "type": "string",
2877
+ "example": "1"
2878
+ },
2879
+ "network_name": {
2880
+ "type": "string",
2881
+ "example": "Ethereum"
2882
+ },
2883
+ "asset_symbol": {
2884
+ "type": "string",
2885
+ "example": "USDC"
2886
+ },
2887
+ "asset_address": {
2888
+ "type": "string",
2889
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
2890
+ },
2891
+ "asset_decimals": {
2892
+ "type": "integer",
2893
+ "example": 6
2894
+ }
2895
+ }
2896
+ },
2897
+ "RoutingRuleMatch": {
2898
+ "type": "object",
2899
+ "properties": {
2900
+ "source_network_id": {
2901
+ "type": "string",
2902
+ "example": "60"
2903
+ },
2904
+ "source_asset_symbol": {
2905
+ "type": "string",
2906
+ "example": "USDT"
2907
+ },
2908
+ "source_token_address": {
2909
+ "type": "string",
2910
+ "example": "0xdAC17F958D2ee523a2206206994597C13D831ec7"
2911
+ }
2912
+ }
2913
+ },
2914
+ "RoutingRuleDestination": {
2915
+ "type": "object",
2916
+ "properties": {
2917
+ "address": {
2918
+ "type": "string",
2919
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
2920
+ },
2921
+ "network_id": {
2922
+ "type": "string",
2923
+ "example": "60"
2924
+ },
2925
+ "eip155_id": {
2926
+ "type": "string",
2927
+ "example": "1"
2928
+ },
2929
+ "network_name": {
2930
+ "type": "string",
2931
+ "example": "Ethereum"
2932
+ },
2933
+ "asset_symbol": {
2934
+ "type": "string",
2935
+ "example": "USDC"
2936
+ },
2937
+ "asset_address": {
2938
+ "type": "string",
2939
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
2940
+ },
2941
+ "asset_decimals": {
2942
+ "type": "integer",
2943
+ "example": 6
2944
+ }
2945
+ }
2946
+ },
2947
+ "RoutingRule": {
2948
+ "type": "object",
2949
+ "description": "An echoed routing rule in dual form (symbol plus resolved contract address).",
2950
+ "properties": {
2951
+ "match": {
2952
+ "type": "object",
2953
+ "properties": {
2954
+ "source_network_id": {
2955
+ "type": "string",
2956
+ "example": "60"
2957
+ },
2958
+ "source_asset_symbol": {
2959
+ "type": "string",
2960
+ "example": "USDT"
2961
+ },
2962
+ "source_token_address": {
2963
+ "type": "string",
2964
+ "example": "0xdAC17F958D2ee523a2206206994597C13D831ec7"
2965
+ }
2966
+ }
2967
+ },
2968
+ "destination": {
2969
+ "type": "object",
2970
+ "properties": {
2971
+ "address": {
2972
+ "type": "string",
2973
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
2974
+ },
2975
+ "network_id": {
2976
+ "type": "string",
2977
+ "example": "60"
2978
+ },
2979
+ "eip155_id": {
2980
+ "type": "string",
2981
+ "example": "1"
2982
+ },
2983
+ "network_name": {
2984
+ "type": "string",
2985
+ "example": "Ethereum"
2986
+ },
2987
+ "asset_symbol": {
2988
+ "type": "string",
2989
+ "example": "USDC"
2990
+ },
2991
+ "asset_address": {
2992
+ "type": "string",
2993
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
2994
+ },
2995
+ "asset_decimals": {
2996
+ "type": "integer",
2997
+ "example": 6
2998
+ }
2999
+ }
3000
+ }
3001
+ }
3002
+ },
3003
+ "UDAAddress": {
3004
+ "type": "object",
3005
+ "properties": {
3006
+ "id": {
3007
+ "type": "string",
3008
+ "example": "uda_2f8c1a9d4e5f6071"
3009
+ },
3010
+ "owner": {
3011
+ "type": "string",
3012
+ "example": "0x9f8e7d6c5b4a39281706f5e4d3c2b1a098765432"
3013
+ },
3014
+ "status": {
3015
+ "type": "string",
3016
+ "enum": [
3017
+ "active",
3018
+ "retired"
3019
+ ],
3020
+ "example": "active"
3021
+ },
3022
+ "created_at": {
3023
+ "type": "string",
3024
+ "format": "date-time",
3025
+ "example": "2026-05-20T14:03:12Z"
3026
+ },
3027
+ "destination": {
3028
+ "type": "object",
3029
+ "description": "Resolved destination (symbol plus the resolved contract address).",
3030
+ "properties": {
3031
+ "address": {
3032
+ "type": "string",
3033
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
3034
+ },
3035
+ "network_id": {
3036
+ "type": "string",
3037
+ "example": "60"
3038
+ },
3039
+ "eip155_id": {
3040
+ "type": "string",
3041
+ "example": "1"
3042
+ },
3043
+ "network_name": {
3044
+ "type": "string",
3045
+ "example": "Ethereum"
3046
+ },
3047
+ "asset_symbol": {
3048
+ "type": "string",
3049
+ "example": "USDC"
3050
+ },
3051
+ "asset_address": {
3052
+ "type": "string",
3053
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
3054
+ },
3055
+ "asset_decimals": {
3056
+ "type": "integer",
3057
+ "example": 6
3058
+ }
3059
+ }
3060
+ },
3061
+ "deposit_addresses": {
3062
+ "type": "array",
3063
+ "items": {
3064
+ "type": "object",
3065
+ "description": "A per-chain address a depositor can send funds to.",
3066
+ "properties": {
3067
+ "address": {
3068
+ "type": "string",
3069
+ "example": "0x7c2d9a1b3e4f5061728394a5b6c7d8e9f0a1b2c3"
3070
+ },
3071
+ "network_id": {
3072
+ "type": "string",
3073
+ "example": "60"
3074
+ },
3075
+ "eip155_id": {
3076
+ "type": "string",
3077
+ "example": "1"
3078
+ },
3079
+ "network_name": {
3080
+ "type": "string",
3081
+ "example": "Ethereum"
3082
+ },
3083
+ "accepted_assets": {
3084
+ "type": "array",
3085
+ "items": {
3086
+ "type": "object",
3087
+ "properties": {
3088
+ "symbol": {
3089
+ "type": "string",
3090
+ "example": "USDC"
3091
+ },
3092
+ "address": {
3093
+ "type": "string",
3094
+ "description": "Token contract address (zero address for native).",
3095
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
3096
+ },
3097
+ "decimals": {
3098
+ "type": "integer",
3099
+ "example": 6
3100
+ },
3101
+ "logo": {
3102
+ "type": "string",
3103
+ "example": "https://assets.stridge.com/tokens/usdc.png"
3104
+ }
3105
+ }
3106
+ }
3107
+ }
3108
+ }
3109
+ }
3110
+ },
3111
+ "routing_rules": {
3112
+ "type": "array",
3113
+ "description": "Empty when no rules are configured.",
3114
+ "items": {
3115
+ "type": "object",
3116
+ "description": "An echoed routing rule in dual form (symbol plus resolved contract address).",
3117
+ "properties": {
3118
+ "match": {
3119
+ "type": "object",
3120
+ "properties": {
3121
+ "source_network_id": {
3122
+ "type": "string",
3123
+ "example": "60"
3124
+ },
3125
+ "source_asset_symbol": {
3126
+ "type": "string",
3127
+ "example": "USDT"
3128
+ },
3129
+ "source_token_address": {
3130
+ "type": "string",
3131
+ "example": "0xdAC17F958D2ee523a2206206994597C13D831ec7"
3132
+ }
3133
+ }
3134
+ },
3135
+ "destination": {
3136
+ "type": "object",
3137
+ "properties": {
3138
+ "address": {
3139
+ "type": "string",
3140
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
3141
+ },
3142
+ "network_id": {
3143
+ "type": "string",
3144
+ "example": "60"
3145
+ },
3146
+ "eip155_id": {
3147
+ "type": "string",
3148
+ "example": "1"
3149
+ },
3150
+ "network_name": {
3151
+ "type": "string",
3152
+ "example": "Ethereum"
3153
+ },
3154
+ "asset_symbol": {
3155
+ "type": "string",
3156
+ "example": "USDC"
3157
+ },
3158
+ "asset_address": {
3159
+ "type": "string",
3160
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
3161
+ },
3162
+ "asset_decimals": {
3163
+ "type": "integer",
3164
+ "example": 6
3165
+ }
3166
+ }
3167
+ }
3168
+ }
3169
+ }
3170
+ }
3171
+ }
3172
+ },
3173
+ "UDAAddressList": {
3174
+ "type": "object",
3175
+ "properties": {
3176
+ "data": {
3177
+ "type": "array",
3178
+ "items": {
3179
+ "type": "object",
3180
+ "properties": {
3181
+ "id": {
3182
+ "type": "string",
3183
+ "example": "uda_2f8c1a9d4e5f6071"
3184
+ },
3185
+ "owner": {
3186
+ "type": "string",
3187
+ "example": "0x9f8e7d6c5b4a39281706f5e4d3c2b1a098765432"
3188
+ },
3189
+ "status": {
3190
+ "type": "string",
3191
+ "enum": [
3192
+ "active",
3193
+ "retired"
3194
+ ],
3195
+ "example": "active"
3196
+ },
3197
+ "created_at": {
3198
+ "type": "string",
3199
+ "format": "date-time",
3200
+ "example": "2026-05-20T14:03:12Z"
3201
+ },
3202
+ "destination": {
3203
+ "type": "object",
3204
+ "description": "Resolved destination (symbol plus the resolved contract address).",
3205
+ "properties": {
3206
+ "address": {
3207
+ "type": "string",
3208
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
3209
+ },
3210
+ "network_id": {
3211
+ "type": "string",
3212
+ "example": "60"
3213
+ },
3214
+ "eip155_id": {
3215
+ "type": "string",
3216
+ "example": "1"
3217
+ },
3218
+ "network_name": {
3219
+ "type": "string",
3220
+ "example": "Ethereum"
3221
+ },
3222
+ "asset_symbol": {
3223
+ "type": "string",
3224
+ "example": "USDC"
3225
+ },
3226
+ "asset_address": {
3227
+ "type": "string",
3228
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
3229
+ },
3230
+ "asset_decimals": {
3231
+ "type": "integer",
3232
+ "example": 6
3233
+ }
3234
+ }
3235
+ },
3236
+ "deposit_addresses": {
3237
+ "type": "array",
3238
+ "items": {
3239
+ "type": "object",
3240
+ "description": "A per-chain address a depositor can send funds to.",
3241
+ "properties": {
3242
+ "address": {
3243
+ "type": "string",
3244
+ "example": "0x7c2d9a1b3e4f5061728394a5b6c7d8e9f0a1b2c3"
3245
+ },
3246
+ "network_id": {
3247
+ "type": "string",
3248
+ "example": "60"
3249
+ },
3250
+ "eip155_id": {
3251
+ "type": "string",
3252
+ "example": "1"
3253
+ },
3254
+ "network_name": {
3255
+ "type": "string",
3256
+ "example": "Ethereum"
3257
+ },
3258
+ "accepted_assets": {
3259
+ "type": "array",
3260
+ "items": {
3261
+ "type": "object",
3262
+ "properties": {
3263
+ "symbol": {
3264
+ "type": "string",
3265
+ "example": "USDC"
3266
+ },
3267
+ "address": {
3268
+ "type": "string",
3269
+ "description": "Token contract address (zero address for native).",
3270
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
3271
+ },
3272
+ "decimals": {
3273
+ "type": "integer",
3274
+ "example": 6
3275
+ },
3276
+ "logo": {
3277
+ "type": "string",
3278
+ "example": "https://assets.stridge.com/tokens/usdc.png"
3279
+ }
3280
+ }
3281
+ }
3282
+ }
3283
+ }
3284
+ }
3285
+ },
3286
+ "routing_rules": {
3287
+ "type": "array",
3288
+ "description": "Empty when no rules are configured.",
3289
+ "items": {
3290
+ "type": "object",
3291
+ "description": "An echoed routing rule in dual form (symbol plus resolved contract address).",
3292
+ "properties": {
3293
+ "match": {
3294
+ "type": "object",
3295
+ "properties": {
3296
+ "source_network_id": {
3297
+ "type": "string",
3298
+ "example": "60"
3299
+ },
3300
+ "source_asset_symbol": {
3301
+ "type": "string",
3302
+ "example": "USDT"
3303
+ },
3304
+ "source_token_address": {
3305
+ "type": "string",
3306
+ "example": "0xdAC17F958D2ee523a2206206994597C13D831ec7"
3307
+ }
3308
+ }
3309
+ },
3310
+ "destination": {
3311
+ "type": "object",
3312
+ "properties": {
3313
+ "address": {
3314
+ "type": "string",
3315
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
3316
+ },
3317
+ "network_id": {
3318
+ "type": "string",
3319
+ "example": "60"
3320
+ },
3321
+ "eip155_id": {
3322
+ "type": "string",
3323
+ "example": "1"
3324
+ },
3325
+ "network_name": {
3326
+ "type": "string",
3327
+ "example": "Ethereum"
3328
+ },
3329
+ "asset_symbol": {
3330
+ "type": "string",
3331
+ "example": "USDC"
3332
+ },
3333
+ "asset_address": {
3334
+ "type": "string",
3335
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
3336
+ },
3337
+ "asset_decimals": {
3338
+ "type": "integer",
3339
+ "example": 6
3340
+ }
3341
+ }
3342
+ }
3343
+ }
3344
+ }
3345
+ }
3346
+ }
3347
+ }
3348
+ },
3349
+ "pagination": {
3350
+ "type": "object",
3351
+ "properties": {
3352
+ "count": {
3353
+ "type": "integer",
3354
+ "description": "Number of items in this page.",
3355
+ "example": 20
3356
+ },
3357
+ "limit": {
3358
+ "type": "integer",
3359
+ "example": 50
3360
+ },
3361
+ "offset": {
3362
+ "type": "integer",
3363
+ "example": 0
3364
+ }
3365
+ }
3366
+ }
3367
+ }
3368
+ },
3369
+ "QuoteSide": {
3370
+ "type": "object",
3371
+ "properties": {
3372
+ "network_id": {
3373
+ "type": "integer",
3374
+ "description": "EIP-155 chain id for this side.",
3375
+ "example": 1
3376
+ },
3377
+ "asset_address": {
3378
+ "type": "string",
3379
+ "example": "0x0000000000000000000000000000000000000000"
3380
+ },
3381
+ "amount": {
3382
+ "type": "string",
3383
+ "description": "Amount in the asset's smallest unit.",
3384
+ "example": "1000000000000000000"
3385
+ }
3386
+ }
3387
+ },
3388
+ "QuoteFeeItem": {
3389
+ "type": "object",
3390
+ "properties": {
3391
+ "kind": {
3392
+ "type": "string",
3393
+ "example": "platform"
3394
+ },
3395
+ "amount": {
3396
+ "type": "string",
3397
+ "example": "2500000000000000"
3398
+ },
3399
+ "source": {
3400
+ "type": "string",
3401
+ "example": "stridge"
3402
+ },
3403
+ "recipient": {
3404
+ "type": "string",
3405
+ "example": "0xfee0000000000000000000000000000000000000"
3406
+ }
3407
+ }
3408
+ },
3409
+ "QuoteFees": {
3410
+ "type": "object",
3411
+ "properties": {
3412
+ "total_fee": {
3413
+ "type": "string",
3414
+ "example": "3500000000000000"
3415
+ },
3416
+ "gas_fee": {
3417
+ "type": "string",
3418
+ "example": "1000000000000000"
3419
+ },
3420
+ "network_reserve": {
3421
+ "type": "string",
3422
+ "description": "Chain-level reserve (e.g. TRON bandwidth).",
3423
+ "example": "0"
3424
+ },
3425
+ "platform_fee": {
3426
+ "type": "string",
3427
+ "example": "2500000000000000"
3428
+ },
3429
+ "provider_fee": {
3430
+ "type": "string",
3431
+ "description": "Third-party (e.g. LiFi / Relay) fee.",
3432
+ "example": "0"
3433
+ },
3434
+ "items": {
3435
+ "type": "array",
3436
+ "items": {
3437
+ "type": "object",
3438
+ "properties": {
3439
+ "kind": {
3440
+ "type": "string",
3441
+ "example": "platform"
3442
+ },
3443
+ "amount": {
3444
+ "type": "string",
3445
+ "example": "2500000000000000"
3446
+ },
3447
+ "source": {
3448
+ "type": "string",
3449
+ "example": "stridge"
3450
+ },
3451
+ "recipient": {
3452
+ "type": "string",
3453
+ "example": "0xfee0000000000000000000000000000000000000"
3454
+ }
3455
+ }
3456
+ }
3457
+ }
3458
+ }
3459
+ },
3460
+ "QuoteRoute": {
3461
+ "type": "object",
3462
+ "properties": {
3463
+ "provider": {
3464
+ "type": "string",
3465
+ "example": "lifi"
3466
+ },
3467
+ "scenario": {
3468
+ "type": "string",
3469
+ "example": "cross_chain_swap"
3470
+ },
3471
+ "estimated_time_seconds": {
3472
+ "type": "integer",
3473
+ "example": 45
3474
+ }
3475
+ }
3476
+ },
3477
+ "Quote": {
3478
+ "type": "object",
3479
+ "properties": {
3480
+ "from": {
3481
+ "type": "object",
3482
+ "properties": {
3483
+ "network_id": {
3484
+ "type": "integer",
3485
+ "description": "EIP-155 chain id for this side.",
3486
+ "example": 1
3487
+ },
3488
+ "asset_address": {
3489
+ "type": "string",
3490
+ "example": "0x0000000000000000000000000000000000000000"
3491
+ },
3492
+ "amount": {
3493
+ "type": "string",
3494
+ "description": "Amount in the asset's smallest unit.",
3495
+ "example": "1000000000000000000"
3496
+ }
3497
+ }
3498
+ },
3499
+ "to": {
3500
+ "type": "object",
3501
+ "properties": {
3502
+ "network_id": {
3503
+ "type": "integer",
3504
+ "description": "EIP-155 chain id for this side.",
3505
+ "example": 1
3506
+ },
3507
+ "asset_address": {
3508
+ "type": "string",
3509
+ "example": "0x0000000000000000000000000000000000000000"
3510
+ },
3511
+ "amount": {
3512
+ "type": "string",
3513
+ "description": "Amount in the asset's smallest unit.",
3514
+ "example": "1000000000000000000"
3515
+ }
3516
+ }
3517
+ },
3518
+ "exchange_rate": {
3519
+ "type": "string",
3520
+ "example": "0.9985"
3521
+ },
3522
+ "expires_at": {
3523
+ "type": "string",
3524
+ "format": "date-time",
3525
+ "example": "2026-05-29T12:05:00Z"
3526
+ },
3527
+ "fees": {
3528
+ "type": "object",
3529
+ "properties": {
3530
+ "total_fee": {
3531
+ "type": "string",
3532
+ "example": "3500000000000000"
3533
+ },
3534
+ "gas_fee": {
3535
+ "type": "string",
3536
+ "example": "1000000000000000"
3537
+ },
3538
+ "network_reserve": {
3539
+ "type": "string",
3540
+ "description": "Chain-level reserve (e.g. TRON bandwidth).",
3541
+ "example": "0"
3542
+ },
3543
+ "platform_fee": {
3544
+ "type": "string",
3545
+ "example": "2500000000000000"
3546
+ },
3547
+ "provider_fee": {
3548
+ "type": "string",
3549
+ "description": "Third-party (e.g. LiFi / Relay) fee.",
3550
+ "example": "0"
3551
+ },
3552
+ "items": {
3553
+ "type": "array",
3554
+ "items": {
3555
+ "type": "object",
3556
+ "properties": {
3557
+ "kind": {
3558
+ "type": "string",
3559
+ "example": "platform"
3560
+ },
3561
+ "amount": {
3562
+ "type": "string",
3563
+ "example": "2500000000000000"
3564
+ },
3565
+ "source": {
3566
+ "type": "string",
3567
+ "example": "stridge"
3568
+ },
3569
+ "recipient": {
3570
+ "type": "string",
3571
+ "example": "0xfee0000000000000000000000000000000000000"
3572
+ }
3573
+ }
3574
+ }
3575
+ }
3576
+ }
3577
+ },
3578
+ "route": {
3579
+ "type": "object",
3580
+ "properties": {
3581
+ "provider": {
3582
+ "type": "string",
3583
+ "example": "lifi"
3584
+ },
3585
+ "scenario": {
3586
+ "type": "string",
3587
+ "example": "cross_chain_swap"
3588
+ },
3589
+ "estimated_time_seconds": {
3590
+ "type": "integer",
3591
+ "example": 45
3592
+ }
3593
+ }
3594
+ }
3595
+ }
3596
+ },
3597
+ "SettlementDeposit": {
3598
+ "type": "object",
3599
+ "properties": {
3600
+ "address": {
3601
+ "type": "string",
3602
+ "example": "0x7c2d9a1b3e4f5061728394a5b6c7d8e9f0a1b2c3"
3603
+ },
3604
+ "amount": {
3605
+ "type": "string",
3606
+ "example": "1000000"
3607
+ },
3608
+ "asset_symbol": {
3609
+ "type": "string",
3610
+ "example": "USDC"
3611
+ },
3612
+ "asset_address": {
3613
+ "type": "string",
3614
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
3615
+ },
3616
+ "network_id": {
3617
+ "type": "integer",
3618
+ "example": 1
3619
+ },
3620
+ "network_name": {
3621
+ "type": "string",
3622
+ "example": "Ethereum"
3623
+ },
3624
+ "tx_hash": {
3625
+ "type": "string",
3626
+ "example": "0xab12cd34ef56...7890"
3627
+ },
3628
+ "confirmed_at": {
3629
+ "type": "string",
3630
+ "format": "date-time",
3631
+ "example": "2026-05-29T11:58:40Z"
3632
+ }
3633
+ }
3634
+ },
3635
+ "SettlementOutbound": {
3636
+ "type": "object",
3637
+ "properties": {
3638
+ "address": {
3639
+ "type": "string",
3640
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
3641
+ },
3642
+ "amount": {
3643
+ "type": "string",
3644
+ "example": "998500"
3645
+ },
3646
+ "asset_symbol": {
3647
+ "type": "string",
3648
+ "example": "USDC"
3649
+ },
3650
+ "asset_address": {
3651
+ "type": "string",
3652
+ "example": "0x55d398326f99059fF775485246999027B3197955"
3653
+ },
3654
+ "network_id": {
3655
+ "type": "integer",
3656
+ "example": 56
3657
+ },
3658
+ "network_name": {
3659
+ "type": "string",
3660
+ "example": "BNB Smart Chain"
3661
+ },
3662
+ "tx_hash": {
3663
+ "type": "string",
3664
+ "example": "0xcd34ef5678...90ab"
3665
+ },
3666
+ "settled_at": {
3667
+ "type": "string",
3668
+ "format": "date-time",
3669
+ "example": "2026-05-29T11:59:25Z"
3670
+ }
3671
+ }
3672
+ },
3673
+ "SettlementFees": {
3674
+ "type": "object",
3675
+ "properties": {
3676
+ "total": {
3677
+ "type": "string",
3678
+ "example": "1500"
3679
+ },
3680
+ "platform": {
3681
+ "type": "string",
3682
+ "example": "1500"
3683
+ },
3684
+ "provider": {
3685
+ "type": "string",
3686
+ "example": "0"
3687
+ },
3688
+ "fee_amount": {
3689
+ "type": "string",
3690
+ "description": "Equal to `total` (back-compat field).",
3691
+ "example": "1500"
3692
+ }
3693
+ }
3694
+ },
3695
+ "SettlementRoute": {
3696
+ "type": "object",
3697
+ "properties": {
3698
+ "provider": {
3699
+ "type": "string",
3700
+ "example": "lifi"
3701
+ },
3702
+ "type": {
3703
+ "type": "string",
3704
+ "example": "cross_chain_swap"
3705
+ },
3706
+ "time_ms": {
3707
+ "type": "integer",
3708
+ "example": 45000
3709
+ }
3710
+ }
3711
+ },
3712
+ "Settlement": {
3713
+ "type": "object",
3714
+ "properties": {
3715
+ "id": {
3716
+ "type": "string",
3717
+ "example": "stl_71829304a5b6c7d8"
3718
+ },
3719
+ "uda_id": {
3720
+ "type": "string",
3721
+ "example": "uda_2f8c1a9d4e5f6071"
3722
+ },
3723
+ "status": {
3724
+ "type": "string",
3725
+ "enum": [
3726
+ "created",
3727
+ "routing",
3728
+ "completed",
3729
+ "failed",
3730
+ "retrying"
3731
+ ],
3732
+ "example": "completed"
3733
+ },
3734
+ "created_at": {
3735
+ "type": "string",
3736
+ "format": "date-time",
3737
+ "example": "2026-05-29T11:58:41Z"
3738
+ },
3739
+ "updated_at": {
3740
+ "type": "string",
3741
+ "format": "date-time",
3742
+ "example": "2026-05-29T11:59:25Z"
3743
+ },
3744
+ "error": {
3745
+ "type": "string",
3746
+ "description": "Failure reason when `status` is `failed`; empty otherwise.",
3747
+ "example": ""
3748
+ },
3749
+ "deposit": {
3750
+ "type": "object",
3751
+ "properties": {
3752
+ "address": {
3753
+ "type": "string",
3754
+ "example": "0x7c2d9a1b3e4f5061728394a5b6c7d8e9f0a1b2c3"
3755
+ },
3756
+ "amount": {
3757
+ "type": "string",
3758
+ "example": "1000000"
3759
+ },
3760
+ "asset_symbol": {
3761
+ "type": "string",
3762
+ "example": "USDC"
3763
+ },
3764
+ "asset_address": {
3765
+ "type": "string",
3766
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
3767
+ },
3768
+ "network_id": {
3769
+ "type": "integer",
3770
+ "example": 1
3771
+ },
3772
+ "network_name": {
3773
+ "type": "string",
3774
+ "example": "Ethereum"
3775
+ },
3776
+ "tx_hash": {
3777
+ "type": "string",
3778
+ "example": "0xab12cd34ef56...7890"
3779
+ },
3780
+ "confirmed_at": {
3781
+ "type": "string",
3782
+ "format": "date-time",
3783
+ "example": "2026-05-29T11:58:40Z"
3784
+ }
3785
+ }
3786
+ },
3787
+ "settlement": {
3788
+ "type": "object",
3789
+ "properties": {
3790
+ "address": {
3791
+ "type": "string",
3792
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
3793
+ },
3794
+ "amount": {
3795
+ "type": "string",
3796
+ "example": "998500"
3797
+ },
3798
+ "asset_symbol": {
3799
+ "type": "string",
3800
+ "example": "USDC"
3801
+ },
3802
+ "asset_address": {
3803
+ "type": "string",
3804
+ "example": "0x55d398326f99059fF775485246999027B3197955"
3805
+ },
3806
+ "network_id": {
3807
+ "type": "integer",
3808
+ "example": 56
3809
+ },
3810
+ "network_name": {
3811
+ "type": "string",
3812
+ "example": "BNB Smart Chain"
3813
+ },
3814
+ "tx_hash": {
3815
+ "type": "string",
3816
+ "example": "0xcd34ef5678...90ab"
3817
+ },
3818
+ "settled_at": {
3819
+ "type": "string",
3820
+ "format": "date-time",
3821
+ "example": "2026-05-29T11:59:25Z"
3822
+ }
3823
+ }
3824
+ },
3825
+ "fees": {
3826
+ "type": "object",
3827
+ "properties": {
3828
+ "total": {
3829
+ "type": "string",
3830
+ "example": "1500"
3831
+ },
3832
+ "platform": {
3833
+ "type": "string",
3834
+ "example": "1500"
3835
+ },
3836
+ "provider": {
3837
+ "type": "string",
3838
+ "example": "0"
3839
+ },
3840
+ "fee_amount": {
3841
+ "type": "string",
3842
+ "description": "Equal to `total` (back-compat field).",
3843
+ "example": "1500"
3844
+ }
3845
+ }
3846
+ },
3847
+ "route": {
3848
+ "type": "object",
3849
+ "properties": {
3850
+ "provider": {
3851
+ "type": "string",
3852
+ "example": "lifi"
3853
+ },
3854
+ "type": {
3855
+ "type": "string",
3856
+ "example": "cross_chain_swap"
3857
+ },
3858
+ "time_ms": {
3859
+ "type": "integer",
3860
+ "example": 45000
3861
+ }
3862
+ }
3863
+ }
3864
+ }
3865
+ },
3866
+ "SettlementList": {
3867
+ "type": "object",
3868
+ "properties": {
3869
+ "data": {
3870
+ "type": "array",
3871
+ "items": {
3872
+ "type": "object",
3873
+ "properties": {
3874
+ "id": {
3875
+ "type": "string",
3876
+ "example": "stl_71829304a5b6c7d8"
3877
+ },
3878
+ "uda_id": {
3879
+ "type": "string",
3880
+ "example": "uda_2f8c1a9d4e5f6071"
3881
+ },
3882
+ "status": {
3883
+ "type": "string",
3884
+ "enum": [
3885
+ "created",
3886
+ "routing",
3887
+ "completed",
3888
+ "failed",
3889
+ "retrying"
3890
+ ],
3891
+ "example": "completed"
3892
+ },
3893
+ "created_at": {
3894
+ "type": "string",
3895
+ "format": "date-time",
3896
+ "example": "2026-05-29T11:58:41Z"
3897
+ },
3898
+ "updated_at": {
3899
+ "type": "string",
3900
+ "format": "date-time",
3901
+ "example": "2026-05-29T11:59:25Z"
3902
+ },
3903
+ "error": {
3904
+ "type": "string",
3905
+ "description": "Failure reason when `status` is `failed`; empty otherwise.",
3906
+ "example": ""
3907
+ },
3908
+ "deposit": {
3909
+ "type": "object",
3910
+ "properties": {
3911
+ "address": {
3912
+ "type": "string",
3913
+ "example": "0x7c2d9a1b3e4f5061728394a5b6c7d8e9f0a1b2c3"
3914
+ },
3915
+ "amount": {
3916
+ "type": "string",
3917
+ "example": "1000000"
3918
+ },
3919
+ "asset_symbol": {
3920
+ "type": "string",
3921
+ "example": "USDC"
3922
+ },
3923
+ "asset_address": {
3924
+ "type": "string",
3925
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
3926
+ },
3927
+ "network_id": {
3928
+ "type": "integer",
3929
+ "example": 1
3930
+ },
3931
+ "network_name": {
3932
+ "type": "string",
3933
+ "example": "Ethereum"
3934
+ },
3935
+ "tx_hash": {
3936
+ "type": "string",
3937
+ "example": "0xab12cd34ef56...7890"
3938
+ },
3939
+ "confirmed_at": {
3940
+ "type": "string",
3941
+ "format": "date-time",
3942
+ "example": "2026-05-29T11:58:40Z"
3943
+ }
3944
+ }
3945
+ },
3946
+ "settlement": {
3947
+ "type": "object",
3948
+ "properties": {
3949
+ "address": {
3950
+ "type": "string",
3951
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
3952
+ },
3953
+ "amount": {
3954
+ "type": "string",
3955
+ "example": "998500"
3956
+ },
3957
+ "asset_symbol": {
3958
+ "type": "string",
3959
+ "example": "USDC"
3960
+ },
3961
+ "asset_address": {
3962
+ "type": "string",
3963
+ "example": "0x55d398326f99059fF775485246999027B3197955"
3964
+ },
3965
+ "network_id": {
3966
+ "type": "integer",
3967
+ "example": 56
3968
+ },
3969
+ "network_name": {
3970
+ "type": "string",
3971
+ "example": "BNB Smart Chain"
3972
+ },
3973
+ "tx_hash": {
3974
+ "type": "string",
3975
+ "example": "0xcd34ef5678...90ab"
3976
+ },
3977
+ "settled_at": {
3978
+ "type": "string",
3979
+ "format": "date-time",
3980
+ "example": "2026-05-29T11:59:25Z"
3981
+ }
3982
+ }
3983
+ },
3984
+ "fees": {
3985
+ "type": "object",
3986
+ "properties": {
3987
+ "total": {
3988
+ "type": "string",
3989
+ "example": "1500"
3990
+ },
3991
+ "platform": {
3992
+ "type": "string",
3993
+ "example": "1500"
3994
+ },
3995
+ "provider": {
3996
+ "type": "string",
3997
+ "example": "0"
3998
+ },
3999
+ "fee_amount": {
4000
+ "type": "string",
4001
+ "description": "Equal to `total` (back-compat field).",
4002
+ "example": "1500"
4003
+ }
4004
+ }
4005
+ },
4006
+ "route": {
4007
+ "type": "object",
4008
+ "properties": {
4009
+ "provider": {
4010
+ "type": "string",
4011
+ "example": "lifi"
4012
+ },
4013
+ "type": {
4014
+ "type": "string",
4015
+ "example": "cross_chain_swap"
4016
+ },
4017
+ "time_ms": {
4018
+ "type": "integer",
4019
+ "example": 45000
4020
+ }
4021
+ }
4022
+ }
4023
+ }
4024
+ }
4025
+ },
4026
+ "pagination": {
4027
+ "type": "object",
4028
+ "properties": {
4029
+ "count": {
4030
+ "type": "integer",
4031
+ "description": "Number of items in this page.",
4032
+ "example": 20
4033
+ },
4034
+ "limit": {
4035
+ "type": "integer",
4036
+ "example": 50
4037
+ },
4038
+ "offset": {
4039
+ "type": "integer",
4040
+ "example": 0
4041
+ }
4042
+ }
4043
+ }
4044
+ }
4045
+ },
4046
+ "SettlementsByReference": {
4047
+ "type": "object",
4048
+ "properties": {
4049
+ "reference": {
4050
+ "type": "string",
4051
+ "description": "The reference that was looked up.",
4052
+ "example": "0xab12cd34ef56...7890"
4053
+ },
4054
+ "count": {
4055
+ "type": "integer",
4056
+ "example": 1
4057
+ },
4058
+ "data": {
4059
+ "type": "array",
4060
+ "items": {
4061
+ "type": "object",
4062
+ "properties": {
4063
+ "id": {
4064
+ "type": "string",
4065
+ "example": "stl_71829304a5b6c7d8"
4066
+ },
4067
+ "uda_id": {
4068
+ "type": "string",
4069
+ "example": "uda_2f8c1a9d4e5f6071"
4070
+ },
4071
+ "status": {
4072
+ "type": "string",
4073
+ "enum": [
4074
+ "created",
4075
+ "routing",
4076
+ "completed",
4077
+ "failed",
4078
+ "retrying"
4079
+ ],
4080
+ "example": "completed"
4081
+ },
4082
+ "created_at": {
4083
+ "type": "string",
4084
+ "format": "date-time",
4085
+ "example": "2026-05-29T11:58:41Z"
4086
+ },
4087
+ "updated_at": {
4088
+ "type": "string",
4089
+ "format": "date-time",
4090
+ "example": "2026-05-29T11:59:25Z"
4091
+ },
4092
+ "error": {
4093
+ "type": "string",
4094
+ "description": "Failure reason when `status` is `failed`; empty otherwise.",
4095
+ "example": ""
4096
+ },
4097
+ "deposit": {
4098
+ "type": "object",
4099
+ "properties": {
4100
+ "address": {
4101
+ "type": "string",
4102
+ "example": "0x7c2d9a1b3e4f5061728394a5b6c7d8e9f0a1b2c3"
4103
+ },
4104
+ "amount": {
4105
+ "type": "string",
4106
+ "example": "1000000"
4107
+ },
4108
+ "asset_symbol": {
4109
+ "type": "string",
4110
+ "example": "USDC"
4111
+ },
4112
+ "asset_address": {
4113
+ "type": "string",
4114
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
4115
+ },
4116
+ "network_id": {
4117
+ "type": "integer",
4118
+ "example": 1
4119
+ },
4120
+ "network_name": {
4121
+ "type": "string",
4122
+ "example": "Ethereum"
4123
+ },
4124
+ "tx_hash": {
4125
+ "type": "string",
4126
+ "example": "0xab12cd34ef56...7890"
4127
+ },
4128
+ "confirmed_at": {
4129
+ "type": "string",
4130
+ "format": "date-time",
4131
+ "example": "2026-05-29T11:58:40Z"
4132
+ }
4133
+ }
4134
+ },
4135
+ "settlement": {
4136
+ "type": "object",
4137
+ "properties": {
4138
+ "address": {
4139
+ "type": "string",
4140
+ "example": "0x3a1f8b2c9d4e5f60718293a4b5c6d7e8f9012345"
4141
+ },
4142
+ "amount": {
4143
+ "type": "string",
4144
+ "example": "998500"
4145
+ },
4146
+ "asset_symbol": {
4147
+ "type": "string",
4148
+ "example": "USDC"
4149
+ },
4150
+ "asset_address": {
4151
+ "type": "string",
4152
+ "example": "0x55d398326f99059fF775485246999027B3197955"
4153
+ },
4154
+ "network_id": {
4155
+ "type": "integer",
4156
+ "example": 56
4157
+ },
4158
+ "network_name": {
4159
+ "type": "string",
4160
+ "example": "BNB Smart Chain"
4161
+ },
4162
+ "tx_hash": {
4163
+ "type": "string",
4164
+ "example": "0xcd34ef5678...90ab"
4165
+ },
4166
+ "settled_at": {
4167
+ "type": "string",
4168
+ "format": "date-time",
4169
+ "example": "2026-05-29T11:59:25Z"
4170
+ }
4171
+ }
4172
+ },
4173
+ "fees": {
4174
+ "type": "object",
4175
+ "properties": {
4176
+ "total": {
4177
+ "type": "string",
4178
+ "example": "1500"
4179
+ },
4180
+ "platform": {
4181
+ "type": "string",
4182
+ "example": "1500"
4183
+ },
4184
+ "provider": {
4185
+ "type": "string",
4186
+ "example": "0"
4187
+ },
4188
+ "fee_amount": {
4189
+ "type": "string",
4190
+ "description": "Equal to `total` (back-compat field).",
4191
+ "example": "1500"
4192
+ }
4193
+ }
4194
+ },
4195
+ "route": {
4196
+ "type": "object",
4197
+ "properties": {
4198
+ "provider": {
4199
+ "type": "string",
4200
+ "example": "lifi"
4201
+ },
4202
+ "type": {
4203
+ "type": "string",
4204
+ "example": "cross_chain_swap"
4205
+ },
4206
+ "time_ms": {
4207
+ "type": "integer",
4208
+ "example": 45000
4209
+ }
4210
+ }
4211
+ }
4212
+ }
4213
+ }
4214
+ }
4215
+ }
4216
+ },
4217
+ "NativeCurrency": {
4218
+ "type": "object",
4219
+ "properties": {
4220
+ "symbol": {
4221
+ "type": "string",
4222
+ "example": "ETH"
4223
+ },
4224
+ "name": {
4225
+ "type": "string",
4226
+ "example": "Ether"
4227
+ },
4228
+ "decimals": {
4229
+ "type": "integer",
4230
+ "example": 18
4231
+ },
4232
+ "logo": {
4233
+ "type": "string",
4234
+ "example": "https://assets.stridge.com/tokens/eth.png"
4235
+ },
4236
+ "min_deposit_usd": {
4237
+ "type": "string",
4238
+ "example": "1.00"
4239
+ },
4240
+ "price_impact": {
4241
+ "type": "string",
4242
+ "example": "0"
4243
+ }
4244
+ }
4245
+ },
4246
+ "AssetInfo": {
4247
+ "type": "object",
4248
+ "properties": {
4249
+ "symbol": {
4250
+ "type": "string",
4251
+ "example": "USDC"
4252
+ },
4253
+ "name": {
4254
+ "type": "string",
4255
+ "example": "USD Coin"
4256
+ },
4257
+ "address": {
4258
+ "type": "string",
4259
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
4260
+ },
4261
+ "decimals": {
4262
+ "type": "integer",
4263
+ "example": 6
4264
+ },
4265
+ "logo": {
4266
+ "type": "string",
4267
+ "example": "https://assets.stridge.com/tokens/usdc.png"
4268
+ },
4269
+ "min_deposit_usd": {
4270
+ "type": "string",
4271
+ "example": "1.00"
4272
+ },
4273
+ "price_impact": {
4274
+ "type": "string",
4275
+ "example": "0"
4276
+ }
4277
+ }
4278
+ },
4279
+ "SupportedAssetChain": {
4280
+ "type": "object",
4281
+ "properties": {
4282
+ "network_id": {
4283
+ "type": "string",
4284
+ "example": "60"
4285
+ },
4286
+ "network_name": {
4287
+ "type": "string",
4288
+ "example": "Ethereum"
4289
+ },
4290
+ "network_symbol": {
4291
+ "type": "string",
4292
+ "example": "ETH"
4293
+ },
4294
+ "eip155_id": {
4295
+ "type": "integer",
4296
+ "example": 1
4297
+ },
4298
+ "chain_type": {
4299
+ "type": "string",
4300
+ "enum": [
4301
+ "EVM",
4302
+ "TVM"
4303
+ ],
4304
+ "example": "EVM"
4305
+ },
4306
+ "native_currency": {
4307
+ "type": "object",
4308
+ "properties": {
4309
+ "symbol": {
4310
+ "type": "string",
4311
+ "example": "ETH"
4312
+ },
4313
+ "name": {
4314
+ "type": "string",
4315
+ "example": "Ether"
4316
+ },
4317
+ "decimals": {
4318
+ "type": "integer",
4319
+ "example": 18
4320
+ },
4321
+ "logo": {
4322
+ "type": "string",
4323
+ "example": "https://assets.stridge.com/tokens/eth.png"
4324
+ },
4325
+ "min_deposit_usd": {
4326
+ "type": "string",
4327
+ "example": "1.00"
4328
+ },
4329
+ "price_impact": {
4330
+ "type": "string",
4331
+ "example": "0"
4332
+ }
4333
+ }
4334
+ },
4335
+ "assets": {
4336
+ "type": "array",
4337
+ "items": {
4338
+ "type": "object",
4339
+ "properties": {
4340
+ "symbol": {
4341
+ "type": "string",
4342
+ "example": "USDC"
4343
+ },
4344
+ "name": {
4345
+ "type": "string",
4346
+ "example": "USD Coin"
4347
+ },
4348
+ "address": {
4349
+ "type": "string",
4350
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
4351
+ },
4352
+ "decimals": {
4353
+ "type": "integer",
4354
+ "example": 6
4355
+ },
4356
+ "logo": {
4357
+ "type": "string",
4358
+ "example": "https://assets.stridge.com/tokens/usdc.png"
4359
+ },
4360
+ "min_deposit_usd": {
4361
+ "type": "string",
4362
+ "example": "1.00"
4363
+ },
4364
+ "price_impact": {
4365
+ "type": "string",
4366
+ "example": "0"
4367
+ }
4368
+ }
4369
+ }
4370
+ }
4371
+ }
4372
+ },
4373
+ "SupportedAssetsResponse": {
4374
+ "type": "object",
4375
+ "properties": {
4376
+ "assets": {
4377
+ "type": "array",
4378
+ "items": {
4379
+ "type": "object",
4380
+ "properties": {
4381
+ "network_id": {
4382
+ "type": "string",
4383
+ "example": "60"
4384
+ },
4385
+ "network_name": {
4386
+ "type": "string",
4387
+ "example": "Ethereum"
4388
+ },
4389
+ "network_symbol": {
4390
+ "type": "string",
4391
+ "example": "ETH"
4392
+ },
4393
+ "eip155_id": {
4394
+ "type": "integer",
4395
+ "example": 1
4396
+ },
4397
+ "chain_type": {
4398
+ "type": "string",
4399
+ "enum": [
4400
+ "EVM",
4401
+ "TVM"
4402
+ ],
4403
+ "example": "EVM"
4404
+ },
4405
+ "native_currency": {
4406
+ "type": "object",
4407
+ "properties": {
4408
+ "symbol": {
4409
+ "type": "string",
4410
+ "example": "ETH"
4411
+ },
4412
+ "name": {
4413
+ "type": "string",
4414
+ "example": "Ether"
4415
+ },
4416
+ "decimals": {
4417
+ "type": "integer",
4418
+ "example": 18
4419
+ },
4420
+ "logo": {
4421
+ "type": "string",
4422
+ "example": "https://assets.stridge.com/tokens/eth.png"
4423
+ },
4424
+ "min_deposit_usd": {
4425
+ "type": "string",
4426
+ "example": "1.00"
4427
+ },
4428
+ "price_impact": {
4429
+ "type": "string",
4430
+ "example": "0"
4431
+ }
4432
+ }
4433
+ },
4434
+ "assets": {
4435
+ "type": "array",
4436
+ "items": {
4437
+ "type": "object",
4438
+ "properties": {
4439
+ "symbol": {
4440
+ "type": "string",
4441
+ "example": "USDC"
4442
+ },
4443
+ "name": {
4444
+ "type": "string",
4445
+ "example": "USD Coin"
4446
+ },
4447
+ "address": {
4448
+ "type": "string",
4449
+ "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
4450
+ },
4451
+ "decimals": {
4452
+ "type": "integer",
4453
+ "example": 6
4454
+ },
4455
+ "logo": {
4456
+ "type": "string",
4457
+ "example": "https://assets.stridge.com/tokens/usdc.png"
4458
+ },
4459
+ "min_deposit_usd": {
4460
+ "type": "string",
4461
+ "example": "1.00"
4462
+ },
4463
+ "price_impact": {
4464
+ "type": "string",
4465
+ "example": "0"
4466
+ }
4467
+ }
4468
+ }
4469
+ }
4470
+ }
4471
+ }
4472
+ }
4473
+ }
4474
+ }
4475
+ }
4476
+ }
4477
+ }