@1claw/openapi-spec 0.59.7 → 0.59.9
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 +3098 -104
- package/openapi.yaml +2074 -130
- package/package.json +2 -2
package/openapi.yaml
CHANGED
|
@@ -2,7 +2,7 @@ openapi: 3.1.0
|
|
|
2
2
|
|
|
3
3
|
info:
|
|
4
4
|
title: 1Claw API
|
|
5
|
-
version: "0.59.
|
|
5
|
+
version: "0.59.9"
|
|
6
6
|
description: |
|
|
7
7
|
Secure secret management for AI agents. Provides vaults, secrets,
|
|
8
8
|
policy-based access control, agent identity, Intents API,
|
|
@@ -10,21 +10,41 @@ info:
|
|
|
10
10
|
webhook tokens, event triggers, Assist), cloud runtimes with
|
|
11
11
|
interactive shell sessions, agent memory, and discovery.
|
|
12
12
|
|
|
13
|
+
## Domains
|
|
14
|
+
|
|
15
|
+
`api.1claw.co` is canonical: it is the OIDC issuer, the `aud` the API
|
|
16
|
+
mints, and the first entry in `servers` — a generated client takes its
|
|
17
|
+
base URL from there, and the previous ordering pointed every SDK at the
|
|
18
|
+
domain the issuer had already left. `api.1claw.xyz` still answers and is
|
|
19
|
+
still accepted on token validation, because tokens minted before the
|
|
20
|
+
move carry it; it is never minted now.
|
|
21
|
+
|
|
22
|
+
One deliberate exception: the Shroud attestation identity token is
|
|
23
|
+
requested from GCP with `audience: https://api.1claw.xyz`, so
|
|
24
|
+
`/v1/shroud/attestation` reports that as its `expected_audience`. That
|
|
25
|
+
is accurate rather than stale — the audience is a verification contract
|
|
26
|
+
with anyone already checking the token, and moving it is a breaking
|
|
27
|
+
change for them, not a rename.
|
|
28
|
+
|
|
13
29
|
All endpoints require JWT Bearer authentication unless marked with
|
|
14
30
|
`security: []`.
|
|
15
31
|
contact:
|
|
16
|
-
email: ops@1claw.
|
|
32
|
+
email: ops@1claw.co
|
|
17
33
|
|
|
18
34
|
servers:
|
|
19
|
-
- url:
|
|
20
|
-
description:
|
|
35
|
+
- url: https://api.1claw.co
|
|
36
|
+
description: Production (canonical)
|
|
37
|
+
- url: https://shroud.1claw.co
|
|
38
|
+
description: Shroud TEE Proxy (Intents API + LLM proxy)
|
|
21
39
|
- url: https://api.1claw.xyz
|
|
22
|
-
description: Production
|
|
40
|
+
description: Production (legacy domain; still answers, tokens minted before the move carry this issuer)
|
|
23
41
|
- url: https://shroud.1claw.xyz
|
|
24
|
-
description: Shroud TEE Proxy (
|
|
42
|
+
description: Shroud TEE Proxy (legacy domain)
|
|
43
|
+
- url: http://localhost:8443
|
|
44
|
+
description: Development
|
|
25
45
|
|
|
26
46
|
x-agentcash-guidance:
|
|
27
|
-
llmsTxtUrl: https://1claw.
|
|
47
|
+
llmsTxtUrl: https://1claw.co/llms.txt
|
|
28
48
|
|
|
29
49
|
security:
|
|
30
50
|
- BearerAuth: []
|
|
@@ -8054,6 +8074,10 @@ paths:
|
|
|
8054
8074
|
type: string
|
|
8055
8075
|
- in: query
|
|
8056
8076
|
name: agent_id
|
|
8077
|
+
description: |
|
|
8078
|
+
Optional only while the connection has exactly one agent.
|
|
8079
|
+
With more than one it becomes required and the call answers
|
|
8080
|
+
400 without it — the Fleet template provisions three.
|
|
8057
8081
|
required: false
|
|
8058
8082
|
schema:
|
|
8059
8083
|
type: string
|
|
@@ -8218,10 +8242,30 @@ paths:
|
|
|
8218
8242
|
/v1/platform/connections/{connectionId}/passkeys/enroll/begin:
|
|
8219
8243
|
post:
|
|
8220
8244
|
tags: [Platform]
|
|
8221
|
-
summary: Begin passkey enrollment for a connected user
|
|
8245
|
+
summary: Begin passkey enrollment for a connected user (always 403)
|
|
8246
|
+
deprecated: true
|
|
8222
8247
|
description: |
|
|
8223
|
-
|
|
8224
|
-
|
|
8248
|
+
**This endpoint always returns 403 and cannot be made to work.**
|
|
8249
|
+
The description here previously said platform apps should use it
|
|
8250
|
+
instead of `POST /v1/auth/passkeys/register/begin`, which was
|
|
8251
|
+
wrong and cost integrators a WebAuthn ceremony to discover.
|
|
8252
|
+
|
|
8253
|
+
A passkey enrolled this way is login-capable: it can be asserted
|
|
8254
|
+
through the public sign-in flow to mint a full, non-delegated
|
|
8255
|
+
user session, so an app that enrolled one would hold a credential
|
|
8256
|
+
stronger than the delegation boundary it operates under. The
|
|
8257
|
+
capability was removed for that reason and will not return.
|
|
8258
|
+
|
|
8259
|
+
**A passkey is enrolled by the user, in their own session**, via
|
|
8260
|
+
`POST /v1/auth/passkeys/register/begin`. For a connected user
|
|
8261
|
+
that means completing the claim flow on the connection first.
|
|
8262
|
+
|
|
8263
|
+
To *use* a passkey a connected user already has, see:
|
|
8264
|
+
- `GET /v1/platform/connections/{connectionId}/passkeys` —
|
|
8265
|
+
whether the confirm step can be offered at all.
|
|
8266
|
+
- `POST /v1/platform/connections/{connectionId}/passkeys/tx-assert/begin`
|
|
8267
|
+
and `.../complete` — ask that user to touch their
|
|
8268
|
+
authenticator over a specific digest.
|
|
8225
8269
|
operationId: connectionPasskeyEnrollBegin
|
|
8226
8270
|
security:
|
|
8227
8271
|
- BearerAuth: []
|
|
@@ -8233,19 +8277,24 @@ paths:
|
|
|
8233
8277
|
type: string
|
|
8234
8278
|
format: uuid
|
|
8235
8279
|
responses:
|
|
8236
|
-
"
|
|
8237
|
-
description:
|
|
8280
|
+
"403":
|
|
8281
|
+
description: |
|
|
8282
|
+
Always. Platform apps cannot enroll login passkeys for
|
|
8283
|
+
connected users.
|
|
8238
8284
|
content:
|
|
8239
8285
|
application/json:
|
|
8240
8286
|
schema:
|
|
8241
|
-
$ref: "#/components/schemas/
|
|
8242
|
-
"404":
|
|
8243
|
-
$ref: "#/components/responses/NotFound"
|
|
8287
|
+
$ref: "#/components/schemas/ProblemDetails"
|
|
8244
8288
|
|
|
8245
8289
|
/v1/platform/connections/{connectionId}/passkeys/enroll/complete:
|
|
8246
8290
|
post:
|
|
8247
8291
|
tags: [Platform]
|
|
8248
|
-
summary: Complete passkey enrollment for a connected user
|
|
8292
|
+
summary: Complete passkey enrollment for a connected user (always 403)
|
|
8293
|
+
deprecated: true
|
|
8294
|
+
description: |
|
|
8295
|
+
**This endpoint always returns 403.** See
|
|
8296
|
+
`POST /v1/platform/connections/{connectionId}/passkeys/enroll/begin`
|
|
8297
|
+
for why, and for the paths that do work.
|
|
8249
8298
|
operationId: connectionPasskeyEnrollComplete
|
|
8250
8299
|
security:
|
|
8251
8300
|
- BearerAuth: []
|
|
@@ -8263,14 +8312,197 @@ paths:
|
|
|
8263
8312
|
schema:
|
|
8264
8313
|
$ref: "#/components/schemas/PasskeyRegisterCompleteRequest"
|
|
8265
8314
|
responses:
|
|
8266
|
-
"
|
|
8267
|
-
description:
|
|
8315
|
+
"403":
|
|
8316
|
+
description: |
|
|
8317
|
+
Always. Platform apps cannot enroll login passkeys for
|
|
8318
|
+
connected users.
|
|
8319
|
+
content:
|
|
8320
|
+
application/json:
|
|
8321
|
+
schema:
|
|
8322
|
+
$ref: "#/components/schemas/ProblemDetails"
|
|
8323
|
+
|
|
8324
|
+
/v1/platform/connections/{connectionId}/passkeys:
|
|
8325
|
+
get:
|
|
8326
|
+
tags: [Platform]
|
|
8327
|
+
summary: Whether a connected user can be asked for a passkey touch
|
|
8328
|
+
description: |
|
|
8329
|
+
Answers one question: can this app offer the passkey confirm
|
|
8330
|
+
step to this user? No credential material is returned — not
|
|
8331
|
+
credential ids, not public keys, not enrolment times.
|
|
8332
|
+
|
|
8333
|
+
`count` is what matters. Passkeys are bound to the domain they
|
|
8334
|
+
were registered on, so an account can hold credentials that this
|
|
8335
|
+
domain cannot offer; `count` reports only those usable on
|
|
8336
|
+
`rp_id`, while `registered_count` is the raw total. Branch on
|
|
8337
|
+
`has_passkey`.
|
|
8338
|
+
operationId: listConnectionPasskeys
|
|
8339
|
+
security:
|
|
8340
|
+
- BearerAuth: []
|
|
8341
|
+
parameters:
|
|
8342
|
+
- in: path
|
|
8343
|
+
name: connectionId
|
|
8344
|
+
required: true
|
|
8345
|
+
schema:
|
|
8346
|
+
type: string
|
|
8347
|
+
format: uuid
|
|
8348
|
+
responses:
|
|
8349
|
+
"200":
|
|
8350
|
+
description: Passkey availability for this connection
|
|
8351
|
+
content:
|
|
8352
|
+
application/json:
|
|
8353
|
+
schema:
|
|
8354
|
+
type: object
|
|
8355
|
+
required: [has_passkey, count, registered_count, rp_id]
|
|
8356
|
+
properties:
|
|
8357
|
+
has_passkey:
|
|
8358
|
+
type: boolean
|
|
8359
|
+
description: True when count > 0.
|
|
8360
|
+
count:
|
|
8361
|
+
type: integer
|
|
8362
|
+
format: int64
|
|
8363
|
+
description: Passkeys usable on rp_id.
|
|
8364
|
+
registered_count:
|
|
8365
|
+
type: integer
|
|
8366
|
+
format: int64
|
|
8367
|
+
description: |
|
|
8368
|
+
All passkeys on the account, including any
|
|
8369
|
+
bound to a different domain.
|
|
8370
|
+
rp_id:
|
|
8371
|
+
type: string
|
|
8372
|
+
description: The domain these counts are measured against.
|
|
8373
|
+
"403":
|
|
8374
|
+
$ref: "#/components/responses/Forbidden"
|
|
8375
|
+
"404":
|
|
8376
|
+
$ref: "#/components/responses/NotFound"
|
|
8377
|
+
|
|
8378
|
+
/v1/platform/connections/{connectionId}/passkeys/tx-assert/begin:
|
|
8379
|
+
post:
|
|
8380
|
+
tags: [Platform]
|
|
8381
|
+
summary: Ask a connected user to touch their authenticator
|
|
8382
|
+
description: |
|
|
8383
|
+
Begins a WebAuthn assertion bound to `tx_digest`, for the user on
|
|
8384
|
+
this connection. The connection in the path is the addressing
|
|
8385
|
+
that `POST /v1/auth/passkeys/tx-assert/begin` lacks: that route
|
|
8386
|
+
resolves the *calling* principal, so with a `plt_` key it looks
|
|
8387
|
+
up the app itself and reports no passkeys. An app never needs to
|
|
8388
|
+
hold an email to name one of its users.
|
|
8389
|
+
|
|
8390
|
+
Returns 404 when the user has no passkey usable on this domain —
|
|
8391
|
+
check `GET /v1/platform/connections/{connectionId}/passkeys`
|
|
8392
|
+
first and only offer the step when `has_passkey` is true.
|
|
8393
|
+
operationId: connectionPasskeyTxAssertBegin
|
|
8394
|
+
security:
|
|
8395
|
+
- BearerAuth: []
|
|
8396
|
+
parameters:
|
|
8397
|
+
- in: path
|
|
8398
|
+
name: connectionId
|
|
8399
|
+
required: true
|
|
8400
|
+
schema:
|
|
8401
|
+
type: string
|
|
8402
|
+
format: uuid
|
|
8403
|
+
requestBody:
|
|
8404
|
+
required: true
|
|
8405
|
+
content:
|
|
8406
|
+
application/json:
|
|
8407
|
+
schema:
|
|
8408
|
+
type: object
|
|
8409
|
+
required: [tx_digest]
|
|
8410
|
+
properties:
|
|
8411
|
+
tx_digest:
|
|
8412
|
+
type: string
|
|
8413
|
+
description: SHA-256 hex of the exact text being confirmed.
|
|
8414
|
+
action:
|
|
8415
|
+
type: string
|
|
8416
|
+
enum: [send, swap]
|
|
8417
|
+
default: send
|
|
8418
|
+
responses:
|
|
8419
|
+
"200":
|
|
8420
|
+
description: WebAuthn assertion ceremony options
|
|
8421
|
+
content:
|
|
8422
|
+
application/json:
|
|
8423
|
+
schema:
|
|
8424
|
+
$ref: "#/components/schemas/PasskeyAssertBeginResponse"
|
|
8425
|
+
"400":
|
|
8426
|
+
$ref: "#/components/responses/BadRequest"
|
|
8427
|
+
"403":
|
|
8428
|
+
$ref: "#/components/responses/Forbidden"
|
|
8429
|
+
"404":
|
|
8430
|
+
description: This user has no passkey registered.
|
|
8431
|
+
content:
|
|
8432
|
+
application/json:
|
|
8433
|
+
schema:
|
|
8434
|
+
$ref: "#/components/schemas/ProblemDetails"
|
|
8435
|
+
|
|
8436
|
+
/v1/platform/connections/{connectionId}/passkeys/tx-assert/complete:
|
|
8437
|
+
post:
|
|
8438
|
+
tags: [Platform]
|
|
8439
|
+
summary: Verify the touch and return proof of it
|
|
8440
|
+
description: |
|
|
8441
|
+
Verifies the assertion — origin, rpIdHash, the user-verified
|
|
8442
|
+
flag, the signature, and a sign count that must increase, which
|
|
8443
|
+
is what catches a cloned authenticator — and returns a
|
|
8444
|
+
short-lived token proving this user touched their authenticator
|
|
8445
|
+
over that digest.
|
|
8446
|
+
|
|
8447
|
+
The token records that a platform app requested it. That
|
|
8448
|
+
provenance is deliberate: it proves the touch to your
|
|
8449
|
+
application, and it is **refused** as authorization for a
|
|
8450
|
+
1Claw treasury transfer. A user consenting to your action has
|
|
8451
|
+
not consented to moving funds, and those remain a separate
|
|
8452
|
+
assertion from the user's own session.
|
|
8453
|
+
operationId: connectionPasskeyTxAssertComplete
|
|
8454
|
+
security:
|
|
8455
|
+
- BearerAuth: []
|
|
8456
|
+
parameters:
|
|
8457
|
+
- in: path
|
|
8458
|
+
name: connectionId
|
|
8459
|
+
required: true
|
|
8460
|
+
schema:
|
|
8461
|
+
type: string
|
|
8462
|
+
format: uuid
|
|
8463
|
+
requestBody:
|
|
8464
|
+
required: true
|
|
8465
|
+
content:
|
|
8466
|
+
application/json:
|
|
8467
|
+
schema:
|
|
8468
|
+
type: object
|
|
8469
|
+
required:
|
|
8470
|
+
[
|
|
8471
|
+
credential_id,
|
|
8472
|
+
authenticator_data,
|
|
8473
|
+
client_data_json,
|
|
8474
|
+
signature,
|
|
8475
|
+
]
|
|
8476
|
+
properties:
|
|
8477
|
+
credential_id:
|
|
8478
|
+
type: string
|
|
8479
|
+
authenticator_data:
|
|
8480
|
+
type: string
|
|
8481
|
+
client_data_json:
|
|
8482
|
+
type: string
|
|
8483
|
+
signature:
|
|
8484
|
+
type: string
|
|
8485
|
+
responses:
|
|
8486
|
+
"200":
|
|
8487
|
+
description: Assertion verified
|
|
8268
8488
|
content:
|
|
8269
8489
|
application/json:
|
|
8270
8490
|
schema:
|
|
8271
|
-
|
|
8491
|
+
type: object
|
|
8492
|
+
required: [passkey_token, expires_in]
|
|
8493
|
+
properties:
|
|
8494
|
+
passkey_token:
|
|
8495
|
+
type: string
|
|
8496
|
+
description: |
|
|
8497
|
+
Single-use proof of the touch, bound to the
|
|
8498
|
+
digest and to this user.
|
|
8499
|
+
expires_in:
|
|
8500
|
+
type: integer
|
|
8501
|
+
description: Seconds until the token expires.
|
|
8272
8502
|
"400":
|
|
8273
8503
|
$ref: "#/components/responses/BadRequest"
|
|
8504
|
+
"403":
|
|
8505
|
+
$ref: "#/components/responses/Forbidden"
|
|
8274
8506
|
"404":
|
|
8275
8507
|
$ref: "#/components/responses/NotFound"
|
|
8276
8508
|
|
|
@@ -12498,139 +12730,1832 @@ paths:
|
|
|
12498
12730
|
# Shamir KEK
|
|
12499
12731
|
# ---------------------------------------------------------------------------
|
|
12500
12732
|
|
|
12501
|
-
/v1/
|
|
12733
|
+
/v1/agents/batch-delete:
|
|
12502
12734
|
post:
|
|
12503
|
-
tags: [
|
|
12504
|
-
summary:
|
|
12505
|
-
|
|
12506
|
-
|
|
12507
|
-
|
|
12508
|
-
|
|
12509
|
-
|
|
12510
|
-
|
|
12511
|
-
|
|
12735
|
+
tags: [Agents]
|
|
12736
|
+
summary: "batch delete agents"
|
|
12737
|
+
operationId: batch_delete_agents
|
|
12738
|
+
responses:
|
|
12739
|
+
'200':
|
|
12740
|
+
description: Success
|
|
12741
|
+
'401':
|
|
12742
|
+
description: Unauthenticated
|
|
12743
|
+
'403':
|
|
12744
|
+
description: Forbidden, or the plan does not include this
|
|
12745
|
+
'404':
|
|
12746
|
+
description: Not found
|
|
12747
|
+
/v1/agents/enroll/approve:
|
|
12748
|
+
post:
|
|
12749
|
+
tags: [Agents]
|
|
12750
|
+
summary: "Authenticated: consume token, create agent, return API key once. **Email-bound pending:** caller must belong to the same org and match `human_email`."
|
|
12751
|
+
operationId: approve_enrollment
|
|
12512
12752
|
requestBody:
|
|
12513
12753
|
required: true
|
|
12514
12754
|
content:
|
|
12515
12755
|
application/json:
|
|
12516
12756
|
schema:
|
|
12517
|
-
|
|
12518
|
-
|
|
12519
|
-
|
|
12520
|
-
|
|
12521
|
-
|
|
12522
|
-
|
|
12523
|
-
|
|
12524
|
-
|
|
12525
|
-
|
|
12526
|
-
|
|
12527
|
-
|
|
12528
|
-
|
|
12529
|
-
|
|
12530
|
-
|
|
12531
|
-
|
|
12532
|
-
|
|
12533
|
-
|
|
12534
|
-
|
|
12535
|
-
|
|
12536
|
-
|
|
12537
|
-
|
|
12538
|
-
|
|
12539
|
-
|
|
12540
|
-
|
|
12541
|
-
|
|
12542
|
-
description:
|
|
12543
|
-
|
|
12544
|
-
application/json:
|
|
12545
|
-
schema:
|
|
12546
|
-
$ref: "#/components/schemas/ShamirKekStatusResponse"
|
|
12547
|
-
"401":
|
|
12548
|
-
$ref: "#/components/responses/Unauthorized"
|
|
12549
|
-
|
|
12550
|
-
/v1/org/shamir-kek/reconstruct:
|
|
12757
|
+
type: object
|
|
12758
|
+
required:
|
|
12759
|
+
- token
|
|
12760
|
+
properties:
|
|
12761
|
+
token:
|
|
12762
|
+
type: string
|
|
12763
|
+
approval_id:
|
|
12764
|
+
type: string
|
|
12765
|
+
format: uuid
|
|
12766
|
+
description: |
|
|
12767
|
+
Consensus approval to spend on this creation.
|
|
12768
|
+
Approving an enrollment creates an agent, so it is
|
|
12769
|
+
gated on `agent.create` exactly as POST /v1/agents
|
|
12770
|
+
is. Orgs without a control-plane consensus policy
|
|
12771
|
+
never need this.
|
|
12772
|
+
responses:
|
|
12773
|
+
'200':
|
|
12774
|
+
description: Success
|
|
12775
|
+
'401':
|
|
12776
|
+
description: Unauthenticated
|
|
12777
|
+
'403':
|
|
12778
|
+
description: |
|
|
12779
|
+
Forbidden, the plan does not include this, or the org requires
|
|
12780
|
+
M-of-N consensus for `agent.create` and no approval was supplied.
|
|
12781
|
+
'404':
|
|
12782
|
+
description: Not found
|
|
12783
|
+
/v1/agents/enroll/deny:
|
|
12551
12784
|
post:
|
|
12552
|
-
tags: [
|
|
12553
|
-
summary:
|
|
12554
|
-
|
|
12555
|
-
Submit Shamir shares to reconstruct the org KEK. Requires at least
|
|
12556
|
-
`threshold` valid shares. Used during disaster recovery.
|
|
12557
|
-
operationId: reconstructShamirKek
|
|
12558
|
-
security:
|
|
12559
|
-
- BearerAuth: []
|
|
12785
|
+
tags: [Agents]
|
|
12786
|
+
summary: "Authenticated: consume token and delete pending enrollment (deny). **Email-bound:** caller org and email must match the pending row. **Link-only:** "
|
|
12787
|
+
operationId: deny_enrollment
|
|
12560
12788
|
requestBody:
|
|
12561
12789
|
required: true
|
|
12562
12790
|
content:
|
|
12563
12791
|
application/json:
|
|
12564
12792
|
schema:
|
|
12565
|
-
|
|
12793
|
+
type: object
|
|
12794
|
+
required:
|
|
12795
|
+
- token
|
|
12796
|
+
properties:
|
|
12797
|
+
token:
|
|
12798
|
+
type: string
|
|
12566
12799
|
responses:
|
|
12567
|
-
|
|
12568
|
-
description:
|
|
12569
|
-
|
|
12570
|
-
|
|
12571
|
-
|
|
12572
|
-
|
|
12573
|
-
|
|
12574
|
-
|
|
12575
|
-
|
|
12576
|
-
$ref: "#/components/responses/Unauthorized"
|
|
12577
|
-
"403":
|
|
12578
|
-
$ref: "#/components/responses/Forbidden"
|
|
12579
|
-
|
|
12580
|
-
/v1/org/shamir-kek/recovery-codes:
|
|
12800
|
+
'200':
|
|
12801
|
+
description: Success
|
|
12802
|
+
'401':
|
|
12803
|
+
description: Unauthenticated
|
|
12804
|
+
'403':
|
|
12805
|
+
description: Forbidden, or the plan does not include this
|
|
12806
|
+
'404':
|
|
12807
|
+
description: Not found
|
|
12808
|
+
/v1/agents/enroll/pending:
|
|
12581
12809
|
get:
|
|
12582
|
-
tags: [
|
|
12583
|
-
summary:
|
|
12584
|
-
|
|
12585
|
-
|
|
12586
|
-
can be used as an emergency fallback if custodian shares are lost.
|
|
12587
|
-
Codes are only returned once — subsequent calls return 410.
|
|
12588
|
-
operationId: getShamirKekRecoveryCodes
|
|
12589
|
-
security:
|
|
12590
|
-
- BearerAuth: []
|
|
12810
|
+
tags: [Agents]
|
|
12811
|
+
summary: "Public: validate enrollment token and return pending info for the dashboard (agent name, expires_at). Used so the UI can show 'Approve agent X?' witho"
|
|
12812
|
+
operationId: get_enrollment_pending
|
|
12813
|
+
security: []
|
|
12591
12814
|
responses:
|
|
12592
|
-
|
|
12593
|
-
description:
|
|
12594
|
-
|
|
12595
|
-
|
|
12596
|
-
|
|
12597
|
-
|
|
12598
|
-
|
|
12599
|
-
|
|
12600
|
-
|
|
12601
|
-
|
|
12602
|
-
|
|
12603
|
-
|
|
12604
|
-
|
|
12605
|
-
|
|
12815
|
+
'200':
|
|
12816
|
+
description: Success
|
|
12817
|
+
'404':
|
|
12818
|
+
description: Not found
|
|
12819
|
+
/v1/agents/{agent_id}/channels/{channel_id}/refresh-webhook:
|
|
12820
|
+
parameters:
|
|
12821
|
+
- name: agent_id
|
|
12822
|
+
in: path
|
|
12823
|
+
required: true
|
|
12824
|
+
schema:
|
|
12825
|
+
type: string
|
|
12826
|
+
- name: channel_id
|
|
12827
|
+
in: path
|
|
12828
|
+
required: true
|
|
12829
|
+
schema:
|
|
12830
|
+
type: string
|
|
12606
12831
|
post:
|
|
12607
|
-
tags: [
|
|
12608
|
-
summary:
|
|
12609
|
-
|
|
12610
|
-
|
|
12611
|
-
|
|
12612
|
-
|
|
12832
|
+
tags: [Agents]
|
|
12833
|
+
summary: "Re-register the provider webhook for this channel (repairs a stale or revoked subscription)."
|
|
12834
|
+
operationId: refresh_channel_webhook
|
|
12835
|
+
responses:
|
|
12836
|
+
'200':
|
|
12837
|
+
description: Success
|
|
12838
|
+
'401':
|
|
12839
|
+
description: Unauthenticated
|
|
12840
|
+
'403':
|
|
12841
|
+
description: Forbidden, or the plan does not include this
|
|
12842
|
+
'404':
|
|
12843
|
+
description: Not found
|
|
12844
|
+
/v1/agents/{agent_id}/channels/{channel_id}/repair:
|
|
12845
|
+
parameters:
|
|
12846
|
+
- name: agent_id
|
|
12847
|
+
in: path
|
|
12848
|
+
required: true
|
|
12849
|
+
schema:
|
|
12850
|
+
type: string
|
|
12851
|
+
- name: channel_id
|
|
12852
|
+
in: path
|
|
12853
|
+
required: true
|
|
12854
|
+
schema:
|
|
12855
|
+
type: string
|
|
12856
|
+
post:
|
|
12857
|
+
tags: [Agents]
|
|
12858
|
+
summary: "Repair a channel: alias of refresh-webhook, re-registers the provider webhook for this channel."
|
|
12859
|
+
operationId: repair_channel_webhook
|
|
12860
|
+
responses:
|
|
12861
|
+
'200':
|
|
12862
|
+
description: Success
|
|
12863
|
+
'401':
|
|
12864
|
+
description: Unauthenticated
|
|
12865
|
+
'403':
|
|
12866
|
+
description: Forbidden, or the plan does not include this
|
|
12867
|
+
'404':
|
|
12868
|
+
description: Not found
|
|
12869
|
+
/v1/agents/{agent_id}/eoa:
|
|
12870
|
+
parameters:
|
|
12871
|
+
- name: agent_id
|
|
12872
|
+
in: path
|
|
12873
|
+
required: true
|
|
12874
|
+
schema:
|
|
12875
|
+
type: string
|
|
12876
|
+
get:
|
|
12877
|
+
tags: [Agents]
|
|
12878
|
+
summary: "Get the agent's EVM address (no private key exposure)."
|
|
12879
|
+
operationId: get_agent_eoa
|
|
12880
|
+
responses:
|
|
12881
|
+
'200':
|
|
12882
|
+
description: Success
|
|
12883
|
+
'401':
|
|
12884
|
+
description: Unauthenticated
|
|
12885
|
+
'403':
|
|
12886
|
+
description: Forbidden, or the plan does not include this
|
|
12887
|
+
'404':
|
|
12888
|
+
description: Not found
|
|
12889
|
+
post:
|
|
12890
|
+
tags: [Agents]
|
|
12891
|
+
summary: "Generate an EVM EOA for an agent. Creates a secp256k1 key, stores it in the __agent-keys vault, and records the derived address on the agent record."
|
|
12892
|
+
operationId: generate_agent_eoa
|
|
12893
|
+
responses:
|
|
12894
|
+
'200':
|
|
12895
|
+
description: Success
|
|
12896
|
+
'401':
|
|
12897
|
+
description: Unauthenticated
|
|
12898
|
+
'403':
|
|
12899
|
+
description: Forbidden, or the plan does not include this
|
|
12900
|
+
'404':
|
|
12901
|
+
description: Not found
|
|
12902
|
+
/v1/agents/{agent_id}/rotate-signer-key:
|
|
12903
|
+
parameters:
|
|
12904
|
+
- name: agent_id
|
|
12905
|
+
in: path
|
|
12906
|
+
required: true
|
|
12907
|
+
schema:
|
|
12908
|
+
type: string
|
|
12909
|
+
post:
|
|
12910
|
+
tags: [Agents]
|
|
12911
|
+
summary: "Rotate the agent's EVM signer key. Generates a new secp256k1 key, builds a swapOwner UserOp on the Safe, signs with the old key, submits to bundler, a"
|
|
12912
|
+
operationId: rotate_signer_key
|
|
12913
|
+
responses:
|
|
12914
|
+
'200':
|
|
12915
|
+
description: Success
|
|
12916
|
+
'401':
|
|
12917
|
+
description: Unauthenticated
|
|
12918
|
+
'403':
|
|
12919
|
+
description: Forbidden, or the plan does not include this
|
|
12920
|
+
'404':
|
|
12921
|
+
description: Not found
|
|
12922
|
+
/v1/agents/{agent_id}/smart-accounts/{chain_id}:
|
|
12923
|
+
parameters:
|
|
12924
|
+
- name: agent_id
|
|
12925
|
+
in: path
|
|
12926
|
+
required: true
|
|
12927
|
+
schema:
|
|
12928
|
+
type: string
|
|
12929
|
+
- name: chain_id
|
|
12930
|
+
in: path
|
|
12931
|
+
required: true
|
|
12932
|
+
schema:
|
|
12933
|
+
type: string
|
|
12934
|
+
delete:
|
|
12935
|
+
tags: [Agents]
|
|
12936
|
+
summary: "delete smart account"
|
|
12937
|
+
operationId: delete_smart_account
|
|
12938
|
+
responses:
|
|
12939
|
+
'200':
|
|
12940
|
+
description: Success
|
|
12941
|
+
'401':
|
|
12942
|
+
description: Unauthenticated
|
|
12943
|
+
'403':
|
|
12944
|
+
description: Forbidden, or the plan does not include this
|
|
12945
|
+
'404':
|
|
12946
|
+
description: Not found
|
|
12947
|
+
/v1/agents/{agent_id}/unlock-platform:
|
|
12948
|
+
parameters:
|
|
12949
|
+
- name: agent_id
|
|
12950
|
+
in: path
|
|
12951
|
+
required: true
|
|
12952
|
+
schema:
|
|
12953
|
+
type: string
|
|
12954
|
+
post:
|
|
12955
|
+
tags: [Agents]
|
|
12956
|
+
summary: "User-only. Clears platform_locked when the app is no longer actively connected."
|
|
12957
|
+
operationId: unlock_agent_platform
|
|
12958
|
+
responses:
|
|
12959
|
+
'200':
|
|
12960
|
+
description: Success
|
|
12961
|
+
'401':
|
|
12962
|
+
description: Unauthenticated
|
|
12963
|
+
'403':
|
|
12964
|
+
description: Forbidden, or the plan does not include this
|
|
12965
|
+
'404':
|
|
12966
|
+
description: Not found
|
|
12967
|
+
/v1/audit/export:
|
|
12968
|
+
get:
|
|
12969
|
+
tags: [Audit]
|
|
12970
|
+
summary: "export audit events"
|
|
12971
|
+
operationId: export_audit_events
|
|
12972
|
+
responses:
|
|
12973
|
+
'200':
|
|
12974
|
+
description: Success
|
|
12975
|
+
'401':
|
|
12976
|
+
description: Unauthenticated
|
|
12977
|
+
'403':
|
|
12978
|
+
description: Forbidden, or the plan does not include this
|
|
12979
|
+
'404':
|
|
12980
|
+
description: Not found
|
|
12981
|
+
/v1/auth/credential-recovery/requests/{id}/cancel:
|
|
12982
|
+
parameters:
|
|
12983
|
+
- name: id
|
|
12984
|
+
in: path
|
|
12985
|
+
required: true
|
|
12986
|
+
schema:
|
|
12987
|
+
type: string
|
|
12988
|
+
post:
|
|
12989
|
+
tags: [Auth]
|
|
12990
|
+
summary: "cancel request"
|
|
12991
|
+
operationId: cancel_request
|
|
12992
|
+
responses:
|
|
12993
|
+
'200':
|
|
12994
|
+
description: Success
|
|
12995
|
+
'401':
|
|
12996
|
+
description: Unauthenticated
|
|
12997
|
+
'403':
|
|
12998
|
+
description: Forbidden, or the plan does not include this
|
|
12999
|
+
'404':
|
|
13000
|
+
description: Not found
|
|
13001
|
+
/v1/auth/migration-status:
|
|
13002
|
+
get:
|
|
13003
|
+
tags: [Auth]
|
|
13004
|
+
summary: "What the account is currently anchored on, and what has to happen next. The ordering is the part people get wrong, so it lives here rather than being"
|
|
13005
|
+
operationId: migration_status
|
|
13006
|
+
responses:
|
|
13007
|
+
'200':
|
|
13008
|
+
description: Success
|
|
13009
|
+
'401':
|
|
13010
|
+
description: Unauthenticated
|
|
13011
|
+
'403':
|
|
13012
|
+
description: Forbidden, or the plan does not include this
|
|
13013
|
+
'404':
|
|
13014
|
+
description: Not found
|
|
13015
|
+
/v1/auth/passkeys/vault-assert/begin:
|
|
13016
|
+
post:
|
|
13017
|
+
tags: [Auth]
|
|
13018
|
+
summary: "Begin a passkey assertion that unlocks vault secret reads for users who have `require_passkey_for_vaults` enabled."
|
|
13019
|
+
operationId: vault_assert_begin
|
|
13020
|
+
responses:
|
|
13021
|
+
'200':
|
|
13022
|
+
description: Success
|
|
13023
|
+
'401':
|
|
13024
|
+
description: Unauthenticated
|
|
13025
|
+
'403':
|
|
13026
|
+
description: Forbidden, or the plan does not include this
|
|
13027
|
+
'404':
|
|
13028
|
+
description: Not found
|
|
13029
|
+
/v1/auth/passkeys/vault-assert/complete:
|
|
13030
|
+
post:
|
|
13031
|
+
tags: [Auth]
|
|
13032
|
+
summary: "Returns a short-lived `passkey_token` for the `X-Passkey-Token` header on secret reads."
|
|
13033
|
+
operationId: vault_assert_complete
|
|
12613
13034
|
requestBody:
|
|
12614
13035
|
required: true
|
|
12615
13036
|
content:
|
|
12616
13037
|
application/json:
|
|
12617
13038
|
schema:
|
|
12618
|
-
|
|
13039
|
+
type: object
|
|
13040
|
+
required:
|
|
13041
|
+
- credential_id
|
|
13042
|
+
- authenticator_data
|
|
13043
|
+
- client_data_json
|
|
13044
|
+
- signature
|
|
13045
|
+
properties:
|
|
13046
|
+
credential_id:
|
|
13047
|
+
type: string
|
|
13048
|
+
authenticator_data:
|
|
13049
|
+
type: string
|
|
13050
|
+
client_data_json:
|
|
13051
|
+
type: string
|
|
13052
|
+
signature:
|
|
13053
|
+
type: string
|
|
12619
13054
|
responses:
|
|
12620
|
-
|
|
12621
|
-
description:
|
|
12622
|
-
|
|
12623
|
-
|
|
12624
|
-
|
|
12625
|
-
|
|
12626
|
-
|
|
12627
|
-
|
|
12628
|
-
|
|
12629
|
-
|
|
12630
|
-
|
|
12631
|
-
|
|
12632
|
-
|
|
12633
|
-
|
|
13055
|
+
'200':
|
|
13056
|
+
description: Success
|
|
13057
|
+
'401':
|
|
13058
|
+
description: Unauthenticated
|
|
13059
|
+
'403':
|
|
13060
|
+
description: Forbidden, or the plan does not include this
|
|
13061
|
+
'404':
|
|
13062
|
+
description: Not found
|
|
13063
|
+
/v1/auth/reauth/begin:
|
|
13064
|
+
post:
|
|
13065
|
+
tags: [Auth]
|
|
13066
|
+
summary: "start a re-authentication ceremony. For passkey: returns a WebAuthn challenge. For password: returns immediately (no challenge needed)."
|
|
13067
|
+
operationId: reauth_begin
|
|
13068
|
+
requestBody:
|
|
13069
|
+
required: true
|
|
13070
|
+
content:
|
|
13071
|
+
application/json:
|
|
13072
|
+
schema:
|
|
13073
|
+
type: object
|
|
13074
|
+
required:
|
|
13075
|
+
- method
|
|
13076
|
+
properties:
|
|
13077
|
+
method:
|
|
13078
|
+
type: string
|
|
13079
|
+
purpose:
|
|
13080
|
+
type: string
|
|
13081
|
+
responses:
|
|
13082
|
+
'200':
|
|
13083
|
+
description: Success
|
|
13084
|
+
'401':
|
|
13085
|
+
description: Unauthenticated
|
|
13086
|
+
'403':
|
|
13087
|
+
description: Forbidden, or the plan does not include this
|
|
13088
|
+
'404':
|
|
13089
|
+
description: Not found
|
|
13090
|
+
/v1/auth/reauth/complete:
|
|
13091
|
+
post:
|
|
13092
|
+
tags: [Auth]
|
|
13093
|
+
summary: "verify re-authentication and issue a single-use token."
|
|
13094
|
+
operationId: reauth_complete
|
|
13095
|
+
requestBody:
|
|
13096
|
+
required: true
|
|
13097
|
+
content:
|
|
13098
|
+
application/json:
|
|
13099
|
+
schema:
|
|
13100
|
+
type: object
|
|
13101
|
+
required:
|
|
13102
|
+
- method
|
|
13103
|
+
properties:
|
|
13104
|
+
method:
|
|
13105
|
+
type: string
|
|
13106
|
+
purpose:
|
|
13107
|
+
type: string
|
|
13108
|
+
password:
|
|
13109
|
+
type: string
|
|
13110
|
+
credential_id:
|
|
13111
|
+
type: string
|
|
13112
|
+
authenticator_data:
|
|
13113
|
+
type: string
|
|
13114
|
+
client_data_json:
|
|
13115
|
+
type: string
|
|
13116
|
+
signature:
|
|
13117
|
+
type: string
|
|
13118
|
+
responses:
|
|
13119
|
+
'200':
|
|
13120
|
+
description: Success
|
|
13121
|
+
'401':
|
|
13122
|
+
description: Unauthenticated
|
|
13123
|
+
'403':
|
|
13124
|
+
description: Forbidden, or the plan does not include this
|
|
13125
|
+
'404':
|
|
13126
|
+
description: Not found
|
|
13127
|
+
/v1/auth/social/disconnect:
|
|
13128
|
+
post:
|
|
13129
|
+
tags: [Auth]
|
|
13130
|
+
summary: "Sever every social identity link, so a social account that once owned this login can no longer reach it. The case this exists for: someone leaves a c"
|
|
13131
|
+
operationId: disconnect_social
|
|
13132
|
+
responses:
|
|
13133
|
+
'200':
|
|
13134
|
+
description: Success
|
|
13135
|
+
'401':
|
|
13136
|
+
description: Unauthenticated
|
|
13137
|
+
'403':
|
|
13138
|
+
description: Forbidden, or the plan does not include this
|
|
13139
|
+
'404':
|
|
13140
|
+
description: Not found
|
|
13141
|
+
/v1/auth/sso/authorize:
|
|
13142
|
+
get:
|
|
13143
|
+
tags: [Auth]
|
|
13144
|
+
summary: "returns JSON with authorization_url for WorkOS Hosted Auth."
|
|
13145
|
+
operationId: sso_authorize
|
|
13146
|
+
responses:
|
|
13147
|
+
'200':
|
|
13148
|
+
description: Success
|
|
13149
|
+
'401':
|
|
13150
|
+
description: Unauthenticated
|
|
13151
|
+
'403':
|
|
13152
|
+
description: Forbidden, or the plan does not include this
|
|
13153
|
+
'404':
|
|
13154
|
+
description: Not found
|
|
13155
|
+
/v1/auth/sso/callback:
|
|
13156
|
+
get:
|
|
13157
|
+
tags: [Auth]
|
|
13158
|
+
summary: "exchange code for profile, find/create user, redirect to dashboard with token."
|
|
13159
|
+
operationId: sso_callback
|
|
13160
|
+
responses:
|
|
13161
|
+
'200':
|
|
13162
|
+
description: Success
|
|
13163
|
+
'401':
|
|
13164
|
+
description: Unauthenticated
|
|
13165
|
+
'403':
|
|
13166
|
+
description: Forbidden, or the plan does not include this
|
|
13167
|
+
'404':
|
|
13168
|
+
description: Not found
|
|
13169
|
+
/v1/auth/sso/status:
|
|
13170
|
+
get:
|
|
13171
|
+
tags: [Auth]
|
|
13172
|
+
summary: "returns whether SSO is configured (for dashboard to show/hide SSO button)."
|
|
13173
|
+
operationId: sso_status
|
|
13174
|
+
responses:
|
|
13175
|
+
'200':
|
|
13176
|
+
description: Success
|
|
13177
|
+
'401':
|
|
13178
|
+
description: Unauthenticated
|
|
13179
|
+
'403':
|
|
13180
|
+
description: Forbidden, or the plan does not include this
|
|
13181
|
+
'404':
|
|
13182
|
+
description: Not found
|
|
13183
|
+
/v1/billing/llm-models:
|
|
13184
|
+
get:
|
|
13185
|
+
tags: [Billing]
|
|
13186
|
+
summary: "get llm models"
|
|
13187
|
+
operationId: get_llm_models
|
|
13188
|
+
responses:
|
|
13189
|
+
'200':
|
|
13190
|
+
description: Success
|
|
13191
|
+
'401':
|
|
13192
|
+
description: Unauthenticated
|
|
13193
|
+
'403':
|
|
13194
|
+
description: Forbidden, or the plan does not include this
|
|
13195
|
+
'404':
|
|
13196
|
+
description: Not found
|
|
13197
|
+
/v1/billing/llm-pricing:
|
|
13198
|
+
get:
|
|
13199
|
+
tags: [Billing]
|
|
13200
|
+
summary: "get llm pricing"
|
|
13201
|
+
operationId: get_llm_pricing
|
|
13202
|
+
responses:
|
|
13203
|
+
'200':
|
|
13204
|
+
description: Success
|
|
13205
|
+
'401':
|
|
13206
|
+
description: Unauthenticated
|
|
13207
|
+
'403':
|
|
13208
|
+
description: Forbidden, or the plan does not include this
|
|
13209
|
+
'404':
|
|
13210
|
+
description: Not found
|
|
13211
|
+
/v1/billing/promo/redeem:
|
|
13212
|
+
get:
|
|
13213
|
+
tags: [Billing]
|
|
13214
|
+
summary: "get llm billing status"
|
|
13215
|
+
operationId: get_llm_billing_status
|
|
13216
|
+
responses:
|
|
13217
|
+
'200':
|
|
13218
|
+
description: Success
|
|
13219
|
+
'401':
|
|
13220
|
+
description: Unauthenticated
|
|
13221
|
+
'403':
|
|
13222
|
+
description: Forbidden, or the plan does not include this
|
|
13223
|
+
'404':
|
|
13224
|
+
description: Not found
|
|
13225
|
+
post:
|
|
13226
|
+
tags: [Billing]
|
|
13227
|
+
summary: "redeem promo"
|
|
13228
|
+
operationId: redeem_promo
|
|
13229
|
+
requestBody:
|
|
13230
|
+
required: true
|
|
13231
|
+
content:
|
|
13232
|
+
application/json:
|
|
13233
|
+
schema:
|
|
13234
|
+
type: object
|
|
13235
|
+
required:
|
|
13236
|
+
- code
|
|
13237
|
+
properties:
|
|
13238
|
+
code:
|
|
13239
|
+
type: string
|
|
13240
|
+
responses:
|
|
13241
|
+
'200':
|
|
13242
|
+
description: Success
|
|
13243
|
+
'401':
|
|
13244
|
+
description: Unauthenticated
|
|
13245
|
+
'403':
|
|
13246
|
+
description: Forbidden, or the plan does not include this
|
|
13247
|
+
'404':
|
|
13248
|
+
description: Not found
|
|
13249
|
+
/v1/billing/promo/validate:
|
|
13250
|
+
get:
|
|
13251
|
+
tags: [Billing]
|
|
13252
|
+
summary: "validate promo"
|
|
13253
|
+
operationId: validate_promo
|
|
13254
|
+
responses:
|
|
13255
|
+
'200':
|
|
13256
|
+
description: Success
|
|
13257
|
+
'401':
|
|
13258
|
+
description: Unauthenticated
|
|
13259
|
+
'403':
|
|
13260
|
+
description: Forbidden, or the plan does not include this
|
|
13261
|
+
'404':
|
|
13262
|
+
description: Not found
|
|
13263
|
+
/v1/chains/rpc:
|
|
13264
|
+
post:
|
|
13265
|
+
tags: [Chains]
|
|
13266
|
+
summary: "Proxy a single JSON-RPC call to the chain's RPC URL. Only read-only methods in ALLOWED_RPC_METHODS are allowed (Treasury balances, Safe deployment, et"
|
|
13267
|
+
operationId: chain_rpc_proxy
|
|
13268
|
+
requestBody:
|
|
13269
|
+
required: true
|
|
13270
|
+
content:
|
|
13271
|
+
application/json:
|
|
13272
|
+
schema:
|
|
13273
|
+
type: object
|
|
13274
|
+
required:
|
|
13275
|
+
- chain_id
|
|
13276
|
+
- method
|
|
13277
|
+
- params
|
|
13278
|
+
properties:
|
|
13279
|
+
chain_id:
|
|
13280
|
+
type: integer
|
|
13281
|
+
method:
|
|
13282
|
+
type: string
|
|
13283
|
+
params:
|
|
13284
|
+
type: array
|
|
13285
|
+
items:
|
|
13286
|
+
type: object
|
|
13287
|
+
additionalProperties: true
|
|
13288
|
+
responses:
|
|
13289
|
+
'200':
|
|
13290
|
+
description: Success
|
|
13291
|
+
'401':
|
|
13292
|
+
description: Unauthenticated
|
|
13293
|
+
'403':
|
|
13294
|
+
description: Forbidden, or the plan does not include this
|
|
13295
|
+
'404':
|
|
13296
|
+
description: Not found
|
|
13297
|
+
/v1/fiat/webhooks:
|
|
13298
|
+
post:
|
|
13299
|
+
tags: [Fiat]
|
|
13300
|
+
summary: "Receive completion events from fiat partners (MoonPay signed body or generic JSON)."
|
|
13301
|
+
operationId: fiat_webhook
|
|
13302
|
+
responses:
|
|
13303
|
+
'200':
|
|
13304
|
+
description: Success
|
|
13305
|
+
'401':
|
|
13306
|
+
description: Unauthenticated
|
|
13307
|
+
'403':
|
|
13308
|
+
description: Forbidden, or the plan does not include this
|
|
13309
|
+
'404':
|
|
13310
|
+
description: Not found
|
|
13311
|
+
/v1/memory/shared-namespaces:
|
|
13312
|
+
get:
|
|
13313
|
+
tags: [Memory]
|
|
13314
|
+
summary: "list shared namespaces"
|
|
13315
|
+
operationId: list_shared_namespaces
|
|
13316
|
+
responses:
|
|
13317
|
+
'200':
|
|
13318
|
+
description: Success
|
|
13319
|
+
'401':
|
|
13320
|
+
description: Unauthenticated
|
|
13321
|
+
'403':
|
|
13322
|
+
description: Forbidden, or the plan does not include this
|
|
13323
|
+
'404':
|
|
13324
|
+
description: Not found
|
|
13325
|
+
post:
|
|
13326
|
+
tags: [Memory]
|
|
13327
|
+
summary: "create shared namespace"
|
|
13328
|
+
operationId: create_shared_namespace
|
|
13329
|
+
requestBody:
|
|
13330
|
+
required: true
|
|
13331
|
+
content:
|
|
13332
|
+
application/json:
|
|
13333
|
+
schema:
|
|
13334
|
+
type: object
|
|
13335
|
+
required:
|
|
13336
|
+
- namespace
|
|
13337
|
+
- agent_ids
|
|
13338
|
+
properties:
|
|
13339
|
+
namespace:
|
|
13340
|
+
type: string
|
|
13341
|
+
agent_ids:
|
|
13342
|
+
type: array
|
|
13343
|
+
items:
|
|
13344
|
+
type: string
|
|
13345
|
+
format: uuid
|
|
13346
|
+
responses:
|
|
13347
|
+
'200':
|
|
13348
|
+
description: Success
|
|
13349
|
+
'401':
|
|
13350
|
+
description: Unauthenticated
|
|
13351
|
+
'403':
|
|
13352
|
+
description: Forbidden, or the plan does not include this
|
|
13353
|
+
'404':
|
|
13354
|
+
description: Not found
|
|
13355
|
+
/v1/memory/shared-namespaces/{id}:
|
|
13356
|
+
parameters:
|
|
13357
|
+
- name: id
|
|
13358
|
+
in: path
|
|
13359
|
+
required: true
|
|
13360
|
+
schema:
|
|
13361
|
+
type: string
|
|
13362
|
+
delete:
|
|
13363
|
+
tags: [Memory]
|
|
13364
|
+
summary: "delete shared namespace"
|
|
13365
|
+
operationId: delete_shared_namespace
|
|
13366
|
+
responses:
|
|
13367
|
+
'200':
|
|
13368
|
+
description: Success
|
|
13369
|
+
'401':
|
|
13370
|
+
description: Unauthenticated
|
|
13371
|
+
'403':
|
|
13372
|
+
description: Forbidden, or the plan does not include this
|
|
13373
|
+
'404':
|
|
13374
|
+
description: Not found
|
|
13375
|
+
patch:
|
|
13376
|
+
tags: [Memory]
|
|
13377
|
+
summary: "update shared namespace"
|
|
13378
|
+
operationId: update_shared_namespace
|
|
13379
|
+
requestBody:
|
|
13380
|
+
required: true
|
|
13381
|
+
content:
|
|
13382
|
+
application/json:
|
|
13383
|
+
schema:
|
|
13384
|
+
type: object
|
|
13385
|
+
required:
|
|
13386
|
+
- agent_ids
|
|
13387
|
+
properties:
|
|
13388
|
+
agent_ids:
|
|
13389
|
+
type: array
|
|
13390
|
+
items:
|
|
13391
|
+
type: string
|
|
13392
|
+
format: uuid
|
|
13393
|
+
responses:
|
|
13394
|
+
'200':
|
|
13395
|
+
description: Success
|
|
13396
|
+
'401':
|
|
13397
|
+
description: Unauthenticated
|
|
13398
|
+
'403':
|
|
13399
|
+
description: Forbidden, or the plan does not include this
|
|
13400
|
+
'404':
|
|
13401
|
+
description: Not found
|
|
13402
|
+
/v1/onboarding/journey:
|
|
13403
|
+
post:
|
|
13404
|
+
tags: [Onboarding]
|
|
13405
|
+
summary: "record which path a user chose. The dashboard already had `track()` calls for the wizard, but they POST to a dashboard route that does not exist, so "
|
|
13406
|
+
operationId: record_journey
|
|
13407
|
+
requestBody:
|
|
13408
|
+
required: true
|
|
13409
|
+
content:
|
|
13410
|
+
application/json:
|
|
13411
|
+
schema:
|
|
13412
|
+
type: object
|
|
13413
|
+
required:
|
|
13414
|
+
- journey
|
|
13415
|
+
properties:
|
|
13416
|
+
journey:
|
|
13417
|
+
type: string
|
|
13418
|
+
step:
|
|
13419
|
+
type: string
|
|
13420
|
+
responses:
|
|
13421
|
+
'200':
|
|
13422
|
+
description: Success
|
|
13423
|
+
'401':
|
|
13424
|
+
description: Unauthenticated
|
|
13425
|
+
'403':
|
|
13426
|
+
description: Forbidden, or the plan does not include this
|
|
13427
|
+
'404':
|
|
13428
|
+
description: Not found
|
|
13429
|
+
/v1/org/env-vars/{id}/delete:
|
|
13430
|
+
parameters:
|
|
13431
|
+
- name: id
|
|
13432
|
+
in: path
|
|
13433
|
+
required: true
|
|
13434
|
+
schema:
|
|
13435
|
+
type: string
|
|
13436
|
+
post:
|
|
13437
|
+
tags: [Org]
|
|
13438
|
+
summary: "delete org env var"
|
|
13439
|
+
operationId: delete_org_env_var
|
|
13440
|
+
responses:
|
|
13441
|
+
'200':
|
|
13442
|
+
description: Success
|
|
13443
|
+
'401':
|
|
13444
|
+
description: Unauthenticated
|
|
13445
|
+
'403':
|
|
13446
|
+
description: Forbidden, or the plan does not include this
|
|
13447
|
+
'404':
|
|
13448
|
+
description: Not found
|
|
13449
|
+
/v1/org/kek-custody:
|
|
13450
|
+
get:
|
|
13451
|
+
tags: [Org]
|
|
13452
|
+
summary: "Get current custody mode and share metadata"
|
|
13453
|
+
operationId: get_custody
|
|
13454
|
+
responses:
|
|
13455
|
+
'200':
|
|
13456
|
+
description: Success
|
|
13457
|
+
'401':
|
|
13458
|
+
description: Unauthenticated
|
|
13459
|
+
'403':
|
|
13460
|
+
description: Forbidden, or the plan does not include this
|
|
13461
|
+
'404':
|
|
13462
|
+
description: Not found
|
|
13463
|
+
post:
|
|
13464
|
+
tags: [Org]
|
|
13465
|
+
summary: "Setup Shamir key custody"
|
|
13466
|
+
operationId: setup_custody
|
|
13467
|
+
requestBody:
|
|
13468
|
+
required: true
|
|
13469
|
+
content:
|
|
13470
|
+
application/json:
|
|
13471
|
+
schema:
|
|
13472
|
+
type: object
|
|
13473
|
+
required:
|
|
13474
|
+
- custody_mode
|
|
13475
|
+
properties:
|
|
13476
|
+
custody_mode:
|
|
13477
|
+
type: string
|
|
13478
|
+
responses:
|
|
13479
|
+
'200':
|
|
13480
|
+
description: Success
|
|
13481
|
+
'401':
|
|
13482
|
+
description: Unauthenticated
|
|
13483
|
+
'403':
|
|
13484
|
+
description: Forbidden, or the plan does not include this
|
|
13485
|
+
'404':
|
|
13486
|
+
description: Not found
|
|
13487
|
+
/v1/org/kek-custody/reconstruct:
|
|
13488
|
+
get:
|
|
13489
|
+
tags: [Org]
|
|
13490
|
+
summary: "list org env vars"
|
|
13491
|
+
operationId: list_org_env_vars
|
|
13492
|
+
responses:
|
|
13493
|
+
'200':
|
|
13494
|
+
description: Success
|
|
13495
|
+
'401':
|
|
13496
|
+
description: Unauthenticated
|
|
13497
|
+
'403':
|
|
13498
|
+
description: Forbidden, or the plan does not include this
|
|
13499
|
+
'404':
|
|
13500
|
+
description: Not found
|
|
13501
|
+
post:
|
|
13502
|
+
tags: [Org]
|
|
13503
|
+
summary: "TEE-bound reconstruction request"
|
|
13504
|
+
operationId: reconstruct
|
|
13505
|
+
requestBody:
|
|
13506
|
+
required: true
|
|
13507
|
+
content:
|
|
13508
|
+
application/json:
|
|
13509
|
+
schema:
|
|
13510
|
+
type: object
|
|
13511
|
+
required:
|
|
13512
|
+
- approval_id
|
|
13513
|
+
- action
|
|
13514
|
+
properties:
|
|
13515
|
+
approval_id:
|
|
13516
|
+
type: object
|
|
13517
|
+
client_share:
|
|
13518
|
+
type: string
|
|
13519
|
+
action:
|
|
13520
|
+
type: object
|
|
13521
|
+
additionalProperties: true
|
|
13522
|
+
responses:
|
|
13523
|
+
'200':
|
|
13524
|
+
description: Success
|
|
13525
|
+
'401':
|
|
13526
|
+
description: Unauthenticated
|
|
13527
|
+
'403':
|
|
13528
|
+
description: Forbidden, or the plan does not include this
|
|
13529
|
+
'404':
|
|
13530
|
+
description: Not found
|
|
13531
|
+
/v1/org/settings:
|
|
13532
|
+
get:
|
|
13533
|
+
tags: [Org]
|
|
13534
|
+
summary: "list org settings"
|
|
13535
|
+
operationId: list_org_settings
|
|
13536
|
+
responses:
|
|
13537
|
+
'200':
|
|
13538
|
+
description: Success
|
|
13539
|
+
'401':
|
|
13540
|
+
description: Unauthenticated
|
|
13541
|
+
'403':
|
|
13542
|
+
description: Forbidden, or the plan does not include this
|
|
13543
|
+
'404':
|
|
13544
|
+
description: Not found
|
|
13545
|
+
patch:
|
|
13546
|
+
tags: [Org]
|
|
13547
|
+
summary: "update org setting"
|
|
13548
|
+
operationId: update_org_setting
|
|
13549
|
+
requestBody:
|
|
13550
|
+
required: true
|
|
13551
|
+
content:
|
|
13552
|
+
application/json:
|
|
13553
|
+
schema:
|
|
13554
|
+
type: object
|
|
13555
|
+
required:
|
|
13556
|
+
- key
|
|
13557
|
+
- value
|
|
13558
|
+
properties:
|
|
13559
|
+
key:
|
|
13560
|
+
type: string
|
|
13561
|
+
value:
|
|
13562
|
+
type: string
|
|
13563
|
+
approval_id:
|
|
13564
|
+
type: string
|
|
13565
|
+
format: uuid
|
|
13566
|
+
responses:
|
|
13567
|
+
'200':
|
|
13568
|
+
description: Success
|
|
13569
|
+
'401':
|
|
13570
|
+
description: Unauthenticated
|
|
13571
|
+
'403':
|
|
13572
|
+
description: Forbidden, or the plan does not include this
|
|
13573
|
+
'404':
|
|
13574
|
+
description: Not found
|
|
13575
|
+
/v1/platform/apps/by-slug/{slug}/branding:
|
|
13576
|
+
parameters:
|
|
13577
|
+
- name: slug
|
|
13578
|
+
in: path
|
|
13579
|
+
required: true
|
|
13580
|
+
schema:
|
|
13581
|
+
type: string
|
|
13582
|
+
get:
|
|
13583
|
+
tags: [Platform]
|
|
13584
|
+
summary: "Public, returns app name + logo."
|
|
13585
|
+
operationId: app_branding
|
|
13586
|
+
security: []
|
|
13587
|
+
responses:
|
|
13588
|
+
'200':
|
|
13589
|
+
description: Success
|
|
13590
|
+
'404':
|
|
13591
|
+
description: Not found
|
|
13592
|
+
/v1/platform/apps/{app_id}/automations:
|
|
13593
|
+
parameters:
|
|
13594
|
+
- name: app_id
|
|
13595
|
+
in: path
|
|
13596
|
+
required: true
|
|
13597
|
+
schema:
|
|
13598
|
+
type: string
|
|
13599
|
+
get:
|
|
13600
|
+
tags: [Platform]
|
|
13601
|
+
summary: "list platform automations"
|
|
13602
|
+
operationId: list_platform_automations
|
|
13603
|
+
responses:
|
|
13604
|
+
'200':
|
|
13605
|
+
description: Success
|
|
13606
|
+
'401':
|
|
13607
|
+
description: Unauthenticated
|
|
13608
|
+
'403':
|
|
13609
|
+
description: Forbidden, or the plan does not include this
|
|
13610
|
+
'404':
|
|
13611
|
+
description: Not found
|
|
13612
|
+
post:
|
|
13613
|
+
tags: [Platform]
|
|
13614
|
+
summary: "upsert user"
|
|
13615
|
+
operationId: upsert_user
|
|
13616
|
+
requestBody:
|
|
13617
|
+
required: true
|
|
13618
|
+
content:
|
|
13619
|
+
application/json:
|
|
13620
|
+
schema:
|
|
13621
|
+
type: object
|
|
13622
|
+
properties:
|
|
13623
|
+
subject_token:
|
|
13624
|
+
type: string
|
|
13625
|
+
subject_token_type:
|
|
13626
|
+
type: string
|
|
13627
|
+
email:
|
|
13628
|
+
type: string
|
|
13629
|
+
display_name:
|
|
13630
|
+
type: string
|
|
13631
|
+
siwe_message:
|
|
13632
|
+
type: string
|
|
13633
|
+
siwe_signature:
|
|
13634
|
+
type: string
|
|
13635
|
+
return_to:
|
|
13636
|
+
type: string
|
|
13637
|
+
create_sub_org:
|
|
13638
|
+
type: boolean
|
|
13639
|
+
app_id:
|
|
13640
|
+
type: object
|
|
13641
|
+
responses:
|
|
13642
|
+
'200':
|
|
13643
|
+
description: Success
|
|
13644
|
+
'401':
|
|
13645
|
+
description: Unauthenticated
|
|
13646
|
+
'403':
|
|
13647
|
+
description: Forbidden, or the plan does not include this
|
|
13648
|
+
'404':
|
|
13649
|
+
description: Not found
|
|
13650
|
+
/v1/platform/connected-apps/{connection_id}/unlock-resources:
|
|
13651
|
+
parameters:
|
|
13652
|
+
- name: connection_id
|
|
13653
|
+
in: path
|
|
13654
|
+
required: true
|
|
13655
|
+
schema:
|
|
13656
|
+
type: string
|
|
13657
|
+
post:
|
|
13658
|
+
tags: [Platform]
|
|
13659
|
+
summary: "Unlocks platform-locked resources for a disconnected (or active) connection the user owns."
|
|
13660
|
+
operationId: unlock_connection_resources
|
|
13661
|
+
responses:
|
|
13662
|
+
'200':
|
|
13663
|
+
description: Success
|
|
13664
|
+
'401':
|
|
13665
|
+
description: Unauthenticated
|
|
13666
|
+
'403':
|
|
13667
|
+
description: Forbidden, or the plan does not include this
|
|
13668
|
+
'404':
|
|
13669
|
+
description: Not found
|
|
13670
|
+
/v1/platform/connections/{connection_id}/memory:
|
|
13671
|
+
parameters:
|
|
13672
|
+
- name: connection_id
|
|
13673
|
+
in: path
|
|
13674
|
+
required: true
|
|
13675
|
+
schema:
|
|
13676
|
+
type: string
|
|
13677
|
+
get:
|
|
13678
|
+
tags: [Platform]
|
|
13679
|
+
summary: "list connection memory namespaces"
|
|
13680
|
+
operationId: list_connection_memory_namespaces
|
|
13681
|
+
responses:
|
|
13682
|
+
'200':
|
|
13683
|
+
description: Success
|
|
13684
|
+
'401':
|
|
13685
|
+
description: Unauthenticated
|
|
13686
|
+
'403':
|
|
13687
|
+
description: Forbidden, or the plan does not include this
|
|
13688
|
+
'404':
|
|
13689
|
+
description: Not found
|
|
13690
|
+
/v1/platform/connections/{connection_id}/memory/{namespace}:
|
|
13691
|
+
parameters:
|
|
13692
|
+
- name: connection_id
|
|
13693
|
+
in: path
|
|
13694
|
+
required: true
|
|
13695
|
+
schema:
|
|
13696
|
+
type: string
|
|
13697
|
+
- name: namespace
|
|
13698
|
+
in: path
|
|
13699
|
+
required: true
|
|
13700
|
+
schema:
|
|
13701
|
+
type: string
|
|
13702
|
+
get:
|
|
13703
|
+
tags: [Platform]
|
|
13704
|
+
summary: "list connection memory entries"
|
|
13705
|
+
operationId: list_connection_memory_entries
|
|
13706
|
+
responses:
|
|
13707
|
+
'200':
|
|
13708
|
+
description: Success
|
|
13709
|
+
'401':
|
|
13710
|
+
description: Unauthenticated
|
|
13711
|
+
'403':
|
|
13712
|
+
description: Forbidden, or the plan does not include this
|
|
13713
|
+
'404':
|
|
13714
|
+
description: Not found
|
|
13715
|
+
/v1/platform/connections/{connection_id}/resources:
|
|
13716
|
+
parameters:
|
|
13717
|
+
- name: connection_id
|
|
13718
|
+
in: path
|
|
13719
|
+
required: true
|
|
13720
|
+
schema:
|
|
13721
|
+
type: string
|
|
13722
|
+
get:
|
|
13723
|
+
tags: [Platform]
|
|
13724
|
+
summary: "list connection resources"
|
|
13725
|
+
operationId: list_connection_resources
|
|
13726
|
+
responses:
|
|
13727
|
+
'200':
|
|
13728
|
+
description: Success
|
|
13729
|
+
'401':
|
|
13730
|
+
description: Unauthenticated
|
|
13731
|
+
'403':
|
|
13732
|
+
description: Forbidden, or the plan does not include this
|
|
13733
|
+
'404':
|
|
13734
|
+
description: Not found
|
|
13735
|
+
post:
|
|
13736
|
+
tags: [Platform]
|
|
13737
|
+
summary: "create app policy"
|
|
13738
|
+
operationId: create_app_policy
|
|
13739
|
+
requestBody:
|
|
13740
|
+
required: true
|
|
13741
|
+
content:
|
|
13742
|
+
application/json:
|
|
13743
|
+
schema:
|
|
13744
|
+
type: object
|
|
13745
|
+
properties:
|
|
13746
|
+
user_id:
|
|
13747
|
+
type: object
|
|
13748
|
+
to_allowlist:
|
|
13749
|
+
type: array
|
|
13750
|
+
items:
|
|
13751
|
+
type: string
|
|
13752
|
+
to_denylist:
|
|
13753
|
+
type: array
|
|
13754
|
+
items:
|
|
13755
|
+
type: string
|
|
13756
|
+
max_value_per_tx_eth:
|
|
13757
|
+
type: string
|
|
13758
|
+
daily_limit_eth:
|
|
13759
|
+
type: string
|
|
13760
|
+
allowed_chains:
|
|
13761
|
+
type: array
|
|
13762
|
+
items:
|
|
13763
|
+
type: string
|
|
13764
|
+
allowed_tokens:
|
|
13765
|
+
type: array
|
|
13766
|
+
items:
|
|
13767
|
+
type: string
|
|
13768
|
+
max_transactions_per_day:
|
|
13769
|
+
type: integer
|
|
13770
|
+
human_factor_auth:
|
|
13771
|
+
type: object
|
|
13772
|
+
additionalProperties: true
|
|
13773
|
+
responses:
|
|
13774
|
+
'200':
|
|
13775
|
+
description: Success
|
|
13776
|
+
'401':
|
|
13777
|
+
description: Unauthenticated
|
|
13778
|
+
'403':
|
|
13779
|
+
description: Forbidden, or the plan does not include this
|
|
13780
|
+
'404':
|
|
13781
|
+
description: Not found
|
|
13782
|
+
/v1/platform/link-account:
|
|
13783
|
+
post:
|
|
13784
|
+
tags: [Platform]
|
|
13785
|
+
summary: "Authenticated user links their account to a platform app. Used by the dashboard `/connect/{slug}/link` consent flow for cross-org users."
|
|
13786
|
+
operationId: link_account
|
|
13787
|
+
requestBody:
|
|
13788
|
+
required: true
|
|
13789
|
+
content:
|
|
13790
|
+
application/json:
|
|
13791
|
+
schema:
|
|
13792
|
+
type: object
|
|
13793
|
+
required:
|
|
13794
|
+
- client_id
|
|
13795
|
+
properties:
|
|
13796
|
+
client_id:
|
|
13797
|
+
type: string
|
|
13798
|
+
responses:
|
|
13799
|
+
'200':
|
|
13800
|
+
description: Success
|
|
13801
|
+
'401':
|
|
13802
|
+
description: Unauthenticated
|
|
13803
|
+
'403':
|
|
13804
|
+
description: Forbidden, or the plan does not include this
|
|
13805
|
+
'404':
|
|
13806
|
+
description: Not found
|
|
13807
|
+
/v1/platform/orphaned-resources:
|
|
13808
|
+
get:
|
|
13809
|
+
tags: [Platform]
|
|
13810
|
+
summary: "platform-locked agents/vaults with no active connection."
|
|
13811
|
+
operationId: list_orphaned_platform_resources
|
|
13812
|
+
responses:
|
|
13813
|
+
'200':
|
|
13814
|
+
description: Success
|
|
13815
|
+
'401':
|
|
13816
|
+
description: Unauthenticated
|
|
13817
|
+
'403':
|
|
13818
|
+
description: Forbidden, or the plan does not include this
|
|
13819
|
+
'404':
|
|
13820
|
+
description: Not found
|
|
13821
|
+
/v1/reports/request:
|
|
13822
|
+
post:
|
|
13823
|
+
tags: [Reports]
|
|
13824
|
+
summary: "Public (no auth). Submits lead info, sends email with download link."
|
|
13825
|
+
operationId: request_report
|
|
13826
|
+
security: []
|
|
13827
|
+
requestBody:
|
|
13828
|
+
required: true
|
|
13829
|
+
content:
|
|
13830
|
+
application/json:
|
|
13831
|
+
schema:
|
|
13832
|
+
type: object
|
|
13833
|
+
required:
|
|
13834
|
+
- first_name
|
|
13835
|
+
- last_name
|
|
13836
|
+
- email
|
|
13837
|
+
- company
|
|
13838
|
+
properties:
|
|
13839
|
+
first_name:
|
|
13840
|
+
type: string
|
|
13841
|
+
last_name:
|
|
13842
|
+
type: string
|
|
13843
|
+
email:
|
|
13844
|
+
type: string
|
|
13845
|
+
company:
|
|
13846
|
+
type: string
|
|
13847
|
+
job_title:
|
|
13848
|
+
type: string
|
|
13849
|
+
report_slug:
|
|
13850
|
+
type: string
|
|
13851
|
+
marketing_consent:
|
|
13852
|
+
type: boolean
|
|
13853
|
+
responses:
|
|
13854
|
+
'200':
|
|
13855
|
+
description: Success
|
|
13856
|
+
'404':
|
|
13857
|
+
description: Not found
|
|
13858
|
+
/v1/runtimes/{runtime_id}/chat/conversations:
|
|
13859
|
+
parameters:
|
|
13860
|
+
- name: runtime_id
|
|
13861
|
+
in: path
|
|
13862
|
+
required: true
|
|
13863
|
+
schema:
|
|
13864
|
+
type: string
|
|
13865
|
+
get:
|
|
13866
|
+
tags: [Runtimes]
|
|
13867
|
+
summary: "list runtime chat conversations"
|
|
13868
|
+
operationId: list_runtime_chat_conversations
|
|
13869
|
+
responses:
|
|
13870
|
+
'200':
|
|
13871
|
+
description: Success
|
|
13872
|
+
'401':
|
|
13873
|
+
description: Unauthenticated
|
|
13874
|
+
'403':
|
|
13875
|
+
description: Forbidden, or the plan does not include this
|
|
13876
|
+
'404':
|
|
13877
|
+
description: Not found
|
|
13878
|
+
/v1/runtimes/{runtime_id}/chat/conversations/{conversation_id}:
|
|
13879
|
+
parameters:
|
|
13880
|
+
- name: runtime_id
|
|
13881
|
+
in: path
|
|
13882
|
+
required: true
|
|
13883
|
+
schema:
|
|
13884
|
+
type: string
|
|
13885
|
+
- name: conversation_id
|
|
13886
|
+
in: path
|
|
13887
|
+
required: true
|
|
13888
|
+
schema:
|
|
13889
|
+
type: string
|
|
13890
|
+
delete:
|
|
13891
|
+
tags: [Runtimes]
|
|
13892
|
+
summary: "Archives a runtime chat session so the next message starts a fresh conversation."
|
|
13893
|
+
operationId: archive_runtime_chat_conversation
|
|
13894
|
+
responses:
|
|
13895
|
+
'200':
|
|
13896
|
+
description: Success
|
|
13897
|
+
'401':
|
|
13898
|
+
description: Unauthenticated
|
|
13899
|
+
'403':
|
|
13900
|
+
description: Forbidden, or the plan does not include this
|
|
13901
|
+
'404':
|
|
13902
|
+
description: Not found
|
|
13903
|
+
get:
|
|
13904
|
+
tags: [Runtimes]
|
|
13905
|
+
summary: "get runtime chat conversation"
|
|
13906
|
+
operationId: get_runtime_chat_conversation
|
|
13907
|
+
responses:
|
|
13908
|
+
'200':
|
|
13909
|
+
description: Success
|
|
13910
|
+
'401':
|
|
13911
|
+
description: Unauthenticated
|
|
13912
|
+
'403':
|
|
13913
|
+
description: Forbidden, or the plan does not include this
|
|
13914
|
+
'404':
|
|
13915
|
+
description: Not found
|
|
13916
|
+
/v1/runtimes/{runtime_id}/chat/diagnostics:
|
|
13917
|
+
parameters:
|
|
13918
|
+
- name: runtime_id
|
|
13919
|
+
in: path
|
|
13920
|
+
required: true
|
|
13921
|
+
schema:
|
|
13922
|
+
type: string
|
|
13923
|
+
get:
|
|
13924
|
+
tags: [Runtimes]
|
|
13925
|
+
summary: "Human-only snapshot of chat auth wiring: which platform env vars Vault will inject on the next Start and which upstream URL chat proxies to."
|
|
13926
|
+
operationId: runtime_chat_diagnostics
|
|
13927
|
+
responses:
|
|
13928
|
+
'200':
|
|
13929
|
+
description: Success
|
|
13930
|
+
'401':
|
|
13931
|
+
description: Unauthenticated
|
|
13932
|
+
'403':
|
|
13933
|
+
description: Forbidden, or the plan does not include this
|
|
13934
|
+
'404':
|
|
13935
|
+
description: Not found
|
|
13936
|
+
/v1/runtimes/{runtime_id}/chat/unlock:
|
|
13937
|
+
parameters:
|
|
13938
|
+
- name: runtime_id
|
|
13939
|
+
in: path
|
|
13940
|
+
required: true
|
|
13941
|
+
schema:
|
|
13942
|
+
type: string
|
|
13943
|
+
post:
|
|
13944
|
+
tags: [Runtimes]
|
|
13945
|
+
summary: "Step-up (password or passkey reauth token, purpose=`runtime_chat`) unlocks dashboard runtime chat for 15 minutes — same trust bar as Shell/Logs."
|
|
13946
|
+
operationId: unlock_runtime_chat
|
|
13947
|
+
responses:
|
|
13948
|
+
'200':
|
|
13949
|
+
description: Success
|
|
13950
|
+
'401':
|
|
13951
|
+
description: Unauthenticated
|
|
13952
|
+
'403':
|
|
13953
|
+
description: Forbidden, or the plan does not include this
|
|
13954
|
+
'404':
|
|
13955
|
+
description: Not found
|
|
13956
|
+
/v1/runtimes/{runtime_id}/logs/stream:
|
|
13957
|
+
parameters:
|
|
13958
|
+
- name: runtime_id
|
|
13959
|
+
in: path
|
|
13960
|
+
required: true
|
|
13961
|
+
schema:
|
|
13962
|
+
type: string
|
|
13963
|
+
get:
|
|
13964
|
+
tags: [Runtimes]
|
|
13965
|
+
summary: "SSE live log streaming"
|
|
13966
|
+
operationId: stream_runtime_logs
|
|
13967
|
+
responses:
|
|
13968
|
+
'200':
|
|
13969
|
+
description: Success
|
|
13970
|
+
'401':
|
|
13971
|
+
description: Unauthenticated
|
|
13972
|
+
'403':
|
|
13973
|
+
description: Forbidden, or the plan does not include this
|
|
13974
|
+
'404':
|
|
13975
|
+
description: Not found
|
|
13976
|
+
/v1/runtimes/{runtime_id}/logs/unlock:
|
|
13977
|
+
parameters:
|
|
13978
|
+
- name: runtime_id
|
|
13979
|
+
in: path
|
|
13980
|
+
required: true
|
|
13981
|
+
schema:
|
|
13982
|
+
type: string
|
|
13983
|
+
post:
|
|
13984
|
+
tags: [Runtimes]
|
|
13985
|
+
summary: "Step-up (password or passkey reauth token) unlocks log fetch/stream for 15 minutes."
|
|
13986
|
+
operationId: unlock_runtime_logs
|
|
13987
|
+
responses:
|
|
13988
|
+
'200':
|
|
13989
|
+
description: Success
|
|
13990
|
+
'401':
|
|
13991
|
+
description: Unauthenticated
|
|
13992
|
+
'403':
|
|
13993
|
+
description: Forbidden, or the plan does not include this
|
|
13994
|
+
'404':
|
|
13995
|
+
description: Not found
|
|
13996
|
+
/v1/runtimes/{runtime_id}/rebuild:
|
|
13997
|
+
parameters:
|
|
13998
|
+
- name: runtime_id
|
|
13999
|
+
in: path
|
|
14000
|
+
required: true
|
|
14001
|
+
schema:
|
|
14002
|
+
type: string
|
|
14003
|
+
post:
|
|
14004
|
+
tags: [Runtimes]
|
|
14005
|
+
summary: "Phase 1: invalidate the cached image tag and return the runtime to `stopped`. Next `start` re-pulls the image; for `source_repo` runtimes the entrypoi"
|
|
14006
|
+
operationId: rebuild_runtime
|
|
14007
|
+
responses:
|
|
14008
|
+
'200':
|
|
14009
|
+
description: Success
|
|
14010
|
+
'401':
|
|
14011
|
+
description: Unauthenticated
|
|
14012
|
+
'403':
|
|
14013
|
+
description: Forbidden, or the plan does not include this
|
|
14014
|
+
'404':
|
|
14015
|
+
description: Not found
|
|
14016
|
+
/v1/runtimes/{runtime_id}/restart:
|
|
14017
|
+
parameters:
|
|
14018
|
+
- name: runtime_id
|
|
14019
|
+
in: path
|
|
14020
|
+
required: true
|
|
14021
|
+
schema:
|
|
14022
|
+
type: string
|
|
14023
|
+
post:
|
|
14024
|
+
tags: [Runtimes]
|
|
14025
|
+
summary: "Force stop (best-effort) then start. Recovers stale `running` rows and proxy timeouts where the client never received the start response."
|
|
14026
|
+
operationId: restart_runtime
|
|
14027
|
+
responses:
|
|
14028
|
+
'200':
|
|
14029
|
+
description: Success
|
|
14030
|
+
'401':
|
|
14031
|
+
description: Unauthenticated
|
|
14032
|
+
'403':
|
|
14033
|
+
description: Forbidden, or the plan does not include this
|
|
14034
|
+
'404':
|
|
14035
|
+
description: Not found
|
|
14036
|
+
/v1/vaults/{vault_id}/secret-version-disable/{*path_and_version}:
|
|
14037
|
+
parameters:
|
|
14038
|
+
- name: vault_id
|
|
14039
|
+
in: path
|
|
14040
|
+
required: true
|
|
14041
|
+
schema:
|
|
14042
|
+
type: string
|
|
14043
|
+
post:
|
|
14044
|
+
tags: [Vaults]
|
|
14045
|
+
summary: "Disable a specific version so it can no longer be read (but is retained for audit)."
|
|
14046
|
+
operationId: disable_version
|
|
14047
|
+
responses:
|
|
14048
|
+
'200':
|
|
14049
|
+
description: Success
|
|
14050
|
+
'401':
|
|
14051
|
+
description: Unauthenticated
|
|
14052
|
+
'403':
|
|
14053
|
+
description: Forbidden, or the plan does not include this
|
|
14054
|
+
'404':
|
|
14055
|
+
description: Not found
|
|
14056
|
+
/v1/vaults/{vault_id}/secret-version/{*path_and_version}:
|
|
14057
|
+
parameters:
|
|
14058
|
+
- name: vault_id
|
|
14059
|
+
in: path
|
|
14060
|
+
required: true
|
|
14061
|
+
schema:
|
|
14062
|
+
type: string
|
|
14063
|
+
get:
|
|
14064
|
+
tags: [Vaults]
|
|
14065
|
+
summary: "get secret version"
|
|
14066
|
+
operationId: get_secret_version
|
|
14067
|
+
responses:
|
|
14068
|
+
'200':
|
|
14069
|
+
description: Success
|
|
14070
|
+
'401':
|
|
14071
|
+
description: Unauthenticated
|
|
14072
|
+
'403':
|
|
14073
|
+
description: Forbidden, or the plan does not include this
|
|
14074
|
+
'404':
|
|
14075
|
+
description: Not found
|
|
14076
|
+
/v1/vaults/{vault_id}/unlock-platform:
|
|
14077
|
+
parameters:
|
|
14078
|
+
- name: vault_id
|
|
14079
|
+
in: path
|
|
14080
|
+
required: true
|
|
14081
|
+
schema:
|
|
14082
|
+
type: string
|
|
14083
|
+
post:
|
|
14084
|
+
tags: [Vaults]
|
|
14085
|
+
summary: "unlock vault platform"
|
|
14086
|
+
operationId: unlock_vault_platform
|
|
14087
|
+
responses:
|
|
14088
|
+
'200':
|
|
14089
|
+
description: Success
|
|
14090
|
+
'401':
|
|
14091
|
+
description: Unauthenticated
|
|
14092
|
+
'403':
|
|
14093
|
+
description: Forbidden, or the plan does not include this
|
|
14094
|
+
'404':
|
|
14095
|
+
description: Not found
|
|
14096
|
+
/v1/webinars/register:
|
|
14097
|
+
post:
|
|
14098
|
+
tags: [Webinars]
|
|
14099
|
+
summary: "Public (no auth). Registers for a webinar, sends confirmation + calendar invite."
|
|
14100
|
+
operationId: register_webinar
|
|
14101
|
+
security: []
|
|
14102
|
+
requestBody:
|
|
14103
|
+
required: true
|
|
14104
|
+
content:
|
|
14105
|
+
application/json:
|
|
14106
|
+
schema:
|
|
14107
|
+
type: object
|
|
14108
|
+
required:
|
|
14109
|
+
- first_name
|
|
14110
|
+
- last_name
|
|
14111
|
+
- email
|
|
14112
|
+
- company
|
|
14113
|
+
properties:
|
|
14114
|
+
first_name:
|
|
14115
|
+
type: string
|
|
14116
|
+
last_name:
|
|
14117
|
+
type: string
|
|
14118
|
+
email:
|
|
14119
|
+
type: string
|
|
14120
|
+
company:
|
|
14121
|
+
type: string
|
|
14122
|
+
job_title:
|
|
14123
|
+
type: string
|
|
14124
|
+
webinar_slug:
|
|
14125
|
+
type: string
|
|
14126
|
+
marketing_consent:
|
|
14127
|
+
type: boolean
|
|
14128
|
+
responses:
|
|
14129
|
+
'200':
|
|
14130
|
+
description: Success
|
|
14131
|
+
'404':
|
|
14132
|
+
description: Not found
|
|
14133
|
+
|
|
14134
|
+
/v1/runtimes/templates:
|
|
14135
|
+
get:
|
|
14136
|
+
tags: [Runtimes]
|
|
14137
|
+
summary: "The provisionable runtime templates, with licence and whether the agent needs its own vendor account"
|
|
14138
|
+
operationId: list_runtime_templates
|
|
14139
|
+
responses:
|
|
14140
|
+
'200':
|
|
14141
|
+
description: The template catalogue
|
|
14142
|
+
content:
|
|
14143
|
+
application/json:
|
|
14144
|
+
schema:
|
|
14145
|
+
type: object
|
|
14146
|
+
properties:
|
|
14147
|
+
templates:
|
|
14148
|
+
type: array
|
|
14149
|
+
items:
|
|
14150
|
+
type: object
|
|
14151
|
+
properties:
|
|
14152
|
+
id:
|
|
14153
|
+
type: string
|
|
14154
|
+
description:
|
|
14155
|
+
type: string
|
|
14156
|
+
chat_capable:
|
|
14157
|
+
type: boolean
|
|
14158
|
+
license:
|
|
14159
|
+
type: string
|
|
14160
|
+
nullable: true
|
|
14161
|
+
description: SPDX id, or null when the agent is proprietary
|
|
14162
|
+
requires_vendor_subscription:
|
|
14163
|
+
type: boolean
|
|
14164
|
+
description: Whether the agent needs a paid account with its vendor. Independent of licence — the Codex CLI is Apache-2.0 and still requires a ChatGPT plan.
|
|
14165
|
+
vendor_credential_env:
|
|
14166
|
+
type: string
|
|
14167
|
+
nullable: true
|
|
14168
|
+
'401':
|
|
14169
|
+
description: Unauthenticated
|
|
14170
|
+
/v1/automations/step-types:
|
|
14171
|
+
get:
|
|
14172
|
+
tags: [Automations]
|
|
14173
|
+
summary: "The automation step vocabulary an automation may use"
|
|
14174
|
+
operationId: list_automation_step_types
|
|
14175
|
+
responses:
|
|
14176
|
+
'200':
|
|
14177
|
+
description: Supported step types
|
|
14178
|
+
'401':
|
|
14179
|
+
description: Unauthenticated
|
|
14180
|
+
/v1/platform/apps/{app_id}/runtimes:
|
|
14181
|
+
parameters:
|
|
14182
|
+
- name: app_id
|
|
14183
|
+
in: path
|
|
14184
|
+
required: true
|
|
14185
|
+
schema:
|
|
14186
|
+
type: string
|
|
14187
|
+
format: uuid
|
|
14188
|
+
get:
|
|
14189
|
+
tags: [Platform]
|
|
14190
|
+
summary: "Runtimes belonging to a platform app"
|
|
14191
|
+
operationId: list_platform_runtimes
|
|
14192
|
+
responses:
|
|
14193
|
+
'200':
|
|
14194
|
+
description: Success
|
|
14195
|
+
'401':
|
|
14196
|
+
description: Unauthenticated
|
|
14197
|
+
'403':
|
|
14198
|
+
description: Forbidden
|
|
14199
|
+
/v1/browser/devices:
|
|
14200
|
+
post:
|
|
14201
|
+
tags: [Browser Bridge]
|
|
14202
|
+
summary: "Pair a browser bridge and mint its credential. Human callers only, behind a step-up re-auth: pairing is what gives a browser the standing to ask for credentials later."
|
|
14203
|
+
operationId: pair_browser_device
|
|
14204
|
+
requestBody:
|
|
14205
|
+
required: true
|
|
14206
|
+
content:
|
|
14207
|
+
application/json:
|
|
14208
|
+
schema:
|
|
14209
|
+
type: object
|
|
14210
|
+
required: [label, public_key_pin]
|
|
14211
|
+
properties:
|
|
14212
|
+
label:
|
|
14213
|
+
type: string
|
|
14214
|
+
description: Name for this device. Re-pairing an existing label must present the same key.
|
|
14215
|
+
public_key_pin:
|
|
14216
|
+
type: string
|
|
14217
|
+
description: The bridge's public key, pinned on first use for this label.
|
|
14218
|
+
bridge_version:
|
|
14219
|
+
type: string
|
|
14220
|
+
platform:
|
|
14221
|
+
type: string
|
|
14222
|
+
responses:
|
|
14223
|
+
'201':
|
|
14224
|
+
description: "Paired. The credential is returned once and there is no endpoint that returns it again."
|
|
14225
|
+
content:
|
|
14226
|
+
application/json:
|
|
14227
|
+
schema:
|
|
14228
|
+
type: object
|
|
14229
|
+
properties:
|
|
14230
|
+
device_id:
|
|
14231
|
+
type: string
|
|
14232
|
+
format: uuid
|
|
14233
|
+
label:
|
|
14234
|
+
type: string
|
|
14235
|
+
credential:
|
|
14236
|
+
type: string
|
|
14237
|
+
description: The bb_ bridge credential. Shown once.
|
|
14238
|
+
'401':
|
|
14239
|
+
description: Unauthenticated, or step-up re-auth not satisfied
|
|
14240
|
+
'403':
|
|
14241
|
+
description: Not a human caller — agents and platform keys cannot pair a device
|
|
14242
|
+
'409':
|
|
14243
|
+
description: That label is already pinned to a different key
|
|
14244
|
+
/v1/browser/credentials:
|
|
14245
|
+
post:
|
|
14246
|
+
tags: [Browser Bridge]
|
|
14247
|
+
summary: "Define a binding: which secret may be typed, and into which hosts. Humans only, behind a step-up — an agent that could create one could nominate any path it liked as fillable."
|
|
14248
|
+
operationId: create_browser_credential
|
|
14249
|
+
requestBody:
|
|
14250
|
+
required: true
|
|
14251
|
+
content:
|
|
14252
|
+
application/json:
|
|
14253
|
+
schema:
|
|
14254
|
+
type: object
|
|
14255
|
+
required: [label, vault_id, secret_path, login_url, allowed_hosts]
|
|
14256
|
+
properties:
|
|
14257
|
+
label:
|
|
14258
|
+
type: string
|
|
14259
|
+
vault_id:
|
|
14260
|
+
type: string
|
|
14261
|
+
format: uuid
|
|
14262
|
+
description: Must belong to the caller's org.
|
|
14263
|
+
secret_path:
|
|
14264
|
+
type: string
|
|
14265
|
+
description: Path of the secret inside that vault. The value never lands in the binding.
|
|
14266
|
+
login_url:
|
|
14267
|
+
type: string
|
|
14268
|
+
description: "https only, and its host must be in allowed_hosts or sso_hosts — the bridge navigates here itself, one step before a password is typed."
|
|
14269
|
+
allowed_hosts:
|
|
14270
|
+
type: array
|
|
14271
|
+
minItems: 1
|
|
14272
|
+
items:
|
|
14273
|
+
type: string
|
|
14274
|
+
description: "Bare hostnames, compared exactly. URLs, ports and wildcards are refused: a wildcard would match nothing while looking like it allowed something."
|
|
14275
|
+
sso_hosts:
|
|
14276
|
+
type: array
|
|
14277
|
+
items:
|
|
14278
|
+
type: string
|
|
14279
|
+
description: Identity-provider hosts the login legitimately bounces through.
|
|
14280
|
+
responses:
|
|
14281
|
+
'201':
|
|
14282
|
+
description: Created. Every field is a pointer or a policy; none is secret.
|
|
14283
|
+
'400':
|
|
14284
|
+
description: A host is not a bare hostname, allowed_hosts is empty, or login_url is http or outside the allowlist
|
|
14285
|
+
'403':
|
|
14286
|
+
description: Not a human caller, step-up not satisfied, or the vault belongs to another org
|
|
14287
|
+
'404':
|
|
14288
|
+
description: Vault not found
|
|
14289
|
+
get:
|
|
14290
|
+
tags: [Browser Bridge]
|
|
14291
|
+
summary: List this org's browser credential bindings
|
|
14292
|
+
operationId: list_browser_credentials
|
|
14293
|
+
responses:
|
|
14294
|
+
'200':
|
|
14295
|
+
description: The bindings
|
|
14296
|
+
/v1/browser/credentials/{id}:
|
|
14297
|
+
parameters:
|
|
14298
|
+
- name: id
|
|
14299
|
+
in: path
|
|
14300
|
+
required: true
|
|
14301
|
+
schema:
|
|
14302
|
+
type: string
|
|
14303
|
+
format: uuid
|
|
14304
|
+
delete:
|
|
14305
|
+
tags: [Browser Bridge]
|
|
14306
|
+
summary: Remove a browser credential binding
|
|
14307
|
+
operationId: delete_browser_credential
|
|
14308
|
+
responses:
|
|
14309
|
+
'204':
|
|
14310
|
+
description: Deleted
|
|
14311
|
+
'403':
|
|
14312
|
+
description: Not a human caller
|
|
14313
|
+
'404':
|
|
14314
|
+
description: Binding not found
|
|
14315
|
+
/v1/agents/{id}/browser/sessions:
|
|
14316
|
+
parameters:
|
|
14317
|
+
- name: id
|
|
14318
|
+
in: path
|
|
14319
|
+
required: true
|
|
14320
|
+
schema:
|
|
14321
|
+
type: string
|
|
14322
|
+
format: uuid
|
|
14323
|
+
post:
|
|
14324
|
+
tags: [Browser Bridge]
|
|
14325
|
+
summary: "Open a browser session. Accepts a paired bridge credential only — an agent token is refused, so a session cannot be bootstrapped on an unpaired machine."
|
|
14326
|
+
operationId: create_browser_session
|
|
14327
|
+
parameters:
|
|
14328
|
+
- name: x-1claw-bridge-credential
|
|
14329
|
+
in: header
|
|
14330
|
+
required: true
|
|
14331
|
+
schema:
|
|
14332
|
+
type: string
|
|
14333
|
+
description: The bb_ credential from `1claw browser-bridge login`
|
|
14334
|
+
- name: x-1claw-bridge-version
|
|
14335
|
+
in: header
|
|
14336
|
+
required: true
|
|
14337
|
+
schema:
|
|
14338
|
+
type: string
|
|
14339
|
+
description: Bridge build. Versions below the server minimum are refused.
|
|
14340
|
+
requestBody:
|
|
14341
|
+
required: true
|
|
14342
|
+
content:
|
|
14343
|
+
application/json:
|
|
14344
|
+
schema:
|
|
14345
|
+
type: object
|
|
14346
|
+
required: [agent_id, client_id]
|
|
14347
|
+
properties:
|
|
14348
|
+
agent_id:
|
|
14349
|
+
type: string
|
|
14350
|
+
format: uuid
|
|
14351
|
+
description: Must belong to the same org as the paired device.
|
|
14352
|
+
client_id:
|
|
14353
|
+
type: string
|
|
14354
|
+
bridge_version:
|
|
14355
|
+
type: string
|
|
14356
|
+
protocol_version:
|
|
14357
|
+
type: string
|
|
14358
|
+
responses:
|
|
14359
|
+
'200':
|
|
14360
|
+
description: Session created
|
|
14361
|
+
content:
|
|
14362
|
+
application/json:
|
|
14363
|
+
schema:
|
|
14364
|
+
type: object
|
|
14365
|
+
properties:
|
|
14366
|
+
session_id:
|
|
14367
|
+
type: string
|
|
14368
|
+
format: uuid
|
|
14369
|
+
session_token:
|
|
14370
|
+
type: string
|
|
14371
|
+
description: bs_ prefixed. Only its hash is stored.
|
|
14372
|
+
expires_at:
|
|
14373
|
+
type: string
|
|
14374
|
+
format: date-time
|
|
14375
|
+
'400':
|
|
14376
|
+
description: Missing or unsupported bridge version
|
|
14377
|
+
'401':
|
|
14378
|
+
description: Not a paired bridge, or an agent token was presented
|
|
14379
|
+
'403':
|
|
14380
|
+
description: The device and the agent are not in the same org
|
|
14381
|
+
/v1/agents/{id}/browser/fills:
|
|
14382
|
+
parameters:
|
|
14383
|
+
- name: id
|
|
14384
|
+
in: path
|
|
14385
|
+
required: true
|
|
14386
|
+
schema:
|
|
14387
|
+
type: string
|
|
14388
|
+
format: uuid
|
|
14389
|
+
post:
|
|
14390
|
+
tags: [Browser Bridge]
|
|
14391
|
+
summary: "Authorise one credential fill. Requires the bridge credential *and* an agent JWT — neither alone is sufficient."
|
|
14392
|
+
operationId: authorize_browser_fill
|
|
14393
|
+
parameters:
|
|
14394
|
+
- name: x-1claw-bridge-credential
|
|
14395
|
+
in: header
|
|
14396
|
+
required: true
|
|
14397
|
+
schema:
|
|
14398
|
+
type: string
|
|
14399
|
+
- name: x-1claw-bridge-version
|
|
14400
|
+
in: header
|
|
14401
|
+
required: true
|
|
14402
|
+
schema:
|
|
14403
|
+
type: string
|
|
14404
|
+
requestBody:
|
|
14405
|
+
required: true
|
|
14406
|
+
content:
|
|
14407
|
+
application/json:
|
|
14408
|
+
schema:
|
|
14409
|
+
type: object
|
|
14410
|
+
required: [session_id, binding_id, tab_origin, frame_origin, frame_id, generation]
|
|
14411
|
+
properties:
|
|
14412
|
+
session_id:
|
|
14413
|
+
type: string
|
|
14414
|
+
format: uuid
|
|
14415
|
+
description: Must match the session the presented bs_ token opened.
|
|
14416
|
+
binding_id:
|
|
14417
|
+
type: string
|
|
14418
|
+
format: uuid
|
|
14419
|
+
frame_id:
|
|
14420
|
+
type: string
|
|
14421
|
+
description: The target the fill is for. Recorded on the grant.
|
|
14422
|
+
generation:
|
|
14423
|
+
type: integer
|
|
14424
|
+
format: int64
|
|
14425
|
+
description: "The bridge's navigation counter. Compared again at consume: a navigation in between means the page decided about is no longer the page in front of the bridge."
|
|
14426
|
+
form_action_origin:
|
|
14427
|
+
type: string
|
|
14428
|
+
description: "Where the form would POST. Checked as well as the two origins — a login form on an allowed page can still submit to somebody else's host."
|
|
14429
|
+
tab_origin:
|
|
14430
|
+
type: string
|
|
14431
|
+
description: "Origin of the tab being driven. Checked against the binding's allowed and sso hosts by exact host match."
|
|
14432
|
+
frame_origin:
|
|
14433
|
+
type: string
|
|
14434
|
+
description: "Origin of the frame holding the form. Checked separately — a credential typed into an allowed tab can still land in an attacker's iframe."
|
|
14435
|
+
responses:
|
|
14436
|
+
'200':
|
|
14437
|
+
description: A grant, a denial, or a pending approval. Never a secret.
|
|
14438
|
+
content:
|
|
14439
|
+
application/json:
|
|
14440
|
+
schema:
|
|
14441
|
+
type: object
|
|
14442
|
+
properties:
|
|
14443
|
+
kind:
|
|
14444
|
+
type: string
|
|
14445
|
+
enum: [grant]
|
|
14446
|
+
grant_id:
|
|
14447
|
+
type: string
|
|
14448
|
+
format: uuid
|
|
14449
|
+
description: Single-use, short-lived, redeemable only by the session it was issued to.
|
|
14450
|
+
binding_id:
|
|
14451
|
+
type: string
|
|
14452
|
+
format: uuid
|
|
14453
|
+
expires_at:
|
|
14454
|
+
type: string
|
|
14455
|
+
format: date-time
|
|
14456
|
+
login_url:
|
|
14457
|
+
type: string
|
|
14458
|
+
description: "The bridge navigates here itself. An agent-supplied URL would be the agent choosing who receives the password."
|
|
14459
|
+
'400':
|
|
14460
|
+
description: Missing or unsupported bridge version
|
|
14461
|
+
'403':
|
|
14462
|
+
description: "Only one of the two required credentials was presented, an origin is not on the binding's allowlist, or the fill velocity cap was hit"
|
|
14463
|
+
'404':
|
|
14464
|
+
description: No such binding for this org
|
|
14465
|
+
|
|
14466
|
+
/v1/agents/{id}/browser/fills/consume:
|
|
14467
|
+
parameters:
|
|
14468
|
+
- name: id
|
|
14469
|
+
in: path
|
|
14470
|
+
required: true
|
|
14471
|
+
schema:
|
|
14472
|
+
type: string
|
|
14473
|
+
format: uuid
|
|
14474
|
+
post:
|
|
14475
|
+
tags: [Browser Bridge]
|
|
14476
|
+
summary: "Redeem a grant for the credential it authorised. Takes the browser session token and the bridge credential, and refuses an agent principal — the agent asks which binding, the bridge collects the answer."
|
|
14477
|
+
operationId: consume_browser_fill
|
|
14478
|
+
parameters:
|
|
14479
|
+
- name: x-1claw-bridge-credential
|
|
14480
|
+
in: header
|
|
14481
|
+
required: true
|
|
14482
|
+
schema:
|
|
14483
|
+
type: string
|
|
14484
|
+
- name: x-1claw-bridge-session
|
|
14485
|
+
in: header
|
|
14486
|
+
required: true
|
|
14487
|
+
schema:
|
|
14488
|
+
type: string
|
|
14489
|
+
description: The bs_ session token. Proof the redemption belongs to a session this bridge opened.
|
|
14490
|
+
- name: x-1claw-bridge-version
|
|
14491
|
+
in: header
|
|
14492
|
+
required: true
|
|
14493
|
+
schema:
|
|
14494
|
+
type: string
|
|
14495
|
+
requestBody:
|
|
14496
|
+
required: true
|
|
14497
|
+
content:
|
|
14498
|
+
application/json:
|
|
14499
|
+
schema:
|
|
14500
|
+
type: object
|
|
14501
|
+
required: [session_id, grant_id, generation]
|
|
14502
|
+
properties:
|
|
14503
|
+
session_id:
|
|
14504
|
+
type: string
|
|
14505
|
+
format: uuid
|
|
14506
|
+
grant_id:
|
|
14507
|
+
type: string
|
|
14508
|
+
format: uuid
|
|
14509
|
+
generation:
|
|
14510
|
+
type: integer
|
|
14511
|
+
format: int64
|
|
14512
|
+
description: The bridge's navigation counter now. A mismatch means the page moved after the decision.
|
|
14513
|
+
responses:
|
|
14514
|
+
'200':
|
|
14515
|
+
description: "The credential itself, as raw bytes — the only route in the feature that returns secret material. Not a JSON envelope: the bridge adopts the body into a zeroable buffer, and a wrapper would force it to parse, interning the secret as a string that lives until GC. Metadata rides in `x-1claw-binding-id` and `x-1claw-form-fingerprint`; the response is `cache-control: no-store`."
|
|
14516
|
+
headers:
|
|
14517
|
+
x-1claw-binding-id:
|
|
14518
|
+
schema:
|
|
14519
|
+
type: string
|
|
14520
|
+
format: uuid
|
|
14521
|
+
x-1claw-form-fingerprint:
|
|
14522
|
+
schema:
|
|
14523
|
+
type: string
|
|
14524
|
+
format: byte
|
|
14525
|
+
description: "The binding's form fingerprint, base64-encoded JSON, when it has one. Base64 because a fingerprint naming a non-ASCII field is not a legal header value as raw JSON."
|
|
14526
|
+
content:
|
|
14527
|
+
application/octet-stream:
|
|
14528
|
+
schema:
|
|
14529
|
+
type: string
|
|
14530
|
+
format: binary
|
|
14531
|
+
'400':
|
|
14532
|
+
description: Missing or unsupported bridge version
|
|
14533
|
+
'403':
|
|
14534
|
+
description: "Grant expired, already used, issued to another session or device; the page navigated after authorisation; or an agent principal was presented"
|
|
14535
|
+
'404':
|
|
14536
|
+
description: The binding or the secret behind it is missing
|
|
14537
|
+
|
|
14538
|
+
/v1/agents/{agent_id}/chat/unlock:
|
|
14539
|
+
parameters:
|
|
14540
|
+
- name: agent_id
|
|
14541
|
+
in: path
|
|
14542
|
+
required: true
|
|
14543
|
+
schema:
|
|
14544
|
+
type: string
|
|
14545
|
+
format: uuid
|
|
14546
|
+
post:
|
|
14547
|
+
tags: [Chat]
|
|
14548
|
+
summary: "Unlock an agent's chat history for reading"
|
|
14549
|
+
operationId: unlock_agent_chat
|
|
14550
|
+
responses:
|
|
14551
|
+
'200':
|
|
14552
|
+
description: Unlocked
|
|
14553
|
+
'401':
|
|
14554
|
+
description: Unauthenticated
|
|
14555
|
+
'403':
|
|
14556
|
+
description: Forbidden
|
|
14557
|
+
'404':
|
|
14558
|
+
description: Agent not found
|
|
12634
14559
|
|
|
12635
14560
|
components:
|
|
12636
14561
|
securitySchemes:
|
|
@@ -15404,11 +17329,21 @@ components:
|
|
|
15404
17329
|
|
|
15405
17330
|
PatchConnectionAgentRequest:
|
|
15406
17331
|
type: object
|
|
17332
|
+
description: |
|
|
17333
|
+
At least one field is required.
|
|
15407
17334
|
properties:
|
|
15408
17335
|
intents_api_enabled:
|
|
15409
17336
|
type: boolean
|
|
15410
17337
|
execution_intents_enabled:
|
|
15411
17338
|
type: boolean
|
|
17339
|
+
memory_enabled:
|
|
17340
|
+
type: boolean
|
|
17341
|
+
description: |
|
|
17342
|
+
Agent memory, off by default. Until this field existed a
|
|
17343
|
+
platform app had no way to turn it on: a bootstrap template
|
|
17344
|
+
accepted `memory_enabled` in its spec and never read it, so
|
|
17345
|
+
the capability was reachable only from the end user's own
|
|
17346
|
+
dashboard. Templates now honour the flag too.
|
|
15412
17347
|
system_prompt:
|
|
15413
17348
|
type: string
|
|
15414
17349
|
nullable: true
|
|
@@ -15423,6 +17358,8 @@ components:
|
|
|
15423
17358
|
type: boolean
|
|
15424
17359
|
execution_intents_enabled:
|
|
15425
17360
|
type: boolean
|
|
17361
|
+
memory_enabled:
|
|
17362
|
+
type: boolean
|
|
15426
17363
|
system_prompt:
|
|
15427
17364
|
type: string
|
|
15428
17365
|
nullable: true
|
|
@@ -17892,6 +19829,13 @@ components:
|
|
|
17892
19829
|
type: boolean
|
|
17893
19830
|
default: false
|
|
17894
19831
|
description: When true, creates a sub-org under the platform app's org
|
|
19832
|
+
app_id:
|
|
19833
|
+
type: string
|
|
19834
|
+
format: uuid
|
|
19835
|
+
description: |
|
|
19836
|
+
Required only when calling as a user (the dashboard wizard).
|
|
19837
|
+
A `plt_` key carries its app in the credential; a user does not,
|
|
19838
|
+
so the app is named here and checked against the caller's org.
|
|
17895
19839
|
|
|
17896
19840
|
PlatformUserResponse:
|
|
17897
19841
|
type: object
|