@1claw/sdk 0.32.1 → 0.33.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.
@@ -2432,6 +2432,28 @@ export interface paths {
2432
2432
  patch?: never;
2433
2433
  trace?: never;
2434
2434
  };
2435
+ "/v1/treasury/wallets/spend-policy": {
2436
+ parameters: {
2437
+ query?: never;
2438
+ header?: never;
2439
+ path?: never;
2440
+ cookie?: never;
2441
+ };
2442
+ /**
2443
+ * Get effective spend policy for current user
2444
+ * @description Returns the effective spend policy governing the authenticated user's
2445
+ * wallet transactions. Resolves from per-user override (if set) or the
2446
+ * app-wide default. Returns null if no policy is configured.
2447
+ */
2448
+ get: operations["getEffectiveSpendPolicy"];
2449
+ put?: never;
2450
+ post?: never;
2451
+ delete?: never;
2452
+ options?: never;
2453
+ head?: never;
2454
+ patch?: never;
2455
+ trace?: never;
2456
+ };
2435
2457
  "/v1/webhooks": {
2436
2458
  parameters: {
2437
2459
  query?: never;
@@ -3568,6 +3590,71 @@ export interface paths {
3568
3590
  patch?: never;
3569
3591
  trace?: never;
3570
3592
  };
3593
+ "/v1/platform/apps/{appId}/spend-policies": {
3594
+ parameters: {
3595
+ query?: never;
3596
+ header?: never;
3597
+ path?: never;
3598
+ cookie?: never;
3599
+ };
3600
+ /**
3601
+ * List spend policies for app
3602
+ * @description Returns all spend policies configured for the platform app.
3603
+ */
3604
+ get: operations["listSpendPolicies"];
3605
+ put?: never;
3606
+ /**
3607
+ * Create wallet spend policy
3608
+ * @description Create an app-wide spend policy that governs what embedded wallet users
3609
+ * can do with their wallets. Policies apply to all connected users by default
3610
+ * and can be overridden per-user via connection-level policies.
3611
+ */
3612
+ post: operations["createSpendPolicy"];
3613
+ delete?: never;
3614
+ options?: never;
3615
+ head?: never;
3616
+ patch?: never;
3617
+ trace?: never;
3618
+ };
3619
+ "/v1/platform/apps/{appId}/spend-policies/{policyId}": {
3620
+ parameters: {
3621
+ query?: never;
3622
+ header?: never;
3623
+ path?: never;
3624
+ cookie?: never;
3625
+ };
3626
+ get?: never;
3627
+ put?: never;
3628
+ post?: never;
3629
+ /** Delete a spend policy */
3630
+ delete: operations["deleteSpendPolicy"];
3631
+ options?: never;
3632
+ head?: never;
3633
+ patch?: never;
3634
+ trace?: never;
3635
+ };
3636
+ "/v1/platform/connections/{connectionId}/spend-policy": {
3637
+ parameters: {
3638
+ query?: never;
3639
+ header?: never;
3640
+ path?: never;
3641
+ cookie?: never;
3642
+ };
3643
+ get?: never;
3644
+ /**
3645
+ * Set per-user spend policy override
3646
+ * @description Override the app-wide spend policy for a specific connected user. This
3647
+ * policy takes precedence over the app default. Remove by deleting the
3648
+ * connection-level policy.
3649
+ */
3650
+ put: operations["setUserSpendPolicy"];
3651
+ post?: never;
3652
+ delete?: never;
3653
+ options?: never;
3654
+ head?: never;
3655
+ patch?: never;
3656
+ trace?: never;
3657
+ };
3571
3658
  "/v1/approvals": {
3572
3659
  parameters: {
3573
3660
  query?: never;
@@ -3825,6 +3912,118 @@ export interface paths {
3825
3912
  patch?: never;
3826
3913
  trace?: never;
3827
3914
  };
3915
+ "/v1/auth/email-otp/send": {
3916
+ parameters: {
3917
+ query?: never;
3918
+ header?: never;
3919
+ path?: never;
3920
+ cookie?: never;
3921
+ };
3922
+ get?: never;
3923
+ put?: never;
3924
+ /**
3925
+ * Send email OTP code
3926
+ * @description Sends a 6-digit one-time code to the specified email address.
3927
+ * No authentication required. Rate-limited per IP and per email.
3928
+ */
3929
+ post: operations["sendEmailOtp"];
3930
+ delete?: never;
3931
+ options?: never;
3932
+ head?: never;
3933
+ patch?: never;
3934
+ trace?: never;
3935
+ };
3936
+ "/v1/auth/email-otp/verify": {
3937
+ parameters: {
3938
+ query?: never;
3939
+ header?: never;
3940
+ path?: never;
3941
+ cookie?: never;
3942
+ };
3943
+ get?: never;
3944
+ put?: never;
3945
+ /**
3946
+ * Verify email OTP and get JWT
3947
+ * @description Verifies the 6-digit code sent to the user's email. If the user does not
3948
+ * exist, a new account is created. Optionally auto-provisions treasury wallets
3949
+ * for the specified chains. Returns a JWT for subsequent API calls.
3950
+ */
3951
+ post: operations["verifyEmailOtp"];
3952
+ delete?: never;
3953
+ options?: never;
3954
+ head?: never;
3955
+ patch?: never;
3956
+ trace?: never;
3957
+ };
3958
+ "/v1/oauth/authorize": {
3959
+ parameters: {
3960
+ query?: never;
3961
+ header?: never;
3962
+ path?: never;
3963
+ cookie?: never;
3964
+ };
3965
+ /**
3966
+ * Get OAuth consent info
3967
+ * @description Returns information about the platform app requesting authorization so the
3968
+ * UI can display a consent screen. Used by the 1Claw-hosted consent page.
3969
+ */
3970
+ get: operations["getOAuthConsent"];
3971
+ put?: never;
3972
+ /**
3973
+ * Submit OAuth consent decision
3974
+ * @description The user approves or denies the authorization request. On approval, returns
3975
+ * a redirect URL containing the authorization code. On denial, returns a
3976
+ * redirect URL with an error parameter.
3977
+ */
3978
+ post: operations["submitOAuthConsent"];
3979
+ delete?: never;
3980
+ options?: never;
3981
+ head?: never;
3982
+ patch?: never;
3983
+ trace?: never;
3984
+ };
3985
+ "/v1/oauth/token": {
3986
+ parameters: {
3987
+ query?: never;
3988
+ header?: never;
3989
+ path?: never;
3990
+ cookie?: never;
3991
+ };
3992
+ get?: never;
3993
+ put?: never;
3994
+ /**
3995
+ * Exchange authorization code for tokens
3996
+ * @description Standard OAuth 2.0 token endpoint. Exchanges an authorization code for an
3997
+ * access token and optional OIDC ID token. Supports PKCE via `code_verifier`.
3998
+ */
3999
+ post: operations["exchangeOAuthToken"];
4000
+ delete?: never;
4001
+ options?: never;
4002
+ head?: never;
4003
+ patch?: never;
4004
+ trace?: never;
4005
+ };
4006
+ "/v1/oauth/userinfo": {
4007
+ parameters: {
4008
+ query?: never;
4009
+ header?: never;
4010
+ path?: never;
4011
+ cookie?: never;
4012
+ };
4013
+ /**
4014
+ * Get authenticated user info (OIDC UserInfo)
4015
+ * @description Standard OIDC UserInfo endpoint. Returns claims about the authenticated user
4016
+ * based on the granted scopes.
4017
+ */
4018
+ get: operations["getOAuthUserInfo"];
4019
+ put?: never;
4020
+ post?: never;
4021
+ delete?: never;
4022
+ options?: never;
4023
+ head?: never;
4024
+ patch?: never;
4025
+ trace?: never;
4026
+ };
3828
4027
  }
3829
4028
  export type webhooks = Record<string, never>;
3830
4029
  export interface components {
@@ -6107,6 +6306,85 @@ export interface components {
6107
6306
  /** Format: date-time */
6108
6307
  created_at: string;
6109
6308
  };
6309
+ EmailOtpVerifyResponse: {
6310
+ /** @description JWT access token */
6311
+ token: string;
6312
+ /** Format: uuid */
6313
+ user_id: string;
6314
+ /** Format: uuid */
6315
+ org_id: string;
6316
+ is_new_user: boolean;
6317
+ /** Format: email */
6318
+ email: string;
6319
+ /** @description Ethereum address if auto_provision_chains included an EVM chain */
6320
+ wallet_address?: string | null;
6321
+ };
6322
+ OAuthConsentResponse: {
6323
+ app_name: string;
6324
+ app_slug: string;
6325
+ /** Format: uri */
6326
+ app_logo_url?: string | null;
6327
+ scopes: string[];
6328
+ /** Format: uri */
6329
+ redirect_uri: string;
6330
+ already_consented: boolean;
6331
+ };
6332
+ OAuthTokenResponse: {
6333
+ access_token: string;
6334
+ /** @enum {string} */
6335
+ token_type: "Bearer";
6336
+ /** @description Token lifetime in seconds */
6337
+ expires_in: number;
6338
+ /** @description OIDC ID token (when openid scope was granted) */
6339
+ id_token?: string | null;
6340
+ scope: string;
6341
+ };
6342
+ OAuthUserInfoResponse: {
6343
+ /** Format: uuid */
6344
+ sub: string;
6345
+ /** Format: email */
6346
+ email: string;
6347
+ name?: string | null;
6348
+ wallet_address?: string | null;
6349
+ };
6350
+ CreateSpendPolicyRequest: {
6351
+ /**
6352
+ * Format: uuid
6353
+ * @description Scope to a specific user (app-level policies only)
6354
+ */
6355
+ user_id?: string;
6356
+ /** @description Permitted destination addresses (empty = unrestricted) */
6357
+ to_allowlist?: string[];
6358
+ /** @description Blocked destination addresses */
6359
+ to_denylist?: string[];
6360
+ /** @description Maximum value per transaction in ETH (decimal string) */
6361
+ max_value_per_tx_eth?: string;
6362
+ /** @description Rolling 24h spend cap in ETH (decimal string) */
6363
+ daily_limit_eth?: string;
6364
+ /** @description Chains the user may transact on (empty = all enabled) */
6365
+ allowed_chains?: string[];
6366
+ /** @description Permitted ERC-20 token contract addresses */
6367
+ allowed_tokens?: string[];
6368
+ /** @description Maximum number of transactions per 24h window */
6369
+ max_transactions_per_day?: number;
6370
+ };
6371
+ SpendPolicyResponse: {
6372
+ /** Format: uuid */
6373
+ id: string;
6374
+ /** Format: uuid */
6375
+ platform_app_id: string;
6376
+ /** Format: uuid */
6377
+ user_id?: string | null;
6378
+ to_allowlist?: string[];
6379
+ to_denylist?: string[];
6380
+ max_value_per_tx_eth?: string | null;
6381
+ daily_limit_eth?: string | null;
6382
+ allowed_chains?: string[];
6383
+ allowed_tokens?: string[];
6384
+ max_transactions_per_day?: number | null;
6385
+ /** Format: date-time */
6386
+ created_at: string;
6387
+ };
6110
6388
  };
6111
6389
  responses: {
6112
6390
  /** @description Invalid request */
@@ -10125,6 +10403,29 @@ export interface operations {
10125
10403
  404: components["responses"]["NotFound"];
10126
10404
  };
10127
10405
  };
10406
+ getEffectiveSpendPolicy: {
10407
+ parameters: {
10408
+ query?: never;
10409
+ header?: never;
10410
+ path?: never;
10411
+ cookie?: never;
10412
+ };
10413
+ requestBody?: never;
10414
+ responses: {
10415
+ /** @description Effective spend policy */
10416
+ 200: {
10417
+ headers: {
10418
+ [name: string]: unknown;
10419
+ };
10420
+ content: {
10421
+ "application/json": {
10422
+ policy?: components["schemas"]["SpendPolicyResponse"] | null;
10423
+ };
10424
+ };
10425
+ };
10426
+ 401: components["responses"]["Unauthorized"];
10427
+ };
10428
+ };
10128
10429
  listWebhooks: {
10129
10430
  parameters: {
10130
10431
  query?: never;
@@ -10562,6 +10863,108 @@ export interface operations {
10562
10863
  };
10563
10864
  };
10564
10865
  };
10866
+ listSpendPolicies: {
10867
+ parameters: {
10868
+ query?: never;
10869
+ header?: never;
10870
+ path: {
10871
+ appId: string;
10872
+ };
10873
+ cookie?: never;
10874
+ };
10875
+ requestBody?: never;
10876
+ responses: {
10877
+ /** @description Spend policies */
10878
+ 200: {
10879
+ headers: {
10880
+ [name: string]: unknown;
10881
+ };
10882
+ content: {
10883
+ "application/json": {
10884
+ policies?: components["schemas"]["SpendPolicyResponse"][];
10885
+ };
10886
+ };
10887
+ };
10888
+ };
10889
+ };
10890
+ createSpendPolicy: {
10891
+ parameters: {
10892
+ query?: never;
10893
+ header?: never;
10894
+ path: {
10895
+ appId: string;
10896
+ };
10897
+ cookie?: never;
10898
+ };
10899
+ requestBody: {
10900
+ content: {
10901
+ "application/json": components["schemas"]["CreateSpendPolicyRequest"];
10902
+ };
10903
+ };
10904
+ responses: {
10905
+ /** @description Spend policy created */
10906
+ 201: {
10907
+ headers: {
10908
+ [name: string]: unknown;
10909
+ };
10910
+ content: {
10911
+ "application/json": components["schemas"]["SpendPolicyResponse"];
10912
+ };
10913
+ };
10914
+ 400: components["responses"]["BadRequest"];
10915
+ 403: components["responses"]["Forbidden"];
10916
+ };
10917
+ };
10918
+ deleteSpendPolicy: {
10919
+ parameters: {
10920
+ query?: never;
10921
+ header?: never;
10922
+ path: {
10923
+ appId: string;
10924
+ policyId: string;
10925
+ };
10926
+ cookie?: never;
10927
+ };
10928
+ requestBody?: never;
10929
+ responses: {
10930
+ /** @description Deleted */
10931
+ 204: {
10932
+ headers: {
10933
+ [name: string]: unknown;
10934
+ };
10935
+ content?: never;
10936
+ };
10937
+ 404: components["responses"]["NotFound"];
10938
+ };
10939
+ };
10940
+ setUserSpendPolicy: {
10941
+ parameters: {
10942
+ query?: never;
10943
+ header?: never;
10944
+ path: {
10945
+ connectionId: string;
10946
+ };
10947
+ cookie?: never;
10948
+ };
10949
+ requestBody: {
10950
+ content: {
10951
+ "application/json": components["schemas"]["CreateSpendPolicyRequest"];
10952
+ };
10953
+ };
10954
+ responses: {
10955
+ /** @description Spend policy set */
10956
+ 200: {
10957
+ headers: {
10958
+ [name: string]: unknown;
10959
+ };
10960
+ content: {
10961
+ "application/json": components["schemas"]["SpendPolicyResponse"];
10962
+ };
10963
+ };
10964
+ 400: components["responses"]["BadRequest"];
10965
+ 403: components["responses"]["Forbidden"];
10966
+ };
10967
+ };
10565
10968
  listApprovals: {
10566
10969
  parameters: {
10567
10970
  query?: {
@@ -10984,5 +11387,256 @@ export interface operations {
10984
11387
  };
10985
11388
  };
10986
11389
  };
11390
+ sendEmailOtp: {
11391
+ parameters: {
11392
+ query?: never;
11393
+ header?: never;
11394
+ path?: never;
11395
+ cookie?: never;
11396
+ };
11397
+ requestBody: {
11398
+ content: {
11399
+ "application/json": {
11400
+ /** Format: email */
11401
+ email: string;
11402
+ /**
11403
+ * Format: uuid
11404
+ * @description Optional platform app context for embedded wallet flows
11405
+ */
11406
+ platform_app_id?: string;
11407
+ };
11408
+ };
11409
+ };
11410
+ responses: {
11411
+ /** @description OTP sent */
11412
+ 200: {
11413
+ headers: {
11414
+ [name: string]: unknown;
11415
+ };
11416
+ content: {
11417
+ "application/json": {
11418
+ /** @enum {string} */
11419
+ status?: "sent";
11420
+ };
11421
+ };
11422
+ };
11423
+ /** @description Rate limited */
11424
+ 429: {
11425
+ headers: {
11426
+ [name: string]: unknown;
11427
+ };
11428
+ content?: never;
11429
+ };
11430
+ };
11431
+ };
11432
+ verifyEmailOtp: {
11433
+ parameters: {
11434
+ query?: never;
11435
+ header?: never;
11436
+ path?: never;
11437
+ cookie?: never;
11438
+ };
11439
+ requestBody: {
11440
+ content: {
11441
+ "application/json": {
11442
+ /** Format: email */
11443
+ email: string;
11444
+ /** @description 6-digit OTP code */
11445
+ code: string;
11446
+ /** Format: uuid */
11447
+ platform_app_id?: string;
11448
+ /** @description Chains to auto-generate wallets for (e.g. ["ethereum", "base"]) */
11449
+ auto_provision_chains?: string[];
11450
+ };
11451
+ };
11452
+ };
11453
+ responses: {
11454
+ /** @description Existing user authenticated */
11455
+ 200: {
11456
+ headers: {
11457
+ [name: string]: unknown;
11458
+ };
11459
+ content: {
11460
+ "application/json": components["schemas"]["EmailOtpVerifyResponse"];
11461
+ };
11462
+ };
11463
+ /** @description New user created and authenticated */
11464
+ 201: {
11465
+ headers: {
11466
+ [name: string]: unknown;
11467
+ };
11468
+ content: {
11469
+ "application/json": components["schemas"]["EmailOtpVerifyResponse"];
11470
+ };
11471
+ };
11472
+ /** @description Invalid or expired code */
11473
+ 400: {
11474
+ headers: {
11475
+ [name: string]: unknown;
11476
+ };
11477
+ content?: never;
11478
+ };
11479
+ /** @description Rate limited */
11480
+ 429: {
11481
+ headers: {
11482
+ [name: string]: unknown;
11483
+ };
11484
+ content?: never;
11485
+ };
11486
+ };
11487
+ };
11488
+ getOAuthConsent: {
11489
+ parameters: {
11490
+ query: {
11491
+ /** @description Platform app slug */
11492
+ client_id: string;
11493
+ redirect_uri: string;
11494
+ response_type: "code";
11495
+ /** @description Space-delimited scopes (e.g. "openid email wallet") */
11496
+ scope?: string;
11497
+ state?: string;
11498
+ /** @description PKCE code challenge */
11499
+ code_challenge?: string;
11500
+ code_challenge_method?: "S256" | "plain";
11501
+ /** @description OIDC nonce for ID token replay protection */
11502
+ nonce?: string;
11503
+ };
11504
+ header?: never;
11505
+ path?: never;
11506
+ cookie?: never;
11507
+ };
11508
+ requestBody?: never;
11509
+ responses: {
11510
+ /** @description Consent screen data */
11511
+ 200: {
11512
+ headers: {
11513
+ [name: string]: unknown;
11514
+ };
11515
+ content: {
11516
+ "application/json": components["schemas"]["OAuthConsentResponse"];
11517
+ };
11518
+ };
11519
+ /** @description Invalid client_id, redirect_uri, or response_type */
11520
+ 400: {
11521
+ headers: {
11522
+ [name: string]: unknown;
11523
+ };
11524
+ content?: never;
11525
+ };
11526
+ };
11527
+ };
11528
+ submitOAuthConsent: {
11529
+ parameters: {
11530
+ query?: never;
11531
+ header?: never;
11532
+ path?: never;
11533
+ cookie?: never;
11534
+ };
11535
+ requestBody: {
11536
+ content: {
11537
+ "application/json": {
11538
+ approve: boolean;
11539
+ client_id: string;
11540
+ /** Format: uri */
11541
+ redirect_uri: string;
11542
+ scope?: string;
11543
+ state?: string;
11544
+ code_challenge?: string;
11545
+ /** @enum {string} */
11546
+ code_challenge_method?: "S256" | "plain";
11547
+ nonce?: string;
11548
+ };
11549
+ };
11550
+ };
11551
+ responses: {
11552
+ /** @description Redirect URL with authorization code or error */
11553
+ 200: {
11554
+ headers: {
11555
+ [name: string]: unknown;
11556
+ };
11557
+ content: {
11558
+ "application/json": {
11559
+ /** Format: uri */
11560
+ redirect_url: string;
11561
+ };
11562
+ };
11563
+ };
11564
+ /** @description Invalid request */
11565
+ 400: {
11566
+ headers: {
11567
+ [name: string]: unknown;
11568
+ };
11569
+ content?: never;
11570
+ };
11571
+ };
11572
+ };
11573
+ exchangeOAuthToken: {
11574
+ parameters: {
11575
+ query?: never;
11576
+ header?: never;
11577
+ path?: never;
11578
+ cookie?: never;
11579
+ };
11580
+ requestBody: {
11581
+ content: {
11582
+ "application/json": {
11583
+ /** @enum {string} */
11584
+ grant_type: "authorization_code";
11585
+ code: string;
11586
+ client_id: string;
11587
+ /** Format: uri */
11588
+ redirect_uri: string;
11589
+ /** @description PKCE code verifier (required when code_challenge was used) */
11590
+ code_verifier?: string;
11591
+ };
11592
+ };
11593
+ };
11594
+ responses: {
11595
+ /** @description Token response */
11596
+ 200: {
11597
+ headers: {
11598
+ [name: string]: unknown;
11599
+ };
11600
+ content: {
11601
+ "application/json": components["schemas"]["OAuthTokenResponse"];
11602
+ };
11603
+ };
11604
+ /** @description Invalid grant, code, or verifier */
11605
+ 400: {
11606
+ headers: {
11607
+ [name: string]: unknown;
11608
+ };
11609
+ content?: never;
11610
+ };
11611
+ /** @description Invalid client credentials */
11612
+ 401: {
11613
+ headers: {
11614
+ [name: string]: unknown;
11615
+ };
11616
+ content?: never;
11617
+ };
11618
+ };
11619
+ };
11620
+ getOAuthUserInfo: {
11621
+ parameters: {
11622
+ query?: never;
11623
+ header?: never;
11624
+ path?: never;
11625
+ cookie?: never;
11626
+ };
11627
+ requestBody?: never;
11628
+ responses: {
11629
+ /** @description User info */
11630
+ 200: {
11631
+ headers: {
11632
+ [name: string]: unknown;
11633
+ };
11634
+ content: {
11635
+ "application/json": components["schemas"]["OAuthUserInfoResponse"];
11636
+ };
11637
+ };
11638
+ 401: components["responses"]["Unauthorized"];
11639
+ };
11640
+ };
10987
11641
  }
10988
11642
  //# sourceMappingURL=api-types.d.ts.map