@openfort/openfort-node 0.7.4 → 0.7.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/openapi.json CHANGED
@@ -4294,176 +4294,6 @@
4294
4294
  "type": "object",
4295
4295
  "additionalProperties": false
4296
4296
  },
4297
- "TradeType": {
4298
- "enum": ["EXACT_INPUT", "EXACT_OUTPUT"],
4299
- "type": "string"
4300
- },
4301
- "CreateExchangeRequest": {
4302
- "properties": {
4303
- "chainId": {
4304
- "type": "integer",
4305
- "format": "int32",
4306
- "description": "The chain ID. Must be a [supported chain](/development/chains).",
4307
- "example": 80002
4308
- },
4309
- "fromAddress": {
4310
- "type": "string",
4311
- "description": "The public address that will sign and submit the transaction. If you provide one of a `pla_...` or `acc_...` it will be converted to the corresponding address.",
4312
- "example": "0x680d2719F09B23F644c136Ab7336D42b6a76AdcC"
4313
- },
4314
- "tokenInAddress": {
4315
- "type": "string",
4316
- "description": "Token address or 'native' to sell",
4317
- "example": "0x008518e76FAD03f592Bbb7E394C762d5FD54cb97"
4318
- },
4319
- "tokenOutAddress": {
4320
- "type": "string",
4321
- "description": "Token address or 'native' to buy",
4322
- "example": "0xF65B6f9c94187276C7d91F4F74134751d248bFeA"
4323
- },
4324
- "amount": {
4325
- "type": "string",
4326
- "description": "Amount in the smallest unit of the token",
4327
- "example": "100000"
4328
- },
4329
- "tradeType": {
4330
- "$ref": "#/components/schemas/TradeType",
4331
- "description": "The type of trade, exact input or exact output",
4332
- "example": "EXACT_INPUT"
4333
- },
4334
- "slippagePercent": {
4335
- "type": "number",
4336
- "format": "double",
4337
- "description": "The percentage of slippage tolerance. Default = 0.1. Max = 50. Min = 0",
4338
- "example": 20
4339
- },
4340
- "maxHops": {
4341
- "type": "number",
4342
- "format": "double",
4343
- "description": "Maximum hops allowed in optimal route. Default is 2",
4344
- "example": 2
4345
- },
4346
- "deadline": {
4347
- "type": "number",
4348
- "format": "double",
4349
- "description": "Latest time swap can execute. Default is 15 minutes",
4350
- "example": 15
4351
- },
4352
- "policy": {
4353
- "type": "string",
4354
- "description": "ID of the Policy that defines the gas sponsorship strategy (starts with `pol_`). If no Policy is provided, the own Account native token funds will be used to pay for gas.",
4355
- "example": "pol_7e07ae30-2a4d-48fa-803f-361da94905dd"
4356
- },
4357
- "optimistic": {
4358
- "type": "boolean",
4359
- "description": "Set to `true` to indicate that the transactionIntent request should be resolved as soon as possible, after the transactionIntent is created and simulated and before it arrives on chain.",
4360
- "example": true
4361
- }
4362
- },
4363
- "required": [
4364
- "chainId",
4365
- "fromAddress",
4366
- "tokenInAddress",
4367
- "tokenOutAddress",
4368
- "amount",
4369
- "tradeType"
4370
- ],
4371
- "type": "object",
4372
- "additionalProperties": false
4373
- },
4374
- "Token": {
4375
- "properties": {
4376
- "name": {
4377
- "type": "string"
4378
- },
4379
- "symbol": {
4380
- "type": "string"
4381
- },
4382
- "decimals": {
4383
- "type": "number",
4384
- "format": "double"
4385
- },
4386
- "address": {
4387
- "type": "string"
4388
- },
4389
- "chainId": {
4390
- "type": "number",
4391
- "format": "double"
4392
- }
4393
- },
4394
- "required": ["decimals", "address", "chainId"],
4395
- "type": "object",
4396
- "description": "Type representing a token"
4397
- },
4398
- "Amount": {
4399
- "properties": {
4400
- "value": {
4401
- "type": "string"
4402
- },
4403
- "token": {
4404
- "$ref": "#/components/schemas/Token"
4405
- }
4406
- },
4407
- "required": ["value", "token"],
4408
- "type": "object",
4409
- "description": "Interface representing a token amount"
4410
- },
4411
- "Fee": {
4412
- "properties": {
4413
- "amount": {
4414
- "$ref": "#/components/schemas/Amount"
4415
- },
4416
- "basisPoints": {
4417
- "type": "number",
4418
- "format": "double"
4419
- },
4420
- "recipient": {
4421
- "type": "string"
4422
- }
4423
- },
4424
- "required": ["amount", "basisPoints", "recipient"],
4425
- "type": "object",
4426
- "description": "Type representing the fees returned in the quote"
4427
- },
4428
- "QuoteExchangeResult": {
4429
- "properties": {
4430
- "amount": {
4431
- "$ref": "#/components/schemas/Amount"
4432
- },
4433
- "amountWithMaxSlippage": {
4434
- "$ref": "#/components/schemas/Amount"
4435
- },
4436
- "slippage": {
4437
- "type": "number",
4438
- "format": "double"
4439
- },
4440
- "fees": {
4441
- "items": {
4442
- "$ref": "#/components/schemas/Fee"
4443
- },
4444
- "type": "array"
4445
- },
4446
- "estimatedTXGasFee": {
4447
- "type": "string"
4448
- },
4449
- "estimatedTXGasFeeUSD": {
4450
- "type": "string"
4451
- },
4452
- "estimatedTXGasFeeToken": {
4453
- "type": "string"
4454
- }
4455
- },
4456
- "required": [
4457
- "amount",
4458
- "amountWithMaxSlippage",
4459
- "slippage",
4460
- "fees",
4461
- "estimatedTXGasFee",
4462
- "estimatedTXGasFeeUSD"
4463
- ],
4464
- "type": "object",
4465
- "additionalProperties": false
4466
- },
4467
4297
  "APITopic.BALANCE_CONTRACT": {
4468
4298
  "enum": ["balance.contract"],
4469
4299
  "type": "string"
@@ -5734,13 +5564,57 @@
5734
5564
  },
5735
5565
  "externalUserId": {
5736
5566
  "type": "string",
5737
- "description": "Filter by external user ID.",
5567
+ "description": "Filter by external user ID (accountId from linked accounts).",
5738
5568
  "example": "123454456687897"
5569
+ },
5570
+ "email": {
5571
+ "type": "string",
5572
+ "description": "Filter by user email.",
5573
+ "example": "user@example.com"
5574
+ },
5575
+ "phoneNumber": {
5576
+ "type": "string",
5577
+ "description": "Filter by user phone number.",
5578
+ "example": "+1234567890"
5579
+ },
5580
+ "authProviderId": {
5581
+ "type": "string",
5582
+ "description": "Filter by provider ID (e.g., \"google\", \"apple\", \"siwe\", \"credential\").",
5583
+ "example": "google"
5584
+ },
5585
+ "walletClientType": {
5586
+ "type": "string",
5587
+ "description": "Filter by wallet client type (for SIWE accounts).",
5588
+ "example": "metamask"
5589
+ }
5590
+ },
5591
+ "type": "object",
5592
+ "additionalProperties": false
5593
+ },
5594
+ "EntityType.WALLET": {
5595
+ "enum": ["wallet"],
5596
+ "type": "string"
5597
+ },
5598
+ "BaseEntityResponse_EntityType.WALLET_": {
5599
+ "properties": {
5600
+ "id": {
5601
+ "type": "string"
5602
+ },
5603
+ "object": {
5604
+ "$ref": "#/components/schemas/EntityType.WALLET"
5605
+ },
5606
+ "createdAt": {
5607
+ "type": "integer",
5608
+ "format": "int32"
5739
5609
  }
5740
5610
  },
5611
+ "required": ["id", "object", "createdAt"],
5741
5612
  "type": "object",
5742
5613
  "additionalProperties": false
5743
5614
  },
5615
+ "WalletResponse": {
5616
+ "$ref": "#/components/schemas/BaseEntityResponse_EntityType.WALLET_"
5617
+ },
5744
5618
  "BaseDeleteEntityResponse_EntityType.PLAYER_": {
5745
5619
  "properties": {
5746
5620
  "id": {
@@ -5824,7 +5698,7 @@
5824
5698
  "id": {
5825
5699
  "type": "string"
5826
5700
  },
5827
- "user": {
5701
+ "wallet": {
5828
5702
  "type": "string"
5829
5703
  },
5830
5704
  "accountType": {
@@ -5869,18 +5743,23 @@
5869
5743
  "recoveryShare": {
5870
5744
  "type": "string",
5871
5745
  "description": "The recovery share for the user's embedded signer.\nThis should be stored securely and provided to the user for account recovery."
5746
+ },
5747
+ "user": {
5748
+ "type": "string",
5749
+ "description": "User uuid"
5872
5750
  }
5873
5751
  },
5874
5752
  "required": [
5875
5753
  "id",
5876
- "user",
5754
+ "wallet",
5877
5755
  "accountType",
5878
5756
  "address",
5879
5757
  "chainType",
5880
5758
  "createdAt",
5881
5759
  "updatedAt",
5882
5760
  "custody",
5883
- "recoveryShare"
5761
+ "recoveryShare",
5762
+ "user"
5884
5763
  ],
5885
5764
  "type": "object",
5886
5765
  "additionalProperties": false
@@ -6438,20 +6317,25 @@
6438
6317
  "additionalProperties": false
6439
6318
  },
6440
6319
  "RegisterWalletSecretRequest": {
6441
- "description": "Request to register a new wallet secret (authentication key).",
6320
+ "description": "Request to register a new wallet secret (authentication key).\n\nUses provided-key authentication: the walletAuthToken JWT must be signed by\nthe private key corresponding to the publicKey being registered.",
6442
6321
  "properties": {
6443
6322
  "publicKey": {
6444
6323
  "type": "string",
6445
- "description": "ECDSA P-256 public key for wallet authentication (PEM or raw hex format).\nThis will be used to verify X-Wallet-Auth JWT signatures.",
6324
+ "description": "ECDSA P-256 public key for wallet authentication (PEM format).\nThis will be used to verify X-Wallet-Auth JWT signatures.",
6446
6325
  "example": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE..."
6447
6326
  },
6327
+ "walletAuthToken": {
6328
+ "type": "string",
6329
+ "description": "JWT signed with the private key corresponding to publicKey.\nThis proves possession of the private key without transmitting it.\n\nJWT must include: uris (matching request path), reqHash (SHA-256 of request body),\niat (issued at), nbf (not before), and optionally exp (expiration).",
6330
+ "example": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9..."
6331
+ },
6448
6332
  "keyId": {
6449
6333
  "type": "string",
6450
6334
  "description": "Key identifier for the secret.\nUsed to identify this key in X-Wallet-Auth JWT headers.",
6451
6335
  "example": "ws_1234567890"
6452
6336
  }
6453
6337
  },
6454
- "required": ["publicKey"],
6338
+ "required": ["publicKey", "walletAuthToken"],
6455
6339
  "type": "object",
6456
6340
  "additionalProperties": false
6457
6341
  },
@@ -6520,12 +6404,17 @@
6520
6404
  "additionalProperties": false
6521
6405
  },
6522
6406
  "RotateWalletSecretRequest": {
6523
- "description": "Request to rotate wallet secret (authentication key).",
6407
+ "description": "Request to rotate wallet secret (authentication key).\n\nUses provided-key authentication: the walletAuthToken JWT must be signed by\nthe private key corresponding to the newPublicKey being registered.",
6524
6408
  "properties": {
6525
- "newSecretPublicKey": {
6409
+ "newPublicKey": {
6410
+ "type": "string",
6411
+ "description": "New ECDSA P-256 public key for wallet authentication (PEM format).\nThis will replace the current wallet secret used for X-Wallet-Auth JWT signing.",
6412
+ "example": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE..."
6413
+ },
6414
+ "walletAuthToken": {
6526
6415
  "type": "string",
6527
- "description": "New ECDSA P-256 public key for wallet authentication.\nThis will replace the current wallet secret used for X-Wallet-Auth JWT signing.",
6528
- "example": "04abc123def456..."
6416
+ "description": "JWT signed with the private key corresponding to newPublicKey.\nThis proves possession of the private key without transmitting it.\n\nJWT must include: uris (matching request path), reqHash (SHA-256 of request body),\niat (issued at), nbf (not before), and optionally exp (expiration).",
6417
+ "example": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9..."
6529
6418
  },
6530
6419
  "newKeyId": {
6531
6420
  "type": "string",
@@ -6533,7 +6422,7 @@
6533
6422
  "example": "ws_1234567890"
6534
6423
  }
6535
6424
  },
6536
- "required": ["newSecretPublicKey"],
6425
+ "required": ["newPublicKey", "walletAuthToken"],
6537
6426
  "type": "object",
6538
6427
  "additionalProperties": false
6539
6428
  },
@@ -6542,7 +6431,7 @@
6542
6431
  "id": {
6543
6432
  "type": "string"
6544
6433
  },
6545
- "user": {
6434
+ "wallet": {
6546
6435
  "type": "string"
6547
6436
  },
6548
6437
  "accountType": {
@@ -6587,7 +6476,7 @@
6587
6476
  },
6588
6477
  "required": [
6589
6478
  "id",
6590
- "user",
6479
+ "wallet",
6591
6480
  "accountType",
6592
6481
  "address",
6593
6482
  "chainType",
@@ -6753,8 +6642,8 @@
6753
6642
  },
6754
6643
  "user": {
6755
6644
  "type": "string",
6756
- "description": "ID of the user this account belongs to (starts with `pla_`). If none is provided, a new user will be created.",
6757
- "example": "pla_e0b84653-1741-4a3d-9e91-2b0fd2942f60"
6645
+ "description": "ID of the user this account belongs to (starts with `usr_`). If none is provided, a new user will be created.",
6646
+ "example": "usr_e0b84653-1741-4a3d-9e91-2b0fd2942f60"
6758
6647
  },
6759
6648
  "account": {
6760
6649
  "type": "string",
@@ -7758,7 +7647,7 @@
7758
7647
  "additionalProperties": false
7759
7648
  },
7760
7649
  "ApiKeyType": {
7761
- "enum": ["pk", "sk", "pk_shield", "sk_shield"],
7650
+ "enum": ["pk", "sk", "pk_shield", "sk_shield", "pk_wallet"],
7762
7651
  "type": "string"
7763
7652
  },
7764
7653
  "CreateProjectApiKeyRequest": {
@@ -9792,6 +9681,51 @@
9792
9681
  }
9793
9682
  },
9794
9683
  "paths": {
9684
+ "/rpc/solana/{cluster}": {
9685
+ "post": {
9686
+ "operationId": "HandleSolanaRpcRequest",
9687
+ "responses": {
9688
+ "200": {
9689
+ "description": "JSON-RPC response",
9690
+ "content": {
9691
+ "application/json": {
9692
+ "schema": {
9693
+ "$ref": "#/components/schemas/JsonRpcResponse"
9694
+ }
9695
+ }
9696
+ }
9697
+ }
9698
+ },
9699
+ "description": "Execute Solana JSON-RPC 2.0 methods via Kora\n\nThis endpoint handles Solana-specific JSON-RPC 2.0 requests for gasless transactions\nusing the Kora paymaster service.\n\n**Supported clusters:**\n- `mainnet-beta` - Solana mainnet-beta\n- `devnet` - Solana devnet\n\n**Supported methods (per Kora JSON-RPC API spec):**\n- `getConfig`: Retrieve Kora server configuration\n- `getPayerSigner`: Get fee payer signer and payment destination\n- `getSupportedTokens`: List tokens accepted for fee payment\n- `getBlockhash`: Get latest blockhash\n- `estimateTransactionFee`: Estimate fees in lamports and token\n- `transferTransaction`: Create token transfer with Kora as fee payer\n- `signTransaction`: Sign transaction without broadcasting\n- `signAndSendTransaction`: Sign and broadcast to Solana",
9700
+ "summary": "Execute Solana Kora JSON-RPC methods",
9701
+ "tags": ["Solana RPC"],
9702
+ "security": [
9703
+ {
9704
+ "pk": []
9705
+ }
9706
+ ],
9707
+ "parameters": [
9708
+ {
9709
+ "in": "path",
9710
+ "name": "cluster",
9711
+ "required": true,
9712
+ "schema": {
9713
+ "type": "string"
9714
+ }
9715
+ }
9716
+ ],
9717
+ "requestBody": {
9718
+ "required": true,
9719
+ "content": {
9720
+ "application/json": {
9721
+ "schema": {
9722
+ "$ref": "#/components/schemas/JsonRpcRequest"
9723
+ }
9724
+ }
9725
+ }
9726
+ }
9727
+ }
9728
+ },
9795
9729
  "/rpc": {
9796
9730
  "post": {
9797
9731
  "operationId": "HandleRpcRequest",
@@ -15247,226 +15181,6 @@
15247
15181
  ]
15248
15182
  }
15249
15183
  },
15250
- "/v1/exchange": {
15251
- "post": {
15252
- "operationId": "CreateSwap",
15253
- "responses": {
15254
- "200": {
15255
- "description": "OK.",
15256
- "content": {
15257
- "application/json": {
15258
- "schema": {
15259
- "$ref": "#/components/schemas/TransactionIntentResponse"
15260
- },
15261
- "examples": {
15262
- "Example 1": {
15263
- "value": {
15264
- "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
15265
- "createdAt": 1689869074,
15266
- "object": "transactionIntent",
15267
- "details": {
15268
- "userOperationHash": "0x25d3...005c",
15269
- "userOperation": {
15270
- "sender": "0x48930Cd730652bf0B18Ef8c80cD0Fa1Cc72A233E",
15271
- "nonce": "0x2",
15272
- "initCode": "0x",
15273
- "callData": "0xb61d...0000",
15274
- "callGasLimit": "0x27863",
15275
- "verificationGasLimit": "0x16001",
15276
- "preVerificationGas": "0xb818",
15277
- "maxFeePerGas": "0x62590091",
15278
- "maxPriorityFeePerGas": "0x62590091",
15279
- "paymasterAndData": "0x3210...b51c",
15280
- "signature": "0x6202...3d1b"
15281
- }
15282
- },
15283
- "chainId": 80002,
15284
- "abstractionType": "accountAbstractionV6",
15285
- "updatedAt": 1689869074,
15286
- "policy": {
15287
- "id": "pol_..."
15288
- },
15289
- "player": {
15290
- "id": "pla_..."
15291
- },
15292
- "account": {
15293
- "id": "acc_..."
15294
- },
15295
- "response": {
15296
- "createdAt": 1689869074,
15297
- "logs": [
15298
- {
15299
- "removed": false,
15300
- "transactionIndex": 0,
15301
- "blockNumber": 44904492,
15302
- "transactionHash": "0x25d3...005c",
15303
- "address": "0x5FF1...2789",
15304
- "topics": ["0xbb47...f972"],
15305
- "data": "0x",
15306
- "logIndex": 0,
15307
- "blockHash": "0x8a69...6d59"
15308
- }
15309
- ],
15310
- "blockNumber": 8789286,
15311
- "transactionHash": "0x25d3...005c",
15312
- "to": "0x0576...1B57",
15313
- "gasUsed": "336730",
15314
- "status": 1
15315
- },
15316
- "interactions": [
15317
- {
15318
- "functionName": "mint",
15319
- "contract": "con_...",
15320
- "functionArgs": ["0x63B7...484f"]
15321
- }
15322
- ],
15323
- "transitions": [
15324
- {
15325
- "fromStatus": "none",
15326
- "toStatus": "new",
15327
- "at": 1750154762
15328
- },
15329
- {
15330
- "fromStatus": "new",
15331
- "toStatus": "sent",
15332
- "at": 1750154762
15333
- },
15334
- {
15335
- "fromStatus": "sent",
15336
- "toStatus": "indexed",
15337
- "at": 1750154762
15338
- }
15339
- ]
15340
- }
15341
- }
15342
- }
15343
- }
15344
- }
15345
- },
15346
- "400": {
15347
- "description": "Bad Request.",
15348
- "content": {
15349
- "application/json": {
15350
- "schema": {
15351
- "$ref": "#/components/schemas/InvalidRequestErrorResponse"
15352
- }
15353
- }
15354
- }
15355
- }
15356
- },
15357
- "description": "Creates token swap.",
15358
- "summary": "Create token swap.",
15359
- "tags": ["Exchange"],
15360
- "security": [
15361
- {
15362
- "sk": []
15363
- }
15364
- ],
15365
- "parameters": [],
15366
- "requestBody": {
15367
- "required": true,
15368
- "content": {
15369
- "application/json": {
15370
- "schema": {
15371
- "$ref": "#/components/schemas/CreateExchangeRequest"
15372
- }
15373
- }
15374
- }
15375
- }
15376
- }
15377
- },
15378
- "/v1/exchange/quote": {
15379
- "post": {
15380
- "operationId": "QuoteSwap",
15381
- "responses": {
15382
- "200": {
15383
- "description": "OK.",
15384
- "content": {
15385
- "application/json": {
15386
- "schema": {
15387
- "$ref": "#/components/schemas/QuoteExchangeResult"
15388
- },
15389
- "examples": {
15390
- "Example 1": {
15391
- "value": {
15392
- "amount": {
15393
- "token": {
15394
- "address": "0x008518e76FAD03f592Bbb7E394C762d5FD54cb97",
15395
- "chainId": 4337,
15396
- "decimals": 18,
15397
- "name": "TOKEN",
15398
- "symbol": "TKN"
15399
- },
15400
- "value": "1000000000000000000"
15401
- },
15402
- "slippage": 0.5,
15403
- "fees": [
15404
- {
15405
- "recipient": "0x008518e76FAD03f592Bbb7E394C762d5FD54cb97",
15406
- "basisPoints": 100,
15407
- "amount": {
15408
- "token": {
15409
- "address": "0x008518e76FAD03f592Bbb7E394C762d5FD54cb97",
15410
- "chainId": 4337,
15411
- "decimals": 18,
15412
- "name": "TOKEN",
15413
- "symbol": "TKN"
15414
- },
15415
- "value": "1000000000000000000"
15416
- }
15417
- }
15418
- ],
15419
- "amountWithMaxSlippage": {
15420
- "token": {
15421
- "address": "0x008518e76FAD03f592Bbb7E394C762d5FD54cb97",
15422
- "chainId": 4337,
15423
- "decimals": 18,
15424
- "name": "TOKEN",
15425
- "symbol": "TKN"
15426
- },
15427
- "value": "1000000000000000000"
15428
- },
15429
- "estimatedTXGasFee": "1000000000000000000",
15430
- "estimatedTXGasFeeToken": "12000",
15431
- "estimatedTXGasFeeUSD": "1"
15432
- }
15433
- }
15434
- }
15435
- }
15436
- }
15437
- },
15438
- "400": {
15439
- "description": "Bad Request.",
15440
- "content": {
15441
- "application/json": {
15442
- "schema": {
15443
- "$ref": "#/components/schemas/InvalidRequestErrorResponse"
15444
- }
15445
- }
15446
- }
15447
- }
15448
- },
15449
- "description": "Quote token swap.",
15450
- "summary": "Quote token swap.",
15451
- "tags": ["Exchange"],
15452
- "security": [
15453
- {
15454
- "sk": []
15455
- }
15456
- ],
15457
- "parameters": [],
15458
- "requestBody": {
15459
- "required": true,
15460
- "content": {
15461
- "application/json": {
15462
- "schema": {
15463
- "$ref": "#/components/schemas/CreateExchangeRequest"
15464
- }
15465
- }
15466
- }
15467
- }
15468
- }
15469
- },
15470
15184
  "/v1/events": {
15471
15185
  "get": {
15472
15186
  "operationId": "GetEvents",
@@ -17251,7 +16965,7 @@
17251
16965
  "url": "http://localhost:3000",
17252
16966
  "data": [
17253
16967
  {
17254
- "id": "pla_***",
16968
+ "id": "usr_***",
17255
16969
  "createdAt": 123456789,
17256
16970
  "name": "Satoshi",
17257
16971
  "email": "satoshi@openfort.io",
@@ -17269,7 +16983,7 @@
17269
16983
  ]
17270
16984
  },
17271
16985
  {
17272
- "id": "pla_***",
16986
+ "id": "usr_***",
17273
16987
  "createdAt": 123456789,
17274
16988
  "name": "Nakamoto",
17275
16989
  "email": "nakamoto@openfort.io",
@@ -17354,7 +17068,7 @@
17354
17068
  "example": "John"
17355
17069
  },
17356
17070
  {
17357
- "description": "Filter by external user ID.",
17071
+ "description": "Filter by external user ID (accountId from linked accounts).",
17358
17072
  "in": "query",
17359
17073
  "name": "externalUserId",
17360
17074
  "required": false,
@@ -17362,6 +17076,46 @@
17362
17076
  "type": "string"
17363
17077
  },
17364
17078
  "example": "123454456687897"
17079
+ },
17080
+ {
17081
+ "description": "Filter by user email.",
17082
+ "in": "query",
17083
+ "name": "email",
17084
+ "required": false,
17085
+ "schema": {
17086
+ "type": "string"
17087
+ },
17088
+ "example": "user@example.com"
17089
+ },
17090
+ {
17091
+ "description": "Filter by user phone number.",
17092
+ "in": "query",
17093
+ "name": "phoneNumber",
17094
+ "required": false,
17095
+ "schema": {
17096
+ "type": "string"
17097
+ },
17098
+ "example": "+1234567890"
17099
+ },
17100
+ {
17101
+ "description": "Filter by provider ID (e.g., \"google\", \"apple\", \"siwe\", \"credential\").",
17102
+ "in": "query",
17103
+ "name": "authProviderId",
17104
+ "required": false,
17105
+ "schema": {
17106
+ "type": "string"
17107
+ },
17108
+ "example": "google"
17109
+ },
17110
+ {
17111
+ "description": "Filter by wallet client type (for SIWE accounts).",
17112
+ "in": "query",
17113
+ "name": "walletClientType",
17114
+ "required": false,
17115
+ "schema": {
17116
+ "type": "string"
17117
+ },
17118
+ "example": "metamask"
17365
17119
  }
17366
17120
  ]
17367
17121
  }
@@ -17380,7 +17134,7 @@
17380
17134
  "examples": {
17381
17135
  "Example 1": {
17382
17136
  "value": {
17383
- "id": "pla_***",
17137
+ "id": "usr_***",
17384
17138
  "createdAt": 123456789,
17385
17139
  "name": "Satoshi",
17386
17140
  "email": "satoshi@openfort.io",
@@ -17482,6 +17236,59 @@
17482
17236
  ]
17483
17237
  }
17484
17238
  },
17239
+ "/v2/users/{id}/wallet": {
17240
+ "get": {
17241
+ "operationId": "GetUserWallet",
17242
+ "responses": {
17243
+ "200": {
17244
+ "description": "Successful response.",
17245
+ "content": {
17246
+ "application/json": {
17247
+ "schema": {
17248
+ "$ref": "#/components/schemas/WalletResponse"
17249
+ },
17250
+ "examples": {
17251
+ "Example 1": {
17252
+ "value": {
17253
+ "id": "pla_00000000-0000-0000-0000-000000000000",
17254
+ "object": "wallet",
17255
+ "createdAt": 1689869074
17256
+ }
17257
+ }
17258
+ }
17259
+ }
17260
+ }
17261
+ },
17262
+ "401": {
17263
+ "description": "Error response."
17264
+ },
17265
+ "404": {
17266
+ "description": "User not found."
17267
+ }
17268
+ },
17269
+ "description": "Retrieves the wallet associated with an authenticated user.",
17270
+ "summary": "Get wallet for user.",
17271
+ "tags": ["Users"],
17272
+ "security": [
17273
+ {
17274
+ "sk": []
17275
+ },
17276
+ {
17277
+ "user_project": []
17278
+ }
17279
+ ],
17280
+ "parameters": [
17281
+ {
17282
+ "in": "path",
17283
+ "name": "id",
17284
+ "required": true,
17285
+ "schema": {
17286
+ "type": "string"
17287
+ }
17288
+ }
17289
+ ]
17290
+ }
17291
+ },
17485
17292
  "/v2/users/pregenerate": {
17486
17293
  "post": {
17487
17294
  "operationId": "pregenerateUserV2",
@@ -17903,7 +17710,7 @@
17903
17710
  "description": "Unauthorized."
17904
17711
  }
17905
17712
  },
17906
- "description": "Register a new wallet secret (authentication key).\n\nRegisters an ECDSA P-256 public key that will be used to verify\nX-Wallet-Auth JWT signatures. This is required before using WALLET_AUTH\nfor other backend wallet operations.",
17713
+ "description": "Register a new wallet secret (authentication key).\n\nRegisters an ECDSA P-256 public key that will be used to verify\nX-Wallet-Auth JWT signatures. This is required before using WALLET_AUTH\nfor other backend wallet operations.\n\nUses provided-key authentication: the request must include a walletAuthToken\nJWT signed by the private key corresponding to the publicKey being registered.\nThis proves possession of the private key without transmitting it.\n\nNote: Only ONE active secret is allowed per project. This call fails if an\nactive secret already exists; use rotateWalletSecret to replace an existing secret.",
17907
17714
  "summary": "Register wallet secret.",
17908
17715
  "tags": ["Backend Wallets"],
17909
17716
  "security": [
@@ -17950,7 +17757,7 @@
17950
17757
  "tags": ["Backend Wallets"],
17951
17758
  "security": [
17952
17759
  {
17953
- "wallet_auth": []
17760
+ "user_project": []
17954
17761
  }
17955
17762
  ],
17956
17763
  "parameters": [],
@@ -17984,12 +17791,12 @@
17984
17791
  "description": "Unauthorized."
17985
17792
  }
17986
17793
  },
17987
- "description": "Rotate wallet secret (authentication key).\n\nReplaces the current wallet secret (ECDSA P-256 public key) used for\nX-Wallet-Auth JWT signing. The old secret will be revoked.",
17794
+ "description": "Rotate wallet secret (authentication key).\n\nReplaces the current wallet secret (ECDSA P-256 public key) used for\nX-Wallet-Auth JWT signing. The old secret will be marked as \"rotated\"\nand immediately becomes unusable (no grace period).\n\nUses provided-key authentication: the request must include a walletAuthToken\nJWT signed by the private key corresponding to the NEW publicKey being registered.\nThis proves possession of the new private key without transmitting it.",
17988
17795
  "summary": "Rotate wallet secret.",
17989
17796
  "tags": ["Backend Wallets"],
17990
17797
  "security": [
17991
17798
  {
17992
- "wallet_auth": []
17799
+ "user_project": []
17993
17800
  }
17994
17801
  ],
17995
17802
  "parameters": [],
@@ -20571,7 +20378,7 @@
20571
20378
  "examples": {
20572
20379
  "Example 1": {
20573
20380
  "value": {
20574
- "id": "pla_***",
20381
+ "id": "usr_***",
20575
20382
  "createdAt": 123456789,
20576
20383
  "name": "Satoshi",
20577
20384
  "email": "satoshi@openfort.io",
@@ -20624,7 +20431,7 @@
20624
20431
  "examples": {
20625
20432
  "Example 1": {
20626
20433
  "value": {
20627
- "id": "pla_***",
20434
+ "id": "usr_***",
20628
20435
  "createdAt": 123456789,
20629
20436
  "name": "Satoshi",
20630
20437
  "email": "satoshi@openfort.io",