@1claw/openapi-spec 0.20.2 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/openapi.json +401 -1
- package/openapi.yaml +262 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -50,6 +50,8 @@ import spec from "@1claw/openapi-spec/openapi.json";
|
|
|
50
50
|
- **Vaults** — CRUD, CMEK enable/disable, key rotation with job tracking, MPC enable/disable (`POST /v1/vaults/{id}/mpc`, `DELETE /v1/vaults/{id}/mpc`)
|
|
51
51
|
- **Secrets** — CRUD, versioning, CMEK-encrypted flag, `client_share` in responses (MPC vaults)
|
|
52
52
|
- **Agents** — CRUD with `auth_method` (api_key, mtls, oidc_client_credentials), auto-generated SSH keypairs, `token_ttl_seconds`, `vault_ids`, Intents API, transaction guardrails (`tx_to_allowlist`, `tx_max_value_eth`, `tx_daily_limit_eth`, `tx_allowed_chains`), **OIDC federation knobs** (`federation_enabled`, `federation_audiences`, `federated_token_ttl_seconds`); **`GET /v1/agents/{id}`** includes **`tx_spent_today_eth`** (rolling UTC-day spend from recorded txs) for clients such as **Shroud** that enforce the daily cap alongside per-tx limits
|
|
53
|
+
- **Signing Keys** — Multi-chain key management: `POST /v1/agents/{id}/signing-keys` (provision), `GET .../signing-keys` (list), `POST .../signing-keys/{chain}/rotate`, `DELETE .../signing-keys/{chain}` (deactivate). Supports ethereum, bitcoin, solana, xrp, cardano, tron
|
|
54
|
+
- **Unified Signing** — `POST /v1/agents/{id}/sign` — single endpoint for EIP-191 personal_sign, EIP-712 typed_data, and EIP-2718 transaction types (legacy, EIP-1559, EIP-4844, EIP-7702)
|
|
53
55
|
- **Policies** — Glob-based access control
|
|
54
56
|
- **Sharing** — Links, user/agent shares, accept/decline
|
|
55
57
|
- **Billing** — Subscriptions, credits, x402, LLM token billing (see above)
|
package/openapi.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"openapi": "3.1.0",
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "1Claw API",
|
|
5
|
-
"version": "2.
|
|
5
|
+
"version": "2.11.0",
|
|
6
6
|
"description": "Secure secret management for AI agents. Provides vaults, secrets,\npolicy-based access control, agent identity, Intents API,\nsharing, billing, and audit logging.\n\nAll endpoints require JWT Bearer authentication unless marked with\n`security: []`.\n",
|
|
7
7
|
"contact": {
|
|
8
8
|
"email": "ops@1claw.xyz"
|
|
@@ -2646,6 +2646,181 @@
|
|
|
2646
2646
|
}
|
|
2647
2647
|
}
|
|
2648
2648
|
},
|
|
2649
|
+
"/v1/agents/{agent_id}/signing-keys": {
|
|
2650
|
+
"post": {
|
|
2651
|
+
"tags": [
|
|
2652
|
+
"Signing Keys"
|
|
2653
|
+
],
|
|
2654
|
+
"summary": "Provision a signing key for a chain",
|
|
2655
|
+
"operationId": "createSigningKey",
|
|
2656
|
+
"parameters": [
|
|
2657
|
+
{
|
|
2658
|
+
"$ref": "#/components/parameters/AgentId"
|
|
2659
|
+
}
|
|
2660
|
+
],
|
|
2661
|
+
"requestBody": {
|
|
2662
|
+
"required": true,
|
|
2663
|
+
"content": {
|
|
2664
|
+
"application/json": {
|
|
2665
|
+
"schema": {
|
|
2666
|
+
"$ref": "#/components/schemas/CreateSigningKeyRequest"
|
|
2667
|
+
}
|
|
2668
|
+
}
|
|
2669
|
+
}
|
|
2670
|
+
},
|
|
2671
|
+
"responses": {
|
|
2672
|
+
"201": {
|
|
2673
|
+
"description": "Signing key created",
|
|
2674
|
+
"content": {
|
|
2675
|
+
"application/json": {
|
|
2676
|
+
"schema": {
|
|
2677
|
+
"$ref": "#/components/schemas/SigningKeyResponse"
|
|
2678
|
+
}
|
|
2679
|
+
}
|
|
2680
|
+
}
|
|
2681
|
+
},
|
|
2682
|
+
"400": {
|
|
2683
|
+
"$ref": "#/components/responses/BadRequest"
|
|
2684
|
+
},
|
|
2685
|
+
"409": {
|
|
2686
|
+
"$ref": "#/components/responses/Conflict"
|
|
2687
|
+
}
|
|
2688
|
+
}
|
|
2689
|
+
},
|
|
2690
|
+
"get": {
|
|
2691
|
+
"tags": [
|
|
2692
|
+
"Signing Keys"
|
|
2693
|
+
],
|
|
2694
|
+
"summary": "List signing keys for an agent",
|
|
2695
|
+
"operationId": "listSigningKeys",
|
|
2696
|
+
"parameters": [
|
|
2697
|
+
{
|
|
2698
|
+
"$ref": "#/components/parameters/AgentId"
|
|
2699
|
+
}
|
|
2700
|
+
],
|
|
2701
|
+
"responses": {
|
|
2702
|
+
"200": {
|
|
2703
|
+
"description": "Signing keys list",
|
|
2704
|
+
"content": {
|
|
2705
|
+
"application/json": {
|
|
2706
|
+
"schema": {
|
|
2707
|
+
"$ref": "#/components/schemas/SigningKeyListResponse"
|
|
2708
|
+
}
|
|
2709
|
+
}
|
|
2710
|
+
}
|
|
2711
|
+
}
|
|
2712
|
+
}
|
|
2713
|
+
}
|
|
2714
|
+
},
|
|
2715
|
+
"/v1/agents/{agent_id}/signing-keys/{chain}/rotate": {
|
|
2716
|
+
"post": {
|
|
2717
|
+
"tags": [
|
|
2718
|
+
"Signing Keys"
|
|
2719
|
+
],
|
|
2720
|
+
"summary": "Rotate a signing key for a chain",
|
|
2721
|
+
"operationId": "rotateSigningKey",
|
|
2722
|
+
"parameters": [
|
|
2723
|
+
{
|
|
2724
|
+
"$ref": "#/components/parameters/AgentId"
|
|
2725
|
+
},
|
|
2726
|
+
{
|
|
2727
|
+
"name": "chain",
|
|
2728
|
+
"in": "path",
|
|
2729
|
+
"required": true,
|
|
2730
|
+
"schema": {
|
|
2731
|
+
"type": "string"
|
|
2732
|
+
}
|
|
2733
|
+
}
|
|
2734
|
+
],
|
|
2735
|
+
"responses": {
|
|
2736
|
+
"200": {
|
|
2737
|
+
"description": "Rotated signing key",
|
|
2738
|
+
"content": {
|
|
2739
|
+
"application/json": {
|
|
2740
|
+
"schema": {
|
|
2741
|
+
"$ref": "#/components/schemas/SigningKeyResponse"
|
|
2742
|
+
}
|
|
2743
|
+
}
|
|
2744
|
+
}
|
|
2745
|
+
},
|
|
2746
|
+
"404": {
|
|
2747
|
+
"$ref": "#/components/responses/NotFound"
|
|
2748
|
+
}
|
|
2749
|
+
}
|
|
2750
|
+
}
|
|
2751
|
+
},
|
|
2752
|
+
"/v1/agents/{agent_id}/signing-keys/{chain}": {
|
|
2753
|
+
"delete": {
|
|
2754
|
+
"tags": [
|
|
2755
|
+
"Signing Keys"
|
|
2756
|
+
],
|
|
2757
|
+
"summary": "Deactivate a signing key for a chain",
|
|
2758
|
+
"operationId": "deactivateSigningKey",
|
|
2759
|
+
"parameters": [
|
|
2760
|
+
{
|
|
2761
|
+
"$ref": "#/components/parameters/AgentId"
|
|
2762
|
+
},
|
|
2763
|
+
{
|
|
2764
|
+
"name": "chain",
|
|
2765
|
+
"in": "path",
|
|
2766
|
+
"required": true,
|
|
2767
|
+
"schema": {
|
|
2768
|
+
"type": "string"
|
|
2769
|
+
}
|
|
2770
|
+
}
|
|
2771
|
+
],
|
|
2772
|
+
"responses": {
|
|
2773
|
+
"204": {
|
|
2774
|
+
"description": "Key deactivated"
|
|
2775
|
+
},
|
|
2776
|
+
"404": {
|
|
2777
|
+
"$ref": "#/components/responses/NotFound"
|
|
2778
|
+
}
|
|
2779
|
+
}
|
|
2780
|
+
}
|
|
2781
|
+
},
|
|
2782
|
+
"/v1/agents/{agent_id}/sign": {
|
|
2783
|
+
"post": {
|
|
2784
|
+
"tags": [
|
|
2785
|
+
"Signing"
|
|
2786
|
+
],
|
|
2787
|
+
"summary": "Unified signing intent (EIP-191, EIP-712, EIP-2718 types 0-4)",
|
|
2788
|
+
"operationId": "signIntent",
|
|
2789
|
+
"parameters": [
|
|
2790
|
+
{
|
|
2791
|
+
"$ref": "#/components/parameters/AgentId"
|
|
2792
|
+
}
|
|
2793
|
+
],
|
|
2794
|
+
"requestBody": {
|
|
2795
|
+
"required": true,
|
|
2796
|
+
"content": {
|
|
2797
|
+
"application/json": {
|
|
2798
|
+
"schema": {
|
|
2799
|
+
"$ref": "#/components/schemas/SignIntentRequest"
|
|
2800
|
+
}
|
|
2801
|
+
}
|
|
2802
|
+
}
|
|
2803
|
+
},
|
|
2804
|
+
"responses": {
|
|
2805
|
+
"200": {
|
|
2806
|
+
"description": "Signed result",
|
|
2807
|
+
"content": {
|
|
2808
|
+
"application/json": {
|
|
2809
|
+
"schema": {
|
|
2810
|
+
"$ref": "#/components/schemas/SignIntentResponse"
|
|
2811
|
+
}
|
|
2812
|
+
}
|
|
2813
|
+
}
|
|
2814
|
+
},
|
|
2815
|
+
"400": {
|
|
2816
|
+
"$ref": "#/components/responses/BadRequest"
|
|
2817
|
+
},
|
|
2818
|
+
"403": {
|
|
2819
|
+
"$ref": "#/components/responses/Forbidden"
|
|
2820
|
+
}
|
|
2821
|
+
}
|
|
2822
|
+
}
|
|
2823
|
+
},
|
|
2649
2824
|
"/v1/chains": {
|
|
2650
2825
|
"get": {
|
|
2651
2826
|
"tags": [
|
|
@@ -4808,6 +4983,16 @@
|
|
|
4808
4983
|
}
|
|
4809
4984
|
}
|
|
4810
4985
|
}
|
|
4986
|
+
},
|
|
4987
|
+
"Conflict": {
|
|
4988
|
+
"description": "Resource already exists or conflict",
|
|
4989
|
+
"content": {
|
|
4990
|
+
"application/json": {
|
|
4991
|
+
"schema": {
|
|
4992
|
+
"$ref": "#/components/schemas/ProblemDetails"
|
|
4993
|
+
}
|
|
4994
|
+
}
|
|
4995
|
+
}
|
|
4811
4996
|
}
|
|
4812
4997
|
},
|
|
4813
4998
|
"schemas": {
|
|
@@ -6264,6 +6449,32 @@
|
|
|
6264
6449
|
"nullable": true,
|
|
6265
6450
|
"description": "Per-agent TTL override for federation tokens (60..=3600)."
|
|
6266
6451
|
},
|
|
6452
|
+
"signing_chains": {
|
|
6453
|
+
"type": "array",
|
|
6454
|
+
"items": {
|
|
6455
|
+
"type": "string"
|
|
6456
|
+
},
|
|
6457
|
+
"description": "Chains for which this agent has provisioned signing keys."
|
|
6458
|
+
},
|
|
6459
|
+
"eip712_domain_allowlist": {
|
|
6460
|
+
"type": "array",
|
|
6461
|
+
"items": {
|
|
6462
|
+
"type": "object"
|
|
6463
|
+
},
|
|
6464
|
+
"description": "JSON array of allowed EIP-712 domain entries."
|
|
6465
|
+
},
|
|
6466
|
+
"eip712_default_policy": {
|
|
6467
|
+
"type": "string",
|
|
6468
|
+
"enum": [
|
|
6469
|
+
"deny",
|
|
6470
|
+
"allow"
|
|
6471
|
+
],
|
|
6472
|
+
"description": "Default EIP-712 policy (deny blocks all unless allowlisted)."
|
|
6473
|
+
},
|
|
6474
|
+
"message_signing_enabled": {
|
|
6475
|
+
"type": "boolean",
|
|
6476
|
+
"description": "Whether EIP-191 personal_sign is enabled."
|
|
6477
|
+
},
|
|
6267
6478
|
"created_at": {
|
|
6268
6479
|
"type": "string",
|
|
6269
6480
|
"format": "date-time"
|
|
@@ -7181,6 +7392,195 @@
|
|
|
7181
7392
|
}
|
|
7182
7393
|
}
|
|
7183
7394
|
},
|
|
7395
|
+
"CreateSigningKeyRequest": {
|
|
7396
|
+
"type": "object",
|
|
7397
|
+
"required": [
|
|
7398
|
+
"chain"
|
|
7399
|
+
],
|
|
7400
|
+
"properties": {
|
|
7401
|
+
"chain": {
|
|
7402
|
+
"type": "string",
|
|
7403
|
+
"enum": [
|
|
7404
|
+
"ethereum",
|
|
7405
|
+
"bitcoin",
|
|
7406
|
+
"solana",
|
|
7407
|
+
"xrp",
|
|
7408
|
+
"cardano",
|
|
7409
|
+
"tron"
|
|
7410
|
+
]
|
|
7411
|
+
}
|
|
7412
|
+
}
|
|
7413
|
+
},
|
|
7414
|
+
"SigningKeyResponse": {
|
|
7415
|
+
"type": "object",
|
|
7416
|
+
"properties": {
|
|
7417
|
+
"id": {
|
|
7418
|
+
"type": "string",
|
|
7419
|
+
"format": "uuid"
|
|
7420
|
+
},
|
|
7421
|
+
"agent_id": {
|
|
7422
|
+
"type": "string",
|
|
7423
|
+
"format": "uuid"
|
|
7424
|
+
},
|
|
7425
|
+
"chain": {
|
|
7426
|
+
"type": "string"
|
|
7427
|
+
},
|
|
7428
|
+
"curve": {
|
|
7429
|
+
"type": "string"
|
|
7430
|
+
},
|
|
7431
|
+
"public_key": {
|
|
7432
|
+
"type": "string"
|
|
7433
|
+
},
|
|
7434
|
+
"address": {
|
|
7435
|
+
"type": "string",
|
|
7436
|
+
"nullable": true
|
|
7437
|
+
},
|
|
7438
|
+
"key_version": {
|
|
7439
|
+
"type": "integer"
|
|
7440
|
+
},
|
|
7441
|
+
"is_active": {
|
|
7442
|
+
"type": "boolean"
|
|
7443
|
+
},
|
|
7444
|
+
"created_at": {
|
|
7445
|
+
"type": "string",
|
|
7446
|
+
"format": "date-time"
|
|
7447
|
+
},
|
|
7448
|
+
"rotated_at": {
|
|
7449
|
+
"type": "string",
|
|
7450
|
+
"format": "date-time",
|
|
7451
|
+
"nullable": true
|
|
7452
|
+
}
|
|
7453
|
+
}
|
|
7454
|
+
},
|
|
7455
|
+
"SigningKeyListResponse": {
|
|
7456
|
+
"type": "object",
|
|
7457
|
+
"properties": {
|
|
7458
|
+
"keys": {
|
|
7459
|
+
"type": "array",
|
|
7460
|
+
"items": {
|
|
7461
|
+
"$ref": "#/components/schemas/SigningKeyResponse"
|
|
7462
|
+
}
|
|
7463
|
+
}
|
|
7464
|
+
}
|
|
7465
|
+
},
|
|
7466
|
+
"SignIntentRequest": {
|
|
7467
|
+
"type": "object",
|
|
7468
|
+
"required": [
|
|
7469
|
+
"intent_type",
|
|
7470
|
+
"chain"
|
|
7471
|
+
],
|
|
7472
|
+
"properties": {
|
|
7473
|
+
"intent_type": {
|
|
7474
|
+
"type": "string",
|
|
7475
|
+
"enum": [
|
|
7476
|
+
"personal_sign",
|
|
7477
|
+
"typed_data",
|
|
7478
|
+
"transaction"
|
|
7479
|
+
]
|
|
7480
|
+
},
|
|
7481
|
+
"chain": {
|
|
7482
|
+
"type": "string"
|
|
7483
|
+
},
|
|
7484
|
+
"signing_key_path": {
|
|
7485
|
+
"type": "string"
|
|
7486
|
+
},
|
|
7487
|
+
"message": {
|
|
7488
|
+
"type": "string",
|
|
7489
|
+
"description": "Hex-encoded message bytes (for personal_sign)"
|
|
7490
|
+
},
|
|
7491
|
+
"typed_data": {
|
|
7492
|
+
"type": "object",
|
|
7493
|
+
"description": "EIP-712 typed data JSON (for typed_data)"
|
|
7494
|
+
},
|
|
7495
|
+
"tx_type": {
|
|
7496
|
+
"type": "integer",
|
|
7497
|
+
"description": "EIP-2718 type: 0=legacy, 1=2930, 2=1559, 3=4844, 4=7702"
|
|
7498
|
+
},
|
|
7499
|
+
"to": {
|
|
7500
|
+
"type": "string"
|
|
7501
|
+
},
|
|
7502
|
+
"value": {
|
|
7503
|
+
"type": "string"
|
|
7504
|
+
},
|
|
7505
|
+
"data": {
|
|
7506
|
+
"type": "string"
|
|
7507
|
+
},
|
|
7508
|
+
"nonce": {
|
|
7509
|
+
"type": "integer"
|
|
7510
|
+
},
|
|
7511
|
+
"gas_limit": {
|
|
7512
|
+
"type": "integer"
|
|
7513
|
+
},
|
|
7514
|
+
"gas_price": {
|
|
7515
|
+
"type": "string"
|
|
7516
|
+
},
|
|
7517
|
+
"max_fee_per_gas": {
|
|
7518
|
+
"type": "string"
|
|
7519
|
+
},
|
|
7520
|
+
"max_priority_fee_per_gas": {
|
|
7521
|
+
"type": "string"
|
|
7522
|
+
},
|
|
7523
|
+
"access_list": {
|
|
7524
|
+
"type": "array",
|
|
7525
|
+
"items": {
|
|
7526
|
+
"type": "object"
|
|
7527
|
+
}
|
|
7528
|
+
},
|
|
7529
|
+
"max_fee_per_blob_gas": {
|
|
7530
|
+
"type": "string"
|
|
7531
|
+
},
|
|
7532
|
+
"blob_versioned_hashes": {
|
|
7533
|
+
"type": "array",
|
|
7534
|
+
"items": {
|
|
7535
|
+
"type": "string"
|
|
7536
|
+
}
|
|
7537
|
+
},
|
|
7538
|
+
"authorization_list": {
|
|
7539
|
+
"type": "array",
|
|
7540
|
+
"items": {
|
|
7541
|
+
"type": "object"
|
|
7542
|
+
}
|
|
7543
|
+
}
|
|
7544
|
+
}
|
|
7545
|
+
},
|
|
7546
|
+
"SignIntentResponse": {
|
|
7547
|
+
"type": "object",
|
|
7548
|
+
"properties": {
|
|
7549
|
+
"intent_type": {
|
|
7550
|
+
"type": "string"
|
|
7551
|
+
},
|
|
7552
|
+
"chain": {
|
|
7553
|
+
"type": "string"
|
|
7554
|
+
},
|
|
7555
|
+
"from": {
|
|
7556
|
+
"type": "string"
|
|
7557
|
+
},
|
|
7558
|
+
"signature": {
|
|
7559
|
+
"type": "string",
|
|
7560
|
+
"nullable": true
|
|
7561
|
+
},
|
|
7562
|
+
"signed_tx": {
|
|
7563
|
+
"type": "string",
|
|
7564
|
+
"nullable": true
|
|
7565
|
+
},
|
|
7566
|
+
"tx_hash": {
|
|
7567
|
+
"type": "string",
|
|
7568
|
+
"nullable": true
|
|
7569
|
+
},
|
|
7570
|
+
"message_hash": {
|
|
7571
|
+
"type": "string",
|
|
7572
|
+
"nullable": true
|
|
7573
|
+
},
|
|
7574
|
+
"typed_data_hash": {
|
|
7575
|
+
"type": "string",
|
|
7576
|
+
"nullable": true
|
|
7577
|
+
},
|
|
7578
|
+
"tx_type": {
|
|
7579
|
+
"type": "integer",
|
|
7580
|
+
"nullable": true
|
|
7581
|
+
}
|
|
7582
|
+
}
|
|
7583
|
+
},
|
|
7184
7584
|
"TransactionResponse": {
|
|
7185
7585
|
"type": "object",
|
|
7186
7586
|
"properties": {
|
package/openapi.yaml
CHANGED
|
@@ -2,7 +2,7 @@ openapi: 3.1.0
|
|
|
2
2
|
|
|
3
3
|
info:
|
|
4
4
|
title: 1Claw API
|
|
5
|
-
version: 2.
|
|
5
|
+
version: 2.11.0
|
|
6
6
|
description: |
|
|
7
7
|
Secure secret management for AI agents. Provides vaults, secrets,
|
|
8
8
|
policy-based access control, agent identity, Intents API,
|
|
@@ -1759,6 +1759,117 @@ paths:
|
|
|
1759
1759
|
"402":
|
|
1760
1760
|
$ref: "#/components/responses/PaymentRequired"
|
|
1761
1761
|
|
|
1762
|
+
# ---------------------------------------------------------------------------
|
|
1763
|
+
# Agent Signing Keys (Multi-Chain)
|
|
1764
|
+
# ---------------------------------------------------------------------------
|
|
1765
|
+
|
|
1766
|
+
/v1/agents/{agent_id}/signing-keys:
|
|
1767
|
+
post:
|
|
1768
|
+
tags: [Signing Keys]
|
|
1769
|
+
summary: Provision a signing key for a chain
|
|
1770
|
+
operationId: createSigningKey
|
|
1771
|
+
parameters:
|
|
1772
|
+
- $ref: "#/components/parameters/AgentId"
|
|
1773
|
+
requestBody:
|
|
1774
|
+
required: true
|
|
1775
|
+
content:
|
|
1776
|
+
application/json:
|
|
1777
|
+
schema:
|
|
1778
|
+
$ref: "#/components/schemas/CreateSigningKeyRequest"
|
|
1779
|
+
responses:
|
|
1780
|
+
"201":
|
|
1781
|
+
description: Signing key created
|
|
1782
|
+
content:
|
|
1783
|
+
application/json:
|
|
1784
|
+
schema:
|
|
1785
|
+
$ref: "#/components/schemas/SigningKeyResponse"
|
|
1786
|
+
"400":
|
|
1787
|
+
$ref: "#/components/responses/BadRequest"
|
|
1788
|
+
"409":
|
|
1789
|
+
$ref: "#/components/responses/Conflict"
|
|
1790
|
+
get:
|
|
1791
|
+
tags: [Signing Keys]
|
|
1792
|
+
summary: List signing keys for an agent
|
|
1793
|
+
operationId: listSigningKeys
|
|
1794
|
+
parameters:
|
|
1795
|
+
- $ref: "#/components/parameters/AgentId"
|
|
1796
|
+
responses:
|
|
1797
|
+
"200":
|
|
1798
|
+
description: Signing keys list
|
|
1799
|
+
content:
|
|
1800
|
+
application/json:
|
|
1801
|
+
schema:
|
|
1802
|
+
$ref: "#/components/schemas/SigningKeyListResponse"
|
|
1803
|
+
|
|
1804
|
+
/v1/agents/{agent_id}/signing-keys/{chain}/rotate:
|
|
1805
|
+
post:
|
|
1806
|
+
tags: [Signing Keys]
|
|
1807
|
+
summary: Rotate a signing key for a chain
|
|
1808
|
+
operationId: rotateSigningKey
|
|
1809
|
+
parameters:
|
|
1810
|
+
- $ref: "#/components/parameters/AgentId"
|
|
1811
|
+
- name: chain
|
|
1812
|
+
in: path
|
|
1813
|
+
required: true
|
|
1814
|
+
schema:
|
|
1815
|
+
type: string
|
|
1816
|
+
responses:
|
|
1817
|
+
"200":
|
|
1818
|
+
description: Rotated signing key
|
|
1819
|
+
content:
|
|
1820
|
+
application/json:
|
|
1821
|
+
schema:
|
|
1822
|
+
$ref: "#/components/schemas/SigningKeyResponse"
|
|
1823
|
+
"404":
|
|
1824
|
+
$ref: "#/components/responses/NotFound"
|
|
1825
|
+
|
|
1826
|
+
/v1/agents/{agent_id}/signing-keys/{chain}:
|
|
1827
|
+
delete:
|
|
1828
|
+
tags: [Signing Keys]
|
|
1829
|
+
summary: Deactivate a signing key for a chain
|
|
1830
|
+
operationId: deactivateSigningKey
|
|
1831
|
+
parameters:
|
|
1832
|
+
- $ref: "#/components/parameters/AgentId"
|
|
1833
|
+
- name: chain
|
|
1834
|
+
in: path
|
|
1835
|
+
required: true
|
|
1836
|
+
schema:
|
|
1837
|
+
type: string
|
|
1838
|
+
responses:
|
|
1839
|
+
"204":
|
|
1840
|
+
description: Key deactivated
|
|
1841
|
+
"404":
|
|
1842
|
+
$ref: "#/components/responses/NotFound"
|
|
1843
|
+
|
|
1844
|
+
# ---------------------------------------------------------------------------
|
|
1845
|
+
# Unified Signing Intent
|
|
1846
|
+
# ---------------------------------------------------------------------------
|
|
1847
|
+
|
|
1848
|
+
/v1/agents/{agent_id}/sign:
|
|
1849
|
+
post:
|
|
1850
|
+
tags: [Signing]
|
|
1851
|
+
summary: Unified signing intent (EIP-191, EIP-712, EIP-2718 types 0-4)
|
|
1852
|
+
operationId: signIntent
|
|
1853
|
+
parameters:
|
|
1854
|
+
- $ref: "#/components/parameters/AgentId"
|
|
1855
|
+
requestBody:
|
|
1856
|
+
required: true
|
|
1857
|
+
content:
|
|
1858
|
+
application/json:
|
|
1859
|
+
schema:
|
|
1860
|
+
$ref: "#/components/schemas/SignIntentRequest"
|
|
1861
|
+
responses:
|
|
1862
|
+
"200":
|
|
1863
|
+
description: Signed result
|
|
1864
|
+
content:
|
|
1865
|
+
application/json:
|
|
1866
|
+
schema:
|
|
1867
|
+
$ref: "#/components/schemas/SignIntentResponse"
|
|
1868
|
+
"400":
|
|
1869
|
+
$ref: "#/components/responses/BadRequest"
|
|
1870
|
+
"403":
|
|
1871
|
+
$ref: "#/components/responses/Forbidden"
|
|
1872
|
+
|
|
1762
1873
|
# ---------------------------------------------------------------------------
|
|
1763
1874
|
# Chains
|
|
1764
1875
|
# ---------------------------------------------------------------------------
|
|
@@ -3165,6 +3276,12 @@ components:
|
|
|
3165
3276
|
application/json:
|
|
3166
3277
|
schema:
|
|
3167
3278
|
$ref: "#/components/schemas/PaymentRequirement"
|
|
3279
|
+
Conflict:
|
|
3280
|
+
description: Resource already exists or conflict
|
|
3281
|
+
content:
|
|
3282
|
+
application/json:
|
|
3283
|
+
schema:
|
|
3284
|
+
$ref: "#/components/schemas/ProblemDetails"
|
|
3168
3285
|
|
|
3169
3286
|
schemas:
|
|
3170
3287
|
ProblemDetails:
|
|
@@ -4200,6 +4317,23 @@ components:
|
|
|
4200
4317
|
type: integer
|
|
4201
4318
|
nullable: true
|
|
4202
4319
|
description: Per-agent TTL override for federation tokens (60..=3600).
|
|
4320
|
+
signing_chains:
|
|
4321
|
+
type: array
|
|
4322
|
+
items:
|
|
4323
|
+
type: string
|
|
4324
|
+
description: Chains for which this agent has provisioned signing keys.
|
|
4325
|
+
eip712_domain_allowlist:
|
|
4326
|
+
type: array
|
|
4327
|
+
items:
|
|
4328
|
+
type: object
|
|
4329
|
+
description: JSON array of allowed EIP-712 domain entries.
|
|
4330
|
+
eip712_default_policy:
|
|
4331
|
+
type: string
|
|
4332
|
+
enum: [deny, allow]
|
|
4333
|
+
description: Default EIP-712 policy (deny blocks all unless allowlisted).
|
|
4334
|
+
message_signing_enabled:
|
|
4335
|
+
type: boolean
|
|
4336
|
+
description: Whether EIP-191 personal_sign is enabled.
|
|
4203
4337
|
created_at:
|
|
4204
4338
|
type: string
|
|
4205
4339
|
format: date-time
|
|
@@ -4821,6 +4955,133 @@ components:
|
|
|
4821
4955
|
items:
|
|
4822
4956
|
$ref: "#/components/schemas/SimulateTransactionRequest"
|
|
4823
4957
|
|
|
4958
|
+
# Signing Keys (Multi-Chain)
|
|
4959
|
+
CreateSigningKeyRequest:
|
|
4960
|
+
type: object
|
|
4961
|
+
required: [chain]
|
|
4962
|
+
properties:
|
|
4963
|
+
chain:
|
|
4964
|
+
type: string
|
|
4965
|
+
enum: [ethereum, bitcoin, solana, xrp, cardano, tron]
|
|
4966
|
+
|
|
4967
|
+
SigningKeyResponse:
|
|
4968
|
+
type: object
|
|
4969
|
+
properties:
|
|
4970
|
+
id:
|
|
4971
|
+
type: string
|
|
4972
|
+
format: uuid
|
|
4973
|
+
agent_id:
|
|
4974
|
+
type: string
|
|
4975
|
+
format: uuid
|
|
4976
|
+
chain:
|
|
4977
|
+
type: string
|
|
4978
|
+
curve:
|
|
4979
|
+
type: string
|
|
4980
|
+
public_key:
|
|
4981
|
+
type: string
|
|
4982
|
+
address:
|
|
4983
|
+
type: string
|
|
4984
|
+
nullable: true
|
|
4985
|
+
key_version:
|
|
4986
|
+
type: integer
|
|
4987
|
+
is_active:
|
|
4988
|
+
type: boolean
|
|
4989
|
+
created_at:
|
|
4990
|
+
type: string
|
|
4991
|
+
format: date-time
|
|
4992
|
+
rotated_at:
|
|
4993
|
+
type: string
|
|
4994
|
+
format: date-time
|
|
4995
|
+
nullable: true
|
|
4996
|
+
|
|
4997
|
+
SigningKeyListResponse:
|
|
4998
|
+
type: object
|
|
4999
|
+
properties:
|
|
5000
|
+
keys:
|
|
5001
|
+
type: array
|
|
5002
|
+
items:
|
|
5003
|
+
$ref: "#/components/schemas/SigningKeyResponse"
|
|
5004
|
+
|
|
5005
|
+
# Unified Signing Intent
|
|
5006
|
+
SignIntentRequest:
|
|
5007
|
+
type: object
|
|
5008
|
+
required: [intent_type, chain]
|
|
5009
|
+
properties:
|
|
5010
|
+
intent_type:
|
|
5011
|
+
type: string
|
|
5012
|
+
enum: [personal_sign, typed_data, transaction]
|
|
5013
|
+
chain:
|
|
5014
|
+
type: string
|
|
5015
|
+
signing_key_path:
|
|
5016
|
+
type: string
|
|
5017
|
+
message:
|
|
5018
|
+
type: string
|
|
5019
|
+
description: Hex-encoded message bytes (for personal_sign)
|
|
5020
|
+
typed_data:
|
|
5021
|
+
type: object
|
|
5022
|
+
description: EIP-712 typed data JSON (for typed_data)
|
|
5023
|
+
tx_type:
|
|
5024
|
+
type: integer
|
|
5025
|
+
description: "EIP-2718 type: 0=legacy, 1=2930, 2=1559, 3=4844, 4=7702"
|
|
5026
|
+
to:
|
|
5027
|
+
type: string
|
|
5028
|
+
value:
|
|
5029
|
+
type: string
|
|
5030
|
+
data:
|
|
5031
|
+
type: string
|
|
5032
|
+
nonce:
|
|
5033
|
+
type: integer
|
|
5034
|
+
gas_limit:
|
|
5035
|
+
type: integer
|
|
5036
|
+
gas_price:
|
|
5037
|
+
type: string
|
|
5038
|
+
max_fee_per_gas:
|
|
5039
|
+
type: string
|
|
5040
|
+
max_priority_fee_per_gas:
|
|
5041
|
+
type: string
|
|
5042
|
+
access_list:
|
|
5043
|
+
type: array
|
|
5044
|
+
items:
|
|
5045
|
+
type: object
|
|
5046
|
+
max_fee_per_blob_gas:
|
|
5047
|
+
type: string
|
|
5048
|
+
blob_versioned_hashes:
|
|
5049
|
+
type: array
|
|
5050
|
+
items:
|
|
5051
|
+
type: string
|
|
5052
|
+
authorization_list:
|
|
5053
|
+
type: array
|
|
5054
|
+
items:
|
|
5055
|
+
type: object
|
|
5056
|
+
|
|
5057
|
+
SignIntentResponse:
|
|
5058
|
+
type: object
|
|
5059
|
+
properties:
|
|
5060
|
+
intent_type:
|
|
5061
|
+
type: string
|
|
5062
|
+
chain:
|
|
5063
|
+
type: string
|
|
5064
|
+
from:
|
|
5065
|
+
type: string
|
|
5066
|
+
signature:
|
|
5067
|
+
type: string
|
|
5068
|
+
nullable: true
|
|
5069
|
+
signed_tx:
|
|
5070
|
+
type: string
|
|
5071
|
+
nullable: true
|
|
5072
|
+
tx_hash:
|
|
5073
|
+
type: string
|
|
5074
|
+
nullable: true
|
|
5075
|
+
message_hash:
|
|
5076
|
+
type: string
|
|
5077
|
+
nullable: true
|
|
5078
|
+
typed_data_hash:
|
|
5079
|
+
type: string
|
|
5080
|
+
nullable: true
|
|
5081
|
+
tx_type:
|
|
5082
|
+
type: integer
|
|
5083
|
+
nullable: true
|
|
5084
|
+
|
|
4824
5085
|
TransactionResponse:
|
|
4825
5086
|
type: object
|
|
4826
5087
|
properties:
|