@1claw/openapi-spec 0.42.0 → 0.43.1

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.
Files changed (3) hide show
  1. package/openapi.json +1262 -167
  2. package/openapi.yaml +798 -64
  3. package/package.json +1 -1
package/openapi.yaml CHANGED
@@ -2,12 +2,13 @@ openapi: 3.1.0
2
2
 
3
3
  info:
4
4
  title: 1Claw API
5
- version: 2.28.0
5
+ version: 2.30.0
6
6
  description: |
7
7
  Secure secret management for AI agents. Provides vaults, secrets,
8
8
  policy-based access control, agent identity, Intents API,
9
- sharing, billing, and audit logging. Automations, cloud runtimes,
10
- agent memory, and discovery.
9
+ sharing, billing, and audit logging. Automations (workflow_spec),
10
+ cloud runtimes with interactive shell sessions, agent memory,
11
+ and discovery.
11
12
 
12
13
  All endpoints require JWT Bearer authentication unless marked with
13
14
  `security: []`.
@@ -89,6 +90,10 @@ tags:
89
90
  description: Agent memory storage (scratch, durable, semantic)
90
91
  - name: Discovery
91
92
  description: Agent directory and platform marketplace
93
+ - name: Agent Chat
94
+ description: Chat with agents via Shroud LLM proxy
95
+ - name: Agent Channels
96
+ description: External messaging channels (Telegram, WhatsApp, Discord)
92
97
 
93
98
  # =============================================================================
94
99
  # PATHS
@@ -7005,6 +7010,78 @@ paths:
7005
7010
  "401":
7006
7011
  $ref: "#/components/responses/Unauthorized"
7007
7012
 
7013
+ /v1/runtimes/{runtimeId}/shell/session:
7014
+ post:
7015
+ tags: [Runtimes]
7016
+ summary: Create interactive shell session
7017
+ description: |
7018
+ Human-only. Creates a short-lived WebSocket session token for the
7019
+ runtime's PTY terminal. Requires step-up auth via `password`,
7020
+ `totp_code`, `passkey_credential`, or `reauth_token` (from
7021
+ `POST /v1/auth/reauth` with purpose `runtime_shell`).
7022
+ Runtime must have `shell_access_enabled` and be running.
7023
+ Enabling shell on a running runtime may require stop/start, or
7024
+ the server may auto-reconcile the sidecar on connect.
7025
+ operationId: createShellSession
7026
+ parameters:
7027
+ - name: runtimeId
7028
+ in: path
7029
+ required: true
7030
+ schema:
7031
+ type: string
7032
+ format: uuid
7033
+ requestBody:
7034
+ required: true
7035
+ content:
7036
+ application/json:
7037
+ schema:
7038
+ $ref: "#/components/schemas/ShellSessionRequest"
7039
+ responses:
7040
+ "200":
7041
+ description: Shell session created
7042
+ content:
7043
+ application/json:
7044
+ schema:
7045
+ $ref: "#/components/schemas/ShellSessionResponse"
7046
+ "400":
7047
+ $ref: "#/components/responses/BadRequest"
7048
+ "401":
7049
+ $ref: "#/components/responses/Unauthorized"
7050
+ "403":
7051
+ $ref: "#/components/responses/Forbidden"
7052
+ "404":
7053
+ $ref: "#/components/responses/NotFound"
7054
+
7055
+ /v1/runtimes/{runtimeId}/shell/passkey/begin:
7056
+ post:
7057
+ tags: [Runtimes]
7058
+ summary: Begin shell passkey assertion
7059
+ description: |
7060
+ Human-only. Starts a WebAuthn assertion ceremony for shell
7061
+ step-up auth (social/Google users without a password).
7062
+ operationId: beginShellPasskey
7063
+ parameters:
7064
+ - name: runtimeId
7065
+ in: path
7066
+ required: true
7067
+ schema:
7068
+ type: string
7069
+ format: uuid
7070
+ responses:
7071
+ "200":
7072
+ description: Passkey challenge for shell session
7073
+ content:
7074
+ application/json:
7075
+ schema:
7076
+ type: object
7077
+ additionalProperties: true
7078
+ "401":
7079
+ $ref: "#/components/responses/Unauthorized"
7080
+ "403":
7081
+ $ref: "#/components/responses/Forbidden"
7082
+ "404":
7083
+ $ref: "#/components/responses/NotFound"
7084
+
7008
7085
  # ---------------------------------------------------------------------------
7009
7086
  # Agent Memory
7010
7087
  # ---------------------------------------------------------------------------
@@ -7277,11 +7354,378 @@ paths:
7277
7354
  description: Search query
7278
7355
  responses:
7279
7356
  "200":
7280
- description: Marketplace listing
7281
- content:
7282
- application/json:
7283
- schema:
7284
- $ref: "#/components/schemas/DirectoryResponse"
7357
+ description: Marketplace listing
7358
+ content:
7359
+ application/json:
7360
+ schema:
7361
+ $ref: "#/components/schemas/DirectoryResponse"
7362
+
7363
+ # ---------------------------------------------------------------------------
7364
+ # Agent Chat
7365
+ # ---------------------------------------------------------------------------
7366
+
7367
+ /v1/agents/{agent_id}/chat:
7368
+ post:
7369
+ tags: [Agent Chat]
7370
+ summary: Send chat message
7371
+ description: |
7372
+ Send a message to an agent and receive a response via Shroud LLM.
7373
+ Supports SSE streaming when Accept: text/event-stream is set.
7374
+ operationId: sendChatMessage
7375
+ parameters:
7376
+ - $ref: "#/components/parameters/AgentId"
7377
+ requestBody:
7378
+ required: true
7379
+ content:
7380
+ application/json:
7381
+ schema:
7382
+ $ref: "#/components/schemas/SendChatMessageRequest"
7383
+ responses:
7384
+ "200":
7385
+ description: Chat response
7386
+ content:
7387
+ application/json:
7388
+ schema:
7389
+ $ref: "#/components/schemas/SendChatMessageResponse"
7390
+ text/event-stream:
7391
+ schema:
7392
+ type: string
7393
+ description: SSE stream of response chunks
7394
+ "401":
7395
+ $ref: "#/components/responses/Unauthorized"
7396
+ "403":
7397
+ $ref: "#/components/responses/Forbidden"
7398
+
7399
+ /v1/agents/{agent_id}/chat/conversations:
7400
+ get:
7401
+ tags: [Agent Chat]
7402
+ summary: List conversations
7403
+ description: List all chat conversations for an agent.
7404
+ operationId: listChatConversations
7405
+ parameters:
7406
+ - $ref: "#/components/parameters/AgentId"
7407
+ responses:
7408
+ "200":
7409
+ description: Conversation list
7410
+ content:
7411
+ application/json:
7412
+ schema:
7413
+ $ref: "#/components/schemas/ChatConversationListResponse"
7414
+ "401":
7415
+ $ref: "#/components/responses/Unauthorized"
7416
+
7417
+ /v1/agents/{agent_id}/chat/conversations/{conversation_id}:
7418
+ get:
7419
+ tags: [Agent Chat]
7420
+ summary: Get conversation
7421
+ description: Get a conversation with its full message history.
7422
+ operationId: getChatConversation
7423
+ parameters:
7424
+ - $ref: "#/components/parameters/AgentId"
7425
+ - name: conversation_id
7426
+ in: path
7427
+ required: true
7428
+ schema:
7429
+ type: string
7430
+ format: uuid
7431
+ responses:
7432
+ "200":
7433
+ description: Conversation detail
7434
+ content:
7435
+ application/json:
7436
+ schema:
7437
+ $ref: "#/components/schemas/ConversationDetailResponse"
7438
+ "401":
7439
+ $ref: "#/components/responses/Unauthorized"
7440
+ "404":
7441
+ $ref: "#/components/responses/NotFound"
7442
+ delete:
7443
+ tags: [Agent Chat]
7444
+ summary: Archive conversation
7445
+ description: Archive (soft-delete) a chat conversation.
7446
+ operationId: deleteChatConversation
7447
+ parameters:
7448
+ - $ref: "#/components/parameters/AgentId"
7449
+ - name: conversation_id
7450
+ in: path
7451
+ required: true
7452
+ schema:
7453
+ type: string
7454
+ format: uuid
7455
+ responses:
7456
+ "204":
7457
+ description: Conversation archived
7458
+ "401":
7459
+ $ref: "#/components/responses/Unauthorized"
7460
+ "404":
7461
+ $ref: "#/components/responses/NotFound"
7462
+
7463
+ # ---------------------------------------------------------------------------
7464
+ # Agent Channels
7465
+ # ---------------------------------------------------------------------------
7466
+
7467
+ /v1/agents/{agent_id}/channels:
7468
+ post:
7469
+ tags: [Agent Channels]
7470
+ summary: Register channel
7471
+ description: |
7472
+ Register a new external messaging channel (Telegram, WhatsApp, Discord)
7473
+ for an agent. Human-only. Returns the channel with its webhook URL.
7474
+ operationId: createChannel
7475
+ parameters:
7476
+ - $ref: "#/components/parameters/AgentId"
7477
+ requestBody:
7478
+ required: true
7479
+ content:
7480
+ application/json:
7481
+ schema:
7482
+ $ref: "#/components/schemas/CreateChannelRequest"
7483
+ responses:
7484
+ "201":
7485
+ description: Channel created
7486
+ content:
7487
+ application/json:
7488
+ schema:
7489
+ $ref: "#/components/schemas/ChannelResponse"
7490
+ "400":
7491
+ $ref: "#/components/responses/BadRequest"
7492
+ "401":
7493
+ $ref: "#/components/responses/Unauthorized"
7494
+ "403":
7495
+ $ref: "#/components/responses/Forbidden"
7496
+ get:
7497
+ tags: [Agent Channels]
7498
+ summary: List channels
7499
+ description: List all messaging channels for an agent.
7500
+ operationId: listChannels
7501
+ parameters:
7502
+ - $ref: "#/components/parameters/AgentId"
7503
+ responses:
7504
+ "200":
7505
+ description: Channel list
7506
+ content:
7507
+ application/json:
7508
+ schema:
7509
+ $ref: "#/components/schemas/ChannelListResponse"
7510
+ "401":
7511
+ $ref: "#/components/responses/Unauthorized"
7512
+
7513
+ /v1/agents/{agent_id}/channels/{channel_id}:
7514
+ patch:
7515
+ tags: [Agent Channels]
7516
+ summary: Update channel
7517
+ description: Update a channel's name, active status, or config. Human-only.
7518
+ operationId: updateChannel
7519
+ parameters:
7520
+ - $ref: "#/components/parameters/AgentId"
7521
+ - name: channel_id
7522
+ in: path
7523
+ required: true
7524
+ schema:
7525
+ type: string
7526
+ format: uuid
7527
+ requestBody:
7528
+ required: true
7529
+ content:
7530
+ application/json:
7531
+ schema:
7532
+ $ref: "#/components/schemas/UpdateChannelRequest"
7533
+ responses:
7534
+ "200":
7535
+ description: Channel updated
7536
+ content:
7537
+ application/json:
7538
+ schema:
7539
+ $ref: "#/components/schemas/ChannelResponse"
7540
+ "401":
7541
+ $ref: "#/components/responses/Unauthorized"
7542
+ "403":
7543
+ $ref: "#/components/responses/Forbidden"
7544
+ "404":
7545
+ $ref: "#/components/responses/NotFound"
7546
+ delete:
7547
+ tags: [Agent Channels]
7548
+ summary: Delete channel
7549
+ description: Delete a messaging channel. Human-only.
7550
+ operationId: deleteChannel
7551
+ parameters:
7552
+ - $ref: "#/components/parameters/AgentId"
7553
+ - name: channel_id
7554
+ in: path
7555
+ required: true
7556
+ schema:
7557
+ type: string
7558
+ format: uuid
7559
+ responses:
7560
+ "204":
7561
+ description: Channel deleted
7562
+ "401":
7563
+ $ref: "#/components/responses/Unauthorized"
7564
+ "403":
7565
+ $ref: "#/components/responses/Forbidden"
7566
+ "404":
7567
+ $ref: "#/components/responses/NotFound"
7568
+
7569
+ /v1/agents/{agent_id}/channels/{channel_id}/send:
7570
+ post:
7571
+ tags: [Agent Channels]
7572
+ summary: Send outbound message
7573
+ description: Send an outbound message via a registered channel.
7574
+ operationId: sendChannelMessage
7575
+ parameters:
7576
+ - $ref: "#/components/parameters/AgentId"
7577
+ - name: channel_id
7578
+ in: path
7579
+ required: true
7580
+ schema:
7581
+ type: string
7582
+ format: uuid
7583
+ requestBody:
7584
+ required: true
7585
+ content:
7586
+ application/json:
7587
+ schema:
7588
+ $ref: "#/components/schemas/SendChannelMessageRequest"
7589
+ responses:
7590
+ "200":
7591
+ description: Message sent
7592
+ content:
7593
+ application/json:
7594
+ schema:
7595
+ $ref: "#/components/schemas/ChannelMessageResponse"
7596
+ "401":
7597
+ $ref: "#/components/responses/Unauthorized"
7598
+ "404":
7599
+ $ref: "#/components/responses/NotFound"
7600
+
7601
+ /v1/agents/{agent_id}/channels/{channel_id}/messages:
7602
+ get:
7603
+ tags: [Agent Channels]
7604
+ summary: Channel message history
7605
+ description: List inbound and outbound messages for a channel.
7606
+ operationId: listChannelMessages
7607
+ parameters:
7608
+ - $ref: "#/components/parameters/AgentId"
7609
+ - name: channel_id
7610
+ in: path
7611
+ required: true
7612
+ schema:
7613
+ type: string
7614
+ format: uuid
7615
+ - name: limit
7616
+ in: query
7617
+ schema:
7618
+ type: integer
7619
+ default: 50
7620
+ responses:
7621
+ "200":
7622
+ description: Message list
7623
+ content:
7624
+ application/json:
7625
+ schema:
7626
+ $ref: "#/components/schemas/ChannelMessageListResponse"
7627
+ "401":
7628
+ $ref: "#/components/responses/Unauthorized"
7629
+
7630
+ # ---------------------------------------------------------------------------
7631
+ # Channel Webhooks (Public)
7632
+ # ---------------------------------------------------------------------------
7633
+
7634
+ /v1/webhooks/telegram/{webhook_path}:
7635
+ post:
7636
+ tags: [Agent Channels]
7637
+ summary: Telegram webhook
7638
+ description: Public webhook endpoint for receiving Telegram bot updates.
7639
+ operationId: telegramWebhook
7640
+ security: []
7641
+ parameters:
7642
+ - name: webhook_path
7643
+ in: path
7644
+ required: true
7645
+ schema:
7646
+ type: string
7647
+ requestBody:
7648
+ required: true
7649
+ content:
7650
+ application/json:
7651
+ schema:
7652
+ type: object
7653
+ responses:
7654
+ "200":
7655
+ description: Webhook processed
7656
+
7657
+ /v1/webhooks/whatsapp/{webhook_path}:
7658
+ get:
7659
+ tags: [Agent Channels]
7660
+ summary: WhatsApp webhook verification
7661
+ description: Verification endpoint for WhatsApp Cloud API webhook setup.
7662
+ operationId: whatsappWebhookVerify
7663
+ security: []
7664
+ parameters:
7665
+ - name: webhook_path
7666
+ in: path
7667
+ required: true
7668
+ schema:
7669
+ type: string
7670
+ - name: hub.mode
7671
+ in: query
7672
+ schema:
7673
+ type: string
7674
+ - name: hub.verify_token
7675
+ in: query
7676
+ schema:
7677
+ type: string
7678
+ - name: hub.challenge
7679
+ in: query
7680
+ schema:
7681
+ type: string
7682
+ responses:
7683
+ "200":
7684
+ description: Challenge response
7685
+ post:
7686
+ tags: [Agent Channels]
7687
+ summary: WhatsApp webhook
7688
+ description: Public webhook endpoint for receiving WhatsApp Cloud API events.
7689
+ operationId: whatsappWebhook
7690
+ security: []
7691
+ parameters:
7692
+ - name: webhook_path
7693
+ in: path
7694
+ required: true
7695
+ schema:
7696
+ type: string
7697
+ requestBody:
7698
+ required: true
7699
+ content:
7700
+ application/json:
7701
+ schema:
7702
+ type: object
7703
+ responses:
7704
+ "200":
7705
+ description: Webhook processed
7706
+
7707
+ /v1/webhooks/discord/{webhook_path}:
7708
+ post:
7709
+ tags: [Agent Channels]
7710
+ summary: Discord webhook
7711
+ description: Public webhook endpoint for receiving Discord bot interactions.
7712
+ operationId: discordWebhook
7713
+ security: []
7714
+ parameters:
7715
+ - name: webhook_path
7716
+ in: path
7717
+ required: true
7718
+ schema:
7719
+ type: string
7720
+ requestBody:
7721
+ required: true
7722
+ content:
7723
+ application/json:
7724
+ schema:
7725
+ type: object
7726
+ responses:
7727
+ "200":
7728
+ description: Webhook processed
7285
7729
 
7286
7730
  # =============================================================================
7287
7731
  # COMPONENTS
@@ -12753,97 +13197,110 @@ components:
12753
13197
 
12754
13198
  CreateAutomationRequest:
12755
13199
  type: object
12756
- required: [name]
13200
+ required: [name, agent_id, trigger_type, workflow_spec]
13201
+ description: |
13202
+ Create an automation. `workflow_spec` is required and must be either
13203
+ a JSON array of steps or `{ "steps": [...] }`. Dashboard `schedule`
13204
+ trigger_type is accepted and normalized to `cron`. For cron triggers,
13205
+ `cron_expr` is required.
12757
13206
  properties:
12758
13207
  name:
12759
13208
  type: string
12760
- description:
12761
- type: string
12762
13209
  agent_id:
12763
13210
  type: string
12764
13211
  format: uuid
12765
13212
  trigger_type:
12766
13213
  type: string
12767
- enum: [schedule, webhook, event, manual]
12768
- trigger_config:
12769
- type: object
12770
- additionalProperties: true
12771
- action_type:
13214
+ description: cron | event | webhook | manual (alias schedule → cron)
13215
+ enum: [cron, event, webhook, manual, schedule]
13216
+ cron_expr:
12772
13217
  type: string
12773
- action_config:
13218
+ description: Required when trigger_type is cron (or schedule)
13219
+ example: "0 */6 * * *"
13220
+ timezone:
13221
+ type: string
13222
+ default: UTC
13223
+ example: UTC
13224
+ event_filter:
12774
13225
  type: object
12775
13226
  additionalProperties: true
12776
- is_active:
12777
- type: boolean
12778
- default: true
13227
+ nullable: true
13228
+ workflow_spec:
13229
+ description: |
13230
+ Workflow steps. Accepts a bare array `[...]` or
13231
+ `{ "steps": [...] }` (dashboard / preset shape).
13232
+ oneOf:
13233
+ - type: array
13234
+ items:
13235
+ type: object
13236
+ additionalProperties: true
13237
+ - type: object
13238
+ additionalProperties: true
12779
13239
 
12780
13240
  UpdateAutomationRequest:
12781
13241
  type: object
12782
13242
  properties:
12783
13243
  name:
12784
13244
  type: string
12785
- description:
12786
- type: string
12787
- agent_id:
12788
- type: string
12789
- format: uuid
12790
- trigger_type:
13245
+ cron_expr:
12791
13246
  type: string
12792
- enum: [schedule, webhook, event, manual]
12793
- trigger_config:
12794
- type: object
12795
- additionalProperties: true
12796
- action_type:
13247
+ nullable: true
13248
+ timezone:
12797
13249
  type: string
12798
- action_config:
13250
+ event_filter:
12799
13251
  type: object
12800
13252
  additionalProperties: true
13253
+ nullable: true
13254
+ workflow_spec:
13255
+ oneOf:
13256
+ - type: array
13257
+ items:
13258
+ type: object
13259
+ additionalProperties: true
13260
+ - type: object
13261
+ additionalProperties: true
12801
13262
  is_active:
12802
13263
  type: boolean
12803
13264
 
12804
13265
  AutomationResponse:
12805
13266
  type: object
12806
- required: [id, name, trigger_type, is_active, created_at, updated_at]
13267
+ required: [id, agent_id, name, trigger_type, timezone, workflow_spec, is_active, created_at, updated_at]
12807
13268
  properties:
12808
13269
  id:
12809
13270
  type: string
12810
13271
  format: uuid
12811
- name:
12812
- type: string
12813
- description:
12814
- type: string
12815
- nullable: true
12816
13272
  agent_id:
12817
13273
  type: string
12818
13274
  format: uuid
12819
- nullable: true
13275
+ name:
13276
+ type: string
12820
13277
  trigger_type:
12821
13278
  type: string
12822
- enum: [schedule, webhook, event, manual]
12823
- trigger_config:
12824
- type: object
12825
- additionalProperties: true
12826
- nullable: true
12827
- action_type:
13279
+ enum: [cron, event, webhook, manual]
13280
+ cron_expr:
12828
13281
  type: string
12829
13282
  nullable: true
12830
- action_config:
13283
+ timezone:
13284
+ type: string
13285
+ event_filter:
12831
13286
  type: object
12832
13287
  additionalProperties: true
12833
13288
  nullable: true
13289
+ workflow_spec:
13290
+ oneOf:
13291
+ - type: array
13292
+ items:
13293
+ type: object
13294
+ additionalProperties: true
13295
+ - type: object
13296
+ additionalProperties: true
12834
13297
  is_active:
12835
13298
  type: boolean
12836
- webhook_url:
12837
- type: string
12838
- nullable: true
12839
- schedule_expression:
12840
- type: string
12841
- nullable: true
12842
- next_run_at:
13299
+ last_run_at:
12843
13300
  type: string
12844
13301
  format: date-time
12845
13302
  nullable: true
12846
- last_run_at:
13303
+ next_run_at:
12847
13304
  type: string
12848
13305
  format: date-time
12849
13306
  nullable: true
@@ -12865,7 +13322,7 @@ components:
12865
13322
 
12866
13323
  AutomationRunResponse:
12867
13324
  type: object
12868
- required: [id, automation_id, status, started_at]
13325
+ required: [id, automation_id, agent_id, status, started_at, tokens_used, cost_cents]
12869
13326
  properties:
12870
13327
  id:
12871
13328
  type: string
@@ -12873,23 +13330,31 @@ components:
12873
13330
  automation_id:
12874
13331
  type: string
12875
13332
  format: uuid
13333
+ agent_id:
13334
+ type: string
13335
+ format: uuid
12876
13336
  status:
12877
13337
  type: string
12878
- enum: [pending, running, completed, failed]
13338
+ enum: [pending, running, completed, failed, denied]
13339
+ step_results:
13340
+ nullable: true
13341
+ error:
13342
+ type: string
13343
+ nullable: true
13344
+ trigger_source:
13345
+ type: string
13346
+ nullable: true
12879
13347
  started_at:
12880
13348
  type: string
12881
13349
  format: date-time
12882
- completed_at:
13350
+ finished_at:
12883
13351
  type: string
12884
13352
  format: date-time
12885
13353
  nullable: true
12886
- result:
12887
- type: object
12888
- additionalProperties: true
12889
- nullable: true
12890
- error:
12891
- type: string
12892
- nullable: true
13354
+ tokens_used:
13355
+ type: integer
13356
+ cost_cents:
13357
+ type: integer
12893
13358
 
12894
13359
  AutomationRunListResponse:
12895
13360
  type: object
@@ -12933,6 +13398,14 @@ components:
12933
13398
  inbound_auth:
12934
13399
  type: string
12935
13400
  enum: [api_key, jwt, public]
13401
+ shell_access_enabled:
13402
+ type: boolean
13403
+ default: false
13404
+ shell_auth_policy:
13405
+ type: string
13406
+ description: Step-up auth policy for shell (e.g. password, passkey, totp)
13407
+ shell_max_session_minutes:
13408
+ type: integer
12936
13409
 
12937
13410
  UpdateRuntimeRequest:
12938
13411
  type: object
@@ -12960,6 +13433,12 @@ components:
12960
13433
  inbound_auth:
12961
13434
  type: string
12962
13435
  enum: [api_key, jwt, public]
13436
+ shell_access_enabled:
13437
+ type: boolean
13438
+ shell_auth_policy:
13439
+ type: string
13440
+ shell_max_session_minutes:
13441
+ type: integer
12963
13442
 
12964
13443
  RuntimeResponse:
12965
13444
  type: object
@@ -13012,6 +13491,12 @@ components:
13012
13491
  type: string
13013
13492
  enum: [api_key, jwt, public]
13014
13493
  nullable: true
13494
+ shell_access_enabled:
13495
+ type: boolean
13496
+ shell_auth_policy:
13497
+ type: string
13498
+ shell_max_session_minutes:
13499
+ type: integer
13015
13500
  monthly_hours_used:
13016
13501
  type: number
13017
13502
  nullable: true
@@ -13043,6 +13528,41 @@ components:
13043
13528
  type: string
13044
13529
  nullable: true
13045
13530
 
13531
+ ShellSessionRequest:
13532
+ type: object
13533
+ description: |
13534
+ Step-up credentials for an interactive shell session.
13535
+ Provide one of password, totp_code, passkey_credential, or reauth_token.
13536
+ properties:
13537
+ password:
13538
+ type: string
13539
+ totp_code:
13540
+ type: string
13541
+ passkey_credential:
13542
+ type: object
13543
+ additionalProperties: true
13544
+ reauth_token:
13545
+ type: string
13546
+ description: Single-use `rat_` token from POST /v1/auth/reauth (purpose runtime_shell)
13547
+
13548
+ ShellSessionResponse:
13549
+ type: object
13550
+ required: [session_token, ws_url, expires_in, runtime_id, max_session_minutes]
13551
+ properties:
13552
+ session_token:
13553
+ type: string
13554
+ ws_url:
13555
+ type: string
13556
+ description: WebSocket URL for the PTY terminal
13557
+ expires_in:
13558
+ type: integer
13559
+ format: int64
13560
+ runtime_id:
13561
+ type: string
13562
+ format: uuid
13563
+ max_session_minutes:
13564
+ type: integer
13565
+
13046
13566
  # --- Agent Memory ---
13047
13567
 
13048
13568
  MemoryEntry:
@@ -13215,3 +13735,217 @@ components:
13215
13735
  type: array
13216
13736
  items:
13217
13737
  type: string
13738
+
13739
+ # ── Agent Chat ────────────────────────────────────────────────
13740
+
13741
+ SendChatMessageRequest:
13742
+ type: object
13743
+ required: [message]
13744
+ properties:
13745
+ message:
13746
+ type: string
13747
+ conversation_id:
13748
+ type: string
13749
+ format: uuid
13750
+ mode:
13751
+ type: string
13752
+ model:
13753
+ type: string
13754
+ provider:
13755
+ type: string
13756
+ system_prompt:
13757
+ type: string
13758
+
13759
+ ChatMessageResponse:
13760
+ type: object
13761
+ properties:
13762
+ id:
13763
+ type: string
13764
+ format: uuid
13765
+ conversation_id:
13766
+ type: string
13767
+ format: uuid
13768
+ role:
13769
+ type: string
13770
+ content:
13771
+ type: string
13772
+ tool_calls: {}
13773
+ tool_results: {}
13774
+ tokens_prompt:
13775
+ type: integer
13776
+ tokens_completion:
13777
+ type: integer
13778
+ model:
13779
+ type: string
13780
+ created_at:
13781
+ type: string
13782
+ format: date-time
13783
+
13784
+ ChatConversationResponse:
13785
+ type: object
13786
+ properties:
13787
+ id:
13788
+ type: string
13789
+ format: uuid
13790
+ agent_id:
13791
+ type: string
13792
+ format: uuid
13793
+ title:
13794
+ type: string
13795
+ mode:
13796
+ type: string
13797
+ model:
13798
+ type: string
13799
+ provider:
13800
+ type: string
13801
+ created_at:
13802
+ type: string
13803
+ format: date-time
13804
+ updated_at:
13805
+ type: string
13806
+ format: date-time
13807
+
13808
+ ChatConversationListResponse:
13809
+ type: object
13810
+ properties:
13811
+ conversations:
13812
+ type: array
13813
+ items:
13814
+ $ref: "#/components/schemas/ChatConversationResponse"
13815
+
13816
+ ConversationDetailResponse:
13817
+ type: object
13818
+ properties:
13819
+ conversation:
13820
+ $ref: "#/components/schemas/ChatConversationResponse"
13821
+ messages:
13822
+ type: array
13823
+ items:
13824
+ $ref: "#/components/schemas/ChatMessageResponse"
13825
+
13826
+ SendChatMessageResponse:
13827
+ type: object
13828
+ properties:
13829
+ conversation_id:
13830
+ type: string
13831
+ format: uuid
13832
+ message:
13833
+ $ref: "#/components/schemas/ChatMessageResponse"
13834
+
13835
+ # ── Agent Channels ────────────────────────────────────────────
13836
+
13837
+ CreateChannelRequest:
13838
+ type: object
13839
+ required: [channel_type, config]
13840
+ properties:
13841
+ channel_type:
13842
+ type: string
13843
+ enum: [telegram, whatsapp, discord]
13844
+ channel_name:
13845
+ type: string
13846
+ config:
13847
+ type: object
13848
+ additionalProperties:
13849
+ type: string
13850
+ description: |
13851
+ Platform-specific config.
13852
+ Telegram: { bot_token }.
13853
+ WhatsApp: { phone_number_id, access_token, verify_token }.
13854
+ Discord: { bot_token, application_id }.
13855
+
13856
+ UpdateChannelRequest:
13857
+ type: object
13858
+ properties:
13859
+ channel_name:
13860
+ type: string
13861
+ is_active:
13862
+ type: boolean
13863
+ config:
13864
+ type: object
13865
+ additionalProperties:
13866
+ type: string
13867
+
13868
+ ChannelResponse:
13869
+ type: object
13870
+ properties:
13871
+ id:
13872
+ type: string
13873
+ format: uuid
13874
+ org_id:
13875
+ type: string
13876
+ format: uuid
13877
+ agent_id:
13878
+ type: string
13879
+ format: uuid
13880
+ channel_type:
13881
+ type: string
13882
+ enum: [telegram, whatsapp, discord]
13883
+ channel_name:
13884
+ type: string
13885
+ webhook_path:
13886
+ type: string
13887
+ webhook_url:
13888
+ type: string
13889
+ is_active:
13890
+ type: boolean
13891
+ created_at:
13892
+ type: string
13893
+ format: date-time
13894
+ updated_at:
13895
+ type: string
13896
+ format: date-time
13897
+
13898
+ ChannelListResponse:
13899
+ type: object
13900
+ properties:
13901
+ channels:
13902
+ type: array
13903
+ items:
13904
+ $ref: "#/components/schemas/ChannelResponse"
13905
+
13906
+ SendChannelMessageRequest:
13907
+ type: object
13908
+ required: [external_chat_id, content]
13909
+ properties:
13910
+ external_chat_id:
13911
+ type: string
13912
+ description: External platform chat/user ID
13913
+ content:
13914
+ type: string
13915
+ reply_to:
13916
+ type: string
13917
+ description: External message ID to reply to
13918
+
13919
+ ChannelMessageResponse:
13920
+ type: object
13921
+ properties:
13922
+ id:
13923
+ type: string
13924
+ format: uuid
13925
+ channel_id:
13926
+ type: string
13927
+ format: uuid
13928
+ direction:
13929
+ type: string
13930
+ enum: [inbound, outbound]
13931
+ external_chat_id:
13932
+ type: string
13933
+ external_message_id:
13934
+ type: string
13935
+ sender_name:
13936
+ type: string
13937
+ content:
13938
+ type: string
13939
+ media_url:
13940
+ type: string
13941
+ created_at:
13942
+ type: string
13943
+ format: date-time
13944
+
13945
+ ChannelMessageListResponse:
13946
+ type: object
13947
+ properties:
13948
+ messages:
13949
+ type: array
13950
+ items:
13951
+ $ref: "#/components/schemas/ChannelMessageResponse"