@1claw/openapi-spec 0.20.0 → 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 +7 -4
- package/openapi.json +681 -9
- package/openapi.yaml +522 -9
- package/package.json +1 -1
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"
|
|
@@ -267,7 +267,7 @@
|
|
|
267
267
|
"Authentication"
|
|
268
268
|
],
|
|
269
269
|
"summary": "Get JWT verification public key",
|
|
270
|
-
"description": "Returns the Ed25519 public key used to sign JWTs.\nUse this to verify tokens independently (e.g. in a TEE proxy or\ngateway). No authentication required.\n",
|
|
270
|
+
"description": "Returns the Ed25519 public key used to sign JWTs.\nUse this to verify tokens independently (e.g. in a TEE proxy or\ngateway). No authentication required.\n\nFor OIDC-compliant relying parties (Anthropic Workload Identity\nFederation, etc.) prefer the JWKS endpoint at\n`/.well-known/jwks.json` together with the discovery document\nat `/.well-known/openid-configuration` — those advertise both\nEd25519 and RS256 keys keyed by `kid` and survive key rotation.\n",
|
|
271
271
|
"operationId": "getJwtPublicKey",
|
|
272
272
|
"security": [],
|
|
273
273
|
"responses": {
|
|
@@ -298,6 +298,110 @@
|
|
|
298
298
|
}
|
|
299
299
|
}
|
|
300
300
|
},
|
|
301
|
+
"/v1/auth/federated-token": {
|
|
302
|
+
"post": {
|
|
303
|
+
"tags": [
|
|
304
|
+
"Authentication"
|
|
305
|
+
],
|
|
306
|
+
"summary": "Exchange a 1claw token for an OIDC federation token (RFC 8693)",
|
|
307
|
+
"description": "Mints a short-lived RS256-signed JWT targeted at an external\nrelying party (e.g. Anthropic Workload Identity Federation).\nThe relying party validates the token via this issuer's JWKS\nURL (`/.well-known/jwks.json`) and exchanges it for its own\nshort-lived service credentials.\n\nRequirements:\n- The agent that owns the `subject_token` must have\n `federation_enabled = true` and the requested `audience`\n must appear in `federation_audiences`.\n- The `subject_token` must be a valid 1claw agent JWT or\n `ocv_` API key.\n- Optional `scope` narrows the agent's existing scopes — it\n cannot escalate.\n\nReturns 503 when `ONECLAW_JWT_RS256_SIGNING_KEY_ID` is not\nconfigured on the server.\n",
|
|
308
|
+
"operationId": "exchangeFederatedToken",
|
|
309
|
+
"security": [],
|
|
310
|
+
"requestBody": {
|
|
311
|
+
"required": true,
|
|
312
|
+
"content": {
|
|
313
|
+
"application/json": {
|
|
314
|
+
"schema": {
|
|
315
|
+
"$ref": "#/components/schemas/TokenExchangeRequest"
|
|
316
|
+
}
|
|
317
|
+
},
|
|
318
|
+
"application/x-www-form-urlencoded": {
|
|
319
|
+
"schema": {
|
|
320
|
+
"$ref": "#/components/schemas/TokenExchangeRequest"
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
},
|
|
325
|
+
"responses": {
|
|
326
|
+
"200": {
|
|
327
|
+
"description": "Federation token issued",
|
|
328
|
+
"content": {
|
|
329
|
+
"application/json": {
|
|
330
|
+
"schema": {
|
|
331
|
+
"$ref": "#/components/schemas/TokenExchangeResponse"
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
},
|
|
336
|
+
"400": {
|
|
337
|
+
"$ref": "#/components/responses/BadRequest"
|
|
338
|
+
},
|
|
339
|
+
"401": {
|
|
340
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
341
|
+
},
|
|
342
|
+
"403": {
|
|
343
|
+
"$ref": "#/components/responses/Forbidden"
|
|
344
|
+
},
|
|
345
|
+
"503": {
|
|
346
|
+
"description": "RS256 signing key not configured"
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
},
|
|
351
|
+
"/.well-known/openid-configuration": {
|
|
352
|
+
"get": {
|
|
353
|
+
"tags": [
|
|
354
|
+
"Authentication"
|
|
355
|
+
],
|
|
356
|
+
"summary": "OIDC discovery document",
|
|
357
|
+
"description": "Standard OpenID Connect discovery document advertising the\nissuer URL, JWKS URL, supported algorithms (`EdDSA`, `RS256`),\nand the RFC 8693 token-exchange endpoint. External IdPs\n(Anthropic WIF, Okta, Auth0, etc.) read this URL to learn\nwhere 1claw publishes its JWKS.\n",
|
|
358
|
+
"operationId": "openidConfiguration",
|
|
359
|
+
"security": [],
|
|
360
|
+
"responses": {
|
|
361
|
+
"200": {
|
|
362
|
+
"description": "Discovery document",
|
|
363
|
+
"content": {
|
|
364
|
+
"application/json": {
|
|
365
|
+
"schema": {
|
|
366
|
+
"type": "object"
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
},
|
|
374
|
+
"/.well-known/jwks.json": {
|
|
375
|
+
"get": {
|
|
376
|
+
"tags": [
|
|
377
|
+
"Authentication"
|
|
378
|
+
],
|
|
379
|
+
"summary": "JSON Web Key Set",
|
|
380
|
+
"description": "Public keys for every active version of every JWT signing\nkey (Ed25519 + RSA-2048). Each entry includes a `kid` so\nconsumers can validate tokens issued before the most recent\nkey rotation. Cached for 5 minutes via `Cache-Control` and\nCORS-permissive for browser-based IdP consoles.\n",
|
|
381
|
+
"operationId": "jwks",
|
|
382
|
+
"security": [],
|
|
383
|
+
"responses": {
|
|
384
|
+
"200": {
|
|
385
|
+
"description": "JWK Set",
|
|
386
|
+
"content": {
|
|
387
|
+
"application/jwk-set+json": {
|
|
388
|
+
"schema": {
|
|
389
|
+
"type": "object",
|
|
390
|
+
"properties": {
|
|
391
|
+
"keys": {
|
|
392
|
+
"type": "array",
|
|
393
|
+
"items": {
|
|
394
|
+
"type": "object"
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
},
|
|
301
405
|
"/v1/auth/signup": {
|
|
302
406
|
"post": {
|
|
303
407
|
"tags": [
|
|
@@ -1708,7 +1812,7 @@
|
|
|
1708
1812
|
}
|
|
1709
1813
|
}
|
|
1710
1814
|
},
|
|
1711
|
-
"/v1/vaults/{vault_id}/secret-version/{path}/{version}
|
|
1815
|
+
"/v1/vaults/{vault_id}/secret-version-disable/{path}/{version}": {
|
|
1712
1816
|
"post": {
|
|
1713
1817
|
"tags": [
|
|
1714
1818
|
"Secrets"
|
|
@@ -1922,7 +2026,7 @@
|
|
|
1922
2026
|
],
|
|
1923
2027
|
"summary": "Self-enroll an agent",
|
|
1924
2028
|
"operationId": "enrollAgent",
|
|
1925
|
-
"description": "Public endpoint (no auth required)
|
|
2029
|
+
"description": "Public endpoint (no auth required).\n\n**With `human_email`:** Creates a pending enrollment for that account's org,\nemails Allow/Deny links, and returns `approval_url` in the JSON body (use if email\nis delayed). The API key is NOT returned until the human approves.\n\n**Name only (omit `human_email`):** Creates a link-only pending enrollment.\nThe response includes `approval_url`; the human opens it while signed in to\napprove the agent into their org.\n\nAnti-spam: IP rate limiting, per-email cooldown, caps on pending rows.\n",
|
|
1926
2030
|
"requestBody": {
|
|
1927
2031
|
"required": true,
|
|
1928
2032
|
"content": {
|
|
@@ -2542,6 +2646,181 @@
|
|
|
2542
2646
|
}
|
|
2543
2647
|
}
|
|
2544
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
|
+
},
|
|
2545
2824
|
"/v1/chains": {
|
|
2546
2825
|
"get": {
|
|
2547
2826
|
"tags": [
|
|
@@ -4704,6 +4983,16 @@
|
|
|
4704
4983
|
}
|
|
4705
4984
|
}
|
|
4706
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
|
+
}
|
|
4707
4996
|
}
|
|
4708
4997
|
},
|
|
4709
4998
|
"schemas": {
|
|
@@ -4868,6 +5157,76 @@
|
|
|
4868
5157
|
}
|
|
4869
5158
|
}
|
|
4870
5159
|
},
|
|
5160
|
+
"TokenExchangeRequest": {
|
|
5161
|
+
"type": "object",
|
|
5162
|
+
"required": [
|
|
5163
|
+
"grant_type",
|
|
5164
|
+
"subject_token",
|
|
5165
|
+
"subject_token_type",
|
|
5166
|
+
"audience"
|
|
5167
|
+
],
|
|
5168
|
+
"description": "RFC 8693 token-exchange request body. `subject_token_type`\naccepts the standard JWT URI or 1claw's API-key URI:\n - `urn:ietf:params:oauth:token-type:jwt`\n - `urn:1claw:params:oauth:token-type:api-key`\n",
|
|
5169
|
+
"properties": {
|
|
5170
|
+
"grant_type": {
|
|
5171
|
+
"type": "string",
|
|
5172
|
+
"enum": [
|
|
5173
|
+
"urn:ietf:params:oauth:grant-type:token-exchange"
|
|
5174
|
+
]
|
|
5175
|
+
},
|
|
5176
|
+
"subject_token": {
|
|
5177
|
+
"type": "string",
|
|
5178
|
+
"description": "1claw JWT or `ocv_` API key authorising the exchange."
|
|
5179
|
+
},
|
|
5180
|
+
"subject_token_type": {
|
|
5181
|
+
"type": "string",
|
|
5182
|
+
"enum": [
|
|
5183
|
+
"urn:ietf:params:oauth:token-type:jwt",
|
|
5184
|
+
"urn:1claw:params:oauth:token-type:api-key"
|
|
5185
|
+
]
|
|
5186
|
+
},
|
|
5187
|
+
"audience": {
|
|
5188
|
+
"type": "string",
|
|
5189
|
+
"format": "uri",
|
|
5190
|
+
"description": "Required `aud` claim for the issued federation token (must be in agent's allowlist).",
|
|
5191
|
+
"example": "https://api.anthropic.com"
|
|
5192
|
+
},
|
|
5193
|
+
"scope": {
|
|
5194
|
+
"type": "string",
|
|
5195
|
+
"description": "Optional space-separated subset of the agent's existing scopes."
|
|
5196
|
+
},
|
|
5197
|
+
"requested_token_type": {
|
|
5198
|
+
"type": "string",
|
|
5199
|
+
"description": "Optional. Defaults to `urn:ietf:params:oauth:token-type:jwt`."
|
|
5200
|
+
}
|
|
5201
|
+
}
|
|
5202
|
+
},
|
|
5203
|
+
"TokenExchangeResponse": {
|
|
5204
|
+
"type": "object",
|
|
5205
|
+
"required": [
|
|
5206
|
+
"access_token",
|
|
5207
|
+
"issued_token_type",
|
|
5208
|
+
"token_type",
|
|
5209
|
+
"expires_in"
|
|
5210
|
+
],
|
|
5211
|
+
"properties": {
|
|
5212
|
+
"access_token": {
|
|
5213
|
+
"type": "string",
|
|
5214
|
+
"description": "RS256-signed federation JWT."
|
|
5215
|
+
},
|
|
5216
|
+
"issued_token_type": {
|
|
5217
|
+
"type": "string"
|
|
5218
|
+
},
|
|
5219
|
+
"token_type": {
|
|
5220
|
+
"type": "string"
|
|
5221
|
+
},
|
|
5222
|
+
"expires_in": {
|
|
5223
|
+
"type": "integer"
|
|
5224
|
+
},
|
|
5225
|
+
"scope": {
|
|
5226
|
+
"type": "string"
|
|
5227
|
+
}
|
|
5228
|
+
}
|
|
5229
|
+
},
|
|
4871
5230
|
"SignupRequest": {
|
|
4872
5231
|
"type": "object",
|
|
4873
5232
|
"required": [
|
|
@@ -5766,8 +6125,7 @@
|
|
|
5766
6125
|
"EnrollAgentRequest": {
|
|
5767
6126
|
"type": "object",
|
|
5768
6127
|
"required": [
|
|
5769
|
-
"name"
|
|
5770
|
-
"human_email"
|
|
6128
|
+
"name"
|
|
5771
6129
|
],
|
|
5772
6130
|
"properties": {
|
|
5773
6131
|
"name": {
|
|
@@ -5777,7 +6135,7 @@
|
|
|
5777
6135
|
"human_email": {
|
|
5778
6136
|
"type": "string",
|
|
5779
6137
|
"format": "email",
|
|
5780
|
-
"description": "
|
|
6138
|
+
"description": "Optional. If set, pending enrollment is bound to that 1Claw account email\nand Allow/Deny links are emailed. If omitted, only `approval_url` is used\n(link-only enrollment; human must open the URL while signed in).\n"
|
|
5781
6139
|
},
|
|
5782
6140
|
"description": {
|
|
5783
6141
|
"type": "string",
|
|
@@ -5791,11 +6149,16 @@
|
|
|
5791
6149
|
"agent_id": {
|
|
5792
6150
|
"type": "string",
|
|
5793
6151
|
"format": "uuid",
|
|
5794
|
-
"description": "UUID of the created agent (nil UUID
|
|
6152
|
+
"description": "UUID of the created agent (nil UUID until approved — uniform response)"
|
|
5795
6153
|
},
|
|
5796
6154
|
"message": {
|
|
5797
6155
|
"type": "string",
|
|
5798
|
-
"description": "Status message (
|
|
6156
|
+
"description": "Status message (worded to limit email enumeration where applicable)"
|
|
6157
|
+
},
|
|
6158
|
+
"approval_url": {
|
|
6159
|
+
"type": "string",
|
|
6160
|
+
"format": "uri",
|
|
6161
|
+
"description": "Present when a pending enrollment was created and the client should show\nthis link (email flow includes it as a fallback; name-only flow requires it).\n"
|
|
5799
6162
|
}
|
|
5800
6163
|
}
|
|
5801
6164
|
},
|
|
@@ -5945,6 +6308,25 @@
|
|
|
5945
6308
|
},
|
|
5946
6309
|
"shroud_config": {
|
|
5947
6310
|
"$ref": "#/components/schemas/ShroudConfig"
|
|
6311
|
+
},
|
|
6312
|
+
"federation_enabled": {
|
|
6313
|
+
"type": "boolean",
|
|
6314
|
+
"description": "Enable OIDC federation (RFC 8693 token-exchange) for this agent.\nWhen true, the agent may call POST /v1/auth/federated-token to mint\nfederation tokens for the audiences listed in `federation_audiences`.\n"
|
|
6315
|
+
},
|
|
6316
|
+
"federation_audiences": {
|
|
6317
|
+
"type": "array",
|
|
6318
|
+
"items": {
|
|
6319
|
+
"type": "string",
|
|
6320
|
+
"format": "uri"
|
|
6321
|
+
},
|
|
6322
|
+
"description": "Allowlist of `aud` values the federation token-exchange may issue\ntokens for (e.g. `[\"https://api.anthropic.com\"]`). Empty array\nblocks all federation requests (zero-trust default).\n"
|
|
6323
|
+
},
|
|
6324
|
+
"federated_token_ttl_seconds": {
|
|
6325
|
+
"type": "integer",
|
|
6326
|
+
"minimum": 60,
|
|
6327
|
+
"maximum": 3600,
|
|
6328
|
+
"nullable": true,
|
|
6329
|
+
"description": "Per-agent TTL override for federation tokens (seconds). NULL falls\nback to the global default (`ONECLAW_JWT_FEDERATED_TOKEN_EXPIRY_SECS`).\nHard-capped at 3600 seconds.\n"
|
|
5948
6330
|
}
|
|
5949
6331
|
}
|
|
5950
6332
|
},
|
|
@@ -6050,6 +6432,49 @@
|
|
|
6050
6432
|
"shroud_config": {
|
|
6051
6433
|
"$ref": "#/components/schemas/ShroudConfig"
|
|
6052
6434
|
},
|
|
6435
|
+
"federation_enabled": {
|
|
6436
|
+
"type": "boolean",
|
|
6437
|
+
"description": "Whether this agent may mint OIDC federation tokens via\nPOST /v1/auth/federated-token. False by default.\n"
|
|
6438
|
+
},
|
|
6439
|
+
"federation_audiences": {
|
|
6440
|
+
"type": "array",
|
|
6441
|
+
"items": {
|
|
6442
|
+
"type": "string",
|
|
6443
|
+
"format": "uri"
|
|
6444
|
+
},
|
|
6445
|
+
"description": "Allowlist of audience URIs the agent may federate to."
|
|
6446
|
+
},
|
|
6447
|
+
"federated_token_ttl_seconds": {
|
|
6448
|
+
"type": "integer",
|
|
6449
|
+
"nullable": true,
|
|
6450
|
+
"description": "Per-agent TTL override for federation tokens (60..=3600)."
|
|
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
|
+
},
|
|
6053
6478
|
"created_at": {
|
|
6054
6479
|
"type": "string",
|
|
6055
6480
|
"format": "date-time"
|
|
@@ -6967,6 +7392,195 @@
|
|
|
6967
7392
|
}
|
|
6968
7393
|
}
|
|
6969
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
|
+
},
|
|
6970
7584
|
"TransactionResponse": {
|
|
6971
7585
|
"type": "object",
|
|
6972
7586
|
"properties": {
|
|
@@ -8446,6 +9060,36 @@
|
|
|
8446
9060
|
"type": "string"
|
|
8447
9061
|
}
|
|
8448
9062
|
},
|
|
9063
|
+
"response_injection_score": {
|
|
9064
|
+
"type": "number",
|
|
9065
|
+
"description": "Response-side prompt-injection score (0.0–1.0)."
|
|
9066
|
+
},
|
|
9067
|
+
"response_context_injection_score": {
|
|
9068
|
+
"type": "number",
|
|
9069
|
+
"description": "Response-side context-injection score (0.0–1.0)."
|
|
9070
|
+
},
|
|
9071
|
+
"response_injection_categories": {
|
|
9072
|
+
"type": "array",
|
|
9073
|
+
"items": {
|
|
9074
|
+
"type": "string"
|
|
9075
|
+
},
|
|
9076
|
+
"description": "Category tags emitted by the response-side filters (e.g. `markdown_image_exfil`, `data_uri_blob`, `echoed_instruction`)."
|
|
9077
|
+
},
|
|
9078
|
+
"external_urls_flagged": {
|
|
9079
|
+
"type": "array",
|
|
9080
|
+
"items": {
|
|
9081
|
+
"type": "string"
|
|
9082
|
+
},
|
|
9083
|
+
"description": "URLs emitted by the model that were flagged as potential exfil / callback targets."
|
|
9084
|
+
},
|
|
9085
|
+
"unexpected_code_blocks": {
|
|
9086
|
+
"type": "integer",
|
|
9087
|
+
"description": "Number of code fences in the response that were not expected for the agent's allowed task set."
|
|
9088
|
+
},
|
|
9089
|
+
"content_filtered": {
|
|
9090
|
+
"type": "boolean",
|
|
9091
|
+
"description": "True when Shroud rewrote or blocked response content before returning it to the agent."
|
|
9092
|
+
},
|
|
8449
9093
|
"metadata": {
|
|
8450
9094
|
"type": "object"
|
|
8451
9095
|
},
|
|
@@ -8505,6 +9149,34 @@
|
|
|
8505
9149
|
},
|
|
8506
9150
|
"metadata": {
|
|
8507
9151
|
"type": "object"
|
|
9152
|
+
},
|
|
9153
|
+
"response_injection_score": {
|
|
9154
|
+
"type": "number",
|
|
9155
|
+
"default": 0
|
|
9156
|
+
},
|
|
9157
|
+
"response_context_injection_score": {
|
|
9158
|
+
"type": "number",
|
|
9159
|
+
"default": 0
|
|
9160
|
+
},
|
|
9161
|
+
"response_injection_categories": {
|
|
9162
|
+
"type": "array",
|
|
9163
|
+
"items": {
|
|
9164
|
+
"type": "string"
|
|
9165
|
+
}
|
|
9166
|
+
},
|
|
9167
|
+
"external_urls_flagged": {
|
|
9168
|
+
"type": "array",
|
|
9169
|
+
"items": {
|
|
9170
|
+
"type": "string"
|
|
9171
|
+
}
|
|
9172
|
+
},
|
|
9173
|
+
"unexpected_code_blocks": {
|
|
9174
|
+
"type": "integer",
|
|
9175
|
+
"default": 0
|
|
9176
|
+
},
|
|
9177
|
+
"content_filtered": {
|
|
9178
|
+
"type": "boolean",
|
|
9179
|
+
"default": false
|
|
8508
9180
|
}
|
|
8509
9181
|
}
|
|
8510
9182
|
},
|