@1claw/openapi-spec 0.44.1 → 0.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -40,7 +40,14 @@ openapi-generator generate \
40
40
  import spec from "@1claw/openapi-spec/openapi.json";
41
41
  ```
42
42
 
43
- ## What's in the spec (v0.44.0 — API `info.version` 2.33.0)
43
+ ## What's in the spec (v0.44.4 — API `info.version` 2.33.0)
44
+
45
+ ### OAuth & Platform enhancements (0.44.4)
46
+ - **OAuth token revocation** — `POST /v1/oauth/revoke` (RFC 7009 token revocation)
47
+ - **Consent revocation** — `DELETE /v1/oauth/consents/{app_id}` (user revokes consent for a specific app)
48
+ - **Platform marketplace** — `GET /v1/platform/marketplace` (public listing of approved platform apps)
49
+ - **App statistics** — `GET /v1/platform/apps/{id}/stats` (usage and connection statistics for a platform app)
50
+ - **Webhook secret rotation** — `POST /v1/platform/apps/{id}/rotate-webhook-secret` (rotate a platform app's webhook signing secret)
44
51
 
45
52
  ### Automations v2 & Channels (2.33)
46
53
  - **Automations v2** — Workflow engine with multi-step pipelines, 14 step types, `{{...}}` template variables, conditional logic (`skip_if`/`run_if`), 10 marketing presets, webhook/event/cron/manual triggers. Enriched list API with `last_run_status`, `total_runs`, `success_rate`, `agent_name`. Run detail with `context` JSONB. Assist NL→workflow drafting.
package/openapi.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "openapi": "3.1.0",
3
3
  "info": {
4
4
  "title": "1Claw API",
5
- "version": "2.33.0",
5
+ "version": "2.34.0",
6
6
  "description": "Secure secret management for AI agents. Provides vaults, secrets,\npolicy-based access control, agent identity, Intents API,\nsharing, billing, and audit logging. Automations (workflow_spec,\nwebhook tokens, event triggers, Assist), cloud runtimes with\ninteractive shell sessions, agent memory, and discovery.\n\nAll endpoints require JWT Bearer authentication unless marked with\n`security: []`.\n",
7
7
  "contact": {
8
8
  "email": "ops@1claw.xyz"
@@ -7712,6 +7712,106 @@
7712
7712
  }
7713
7713
  }
7714
7714
  },
7715
+ "/v1/platform/apps/{appId}/stats": {
7716
+ "get": {
7717
+ "tags": [
7718
+ "Platform"
7719
+ ],
7720
+ "summary": "Get platform app statistics",
7721
+ "description": "Returns aggregate statistics about a platform app's connected users, bootstraps, and grants.",
7722
+ "operationId": "getPlatformAppStats",
7723
+ "security": [
7724
+ {
7725
+ "BearerAuth": []
7726
+ }
7727
+ ],
7728
+ "parameters": [
7729
+ {
7730
+ "name": "appId",
7731
+ "in": "path",
7732
+ "required": true,
7733
+ "schema": {
7734
+ "type": "string",
7735
+ "format": "uuid"
7736
+ }
7737
+ }
7738
+ ],
7739
+ "responses": {
7740
+ "200": {
7741
+ "description": "App statistics",
7742
+ "content": {
7743
+ "application/json": {
7744
+ "schema": {
7745
+ "$ref": "#/components/schemas/PlatformAppStatsResponse"
7746
+ }
7747
+ }
7748
+ }
7749
+ },
7750
+ "401": {
7751
+ "$ref": "#/components/responses/Unauthorized"
7752
+ },
7753
+ "404": {
7754
+ "$ref": "#/components/responses/NotFound"
7755
+ }
7756
+ }
7757
+ }
7758
+ },
7759
+ "/v1/platform/apps/{appId}/rotate-webhook-secret": {
7760
+ "post": {
7761
+ "tags": [
7762
+ "Platform"
7763
+ ],
7764
+ "summary": "Rotate webhook secret",
7765
+ "description": "Generate a new webhook signing secret for the platform app. The old secret is immediately invalidated. Returns the new secret (one-time).",
7766
+ "operationId": "rotatePlatformWebhookSecret",
7767
+ "security": [
7768
+ {
7769
+ "BearerAuth": []
7770
+ }
7771
+ ],
7772
+ "parameters": [
7773
+ {
7774
+ "name": "appId",
7775
+ "in": "path",
7776
+ "required": true,
7777
+ "schema": {
7778
+ "type": "string",
7779
+ "format": "uuid"
7780
+ }
7781
+ }
7782
+ ],
7783
+ "responses": {
7784
+ "200": {
7785
+ "description": "New webhook secret generated",
7786
+ "content": {
7787
+ "application/json": {
7788
+ "schema": {
7789
+ "type": "object",
7790
+ "required": [
7791
+ "webhook_secret"
7792
+ ],
7793
+ "properties": {
7794
+ "webhook_secret": {
7795
+ "type": "string",
7796
+ "description": "The new webhook signing secret (shown once)"
7797
+ }
7798
+ }
7799
+ }
7800
+ }
7801
+ }
7802
+ },
7803
+ "401": {
7804
+ "$ref": "#/components/responses/Unauthorized"
7805
+ },
7806
+ "403": {
7807
+ "description": "Only human users can rotate webhook secrets"
7808
+ },
7809
+ "404": {
7810
+ "$ref": "#/components/responses/NotFound"
7811
+ }
7812
+ }
7813
+ }
7814
+ },
7715
7815
  "/v1/platform/apps/{appId}/templates": {
7716
7816
  "post": {
7717
7817
  "tags": [
@@ -9911,6 +10011,117 @@
9911
10011
  }
9912
10012
  }
9913
10013
  },
10014
+ "/v1/oauth/revoke": {
10015
+ "post": {
10016
+ "tags": [
10017
+ "OAuth"
10018
+ ],
10019
+ "summary": "Revoke an OAuth token (RFC 7009)",
10020
+ "description": "Revokes an access token or refresh token. The authorization server\ninvalidates the token so it can no longer be used. Follows RFC 7009.\n",
10021
+ "operationId": "revokeOAuthToken",
10022
+ "security": [],
10023
+ "requestBody": {
10024
+ "required": true,
10025
+ "content": {
10026
+ "application/json": {
10027
+ "schema": {
10028
+ "type": "object",
10029
+ "required": [
10030
+ "token"
10031
+ ],
10032
+ "properties": {
10033
+ "token": {
10034
+ "type": "string",
10035
+ "description": "The token to revoke (access_token or refresh_token)"
10036
+ },
10037
+ "token_type_hint": {
10038
+ "type": "string",
10039
+ "enum": [
10040
+ "access_token",
10041
+ "refresh_token"
10042
+ ],
10043
+ "description": "Hint about the type of token being revoked"
10044
+ }
10045
+ }
10046
+ }
10047
+ }
10048
+ }
10049
+ },
10050
+ "responses": {
10051
+ "200": {
10052
+ "description": "Token revoked successfully (or was already invalid)",
10053
+ "content": {
10054
+ "application/json": {
10055
+ "schema": {
10056
+ "type": "object",
10057
+ "properties": {
10058
+ "revoked": {
10059
+ "type": "boolean",
10060
+ "example": true
10061
+ }
10062
+ }
10063
+ }
10064
+ }
10065
+ }
10066
+ }
10067
+ }
10068
+ }
10069
+ },
10070
+ "/v1/oauth/consents/{app_id}": {
10071
+ "delete": {
10072
+ "tags": [
10073
+ "OAuth"
10074
+ ],
10075
+ "summary": "Revoke consent for a platform app",
10076
+ "description": "Revokes the user's previously granted OAuth consent for a specific platform app.\nAll active tokens issued to the app are invalidated and the consent record is deleted.\n",
10077
+ "operationId": "revokeOAuthConsent",
10078
+ "security": [
10079
+ {
10080
+ "BearerAuth": []
10081
+ }
10082
+ ],
10083
+ "parameters": [
10084
+ {
10085
+ "name": "app_id",
10086
+ "in": "path",
10087
+ "required": true,
10088
+ "schema": {
10089
+ "type": "string",
10090
+ "format": "uuid"
10091
+ },
10092
+ "description": "The platform app ID whose consent to revoke"
10093
+ }
10094
+ ],
10095
+ "responses": {
10096
+ "200": {
10097
+ "description": "Consent revoked",
10098
+ "content": {
10099
+ "application/json": {
10100
+ "schema": {
10101
+ "type": "object",
10102
+ "properties": {
10103
+ "revoked": {
10104
+ "type": "boolean",
10105
+ "example": true
10106
+ },
10107
+ "app_id": {
10108
+ "type": "string",
10109
+ "format": "uuid"
10110
+ }
10111
+ }
10112
+ }
10113
+ }
10114
+ }
10115
+ },
10116
+ "401": {
10117
+ "$ref": "#/components/responses/Unauthorized"
10118
+ },
10119
+ "404": {
10120
+ "$ref": "#/components/responses/NotFound"
10121
+ }
10122
+ }
10123
+ }
10124
+ },
9914
10125
  "/v1/risk/events": {
9915
10126
  "get": {
9916
10127
  "tags": [
@@ -12084,6 +12295,66 @@
12084
12295
  }
12085
12296
  }
12086
12297
  },
12298
+ "/v1/agents/org-directory": {
12299
+ "get": {
12300
+ "tags": [
12301
+ "agents",
12302
+ "discovery"
12303
+ ],
12304
+ "summary": "List org agents",
12305
+ "description": "List agents within the caller's organization for sub-agent discovery.\nReturns agents with their capabilities, enabling agent-to-agent\ncoordination and discovery within an org. Requires authentication.\n",
12306
+ "operationId": "listOrgDirectory",
12307
+ "parameters": [
12308
+ {
12309
+ "name": "q",
12310
+ "in": "query",
12311
+ "schema": {
12312
+ "type": "string"
12313
+ },
12314
+ "description": "Search query to filter agents by name or description"
12315
+ },
12316
+ {
12317
+ "name": "tags",
12318
+ "in": "query",
12319
+ "schema": {
12320
+ "type": "string"
12321
+ },
12322
+ "description": "Comma-separated tag filter"
12323
+ },
12324
+ {
12325
+ "name": "page",
12326
+ "in": "query",
12327
+ "schema": {
12328
+ "type": "integer",
12329
+ "default": 1
12330
+ }
12331
+ },
12332
+ {
12333
+ "name": "page_size",
12334
+ "in": "query",
12335
+ "schema": {
12336
+ "type": "integer",
12337
+ "default": 20
12338
+ }
12339
+ }
12340
+ ],
12341
+ "responses": {
12342
+ "200": {
12343
+ "description": "Org agent directory listing",
12344
+ "content": {
12345
+ "application/json": {
12346
+ "schema": {
12347
+ "$ref": "#/components/schemas/OrgDirectoryResponse"
12348
+ }
12349
+ }
12350
+ }
12351
+ },
12352
+ "401": {
12353
+ "$ref": "#/components/responses/Unauthorized"
12354
+ }
12355
+ }
12356
+ }
12357
+ },
12087
12358
  "/v1/agents/{agent_id}/discovery": {
12088
12359
  "patch": {
12089
12360
  "tags": [
@@ -12132,10 +12403,11 @@
12132
12403
  "/v1/platform/marketplace": {
12133
12404
  "get": {
12134
12405
  "tags": [
12406
+ "Platform",
12135
12407
  "Discovery"
12136
12408
  ],
12137
12409
  "summary": "Public marketplace",
12138
- "description": "Browse the public platform marketplace of agents and apps.",
12410
+ "description": "Browse the public platform marketplace of listed apps and agents. Returns approved platform apps with category, tags, pricing summaries, and screenshots.",
12139
12411
  "operationId": "listMarketplace",
12140
12412
  "security": [],
12141
12413
  "parameters": [
@@ -12162,6 +12434,14 @@
12162
12434
  "type": "string"
12163
12435
  },
12164
12436
  "description": "Search query"
12437
+ },
12438
+ {
12439
+ "name": "category",
12440
+ "in": "query",
12441
+ "schema": {
12442
+ "type": "string"
12443
+ },
12444
+ "description": "Filter by app category"
12165
12445
  }
12166
12446
  ],
12167
12447
  "responses": {
@@ -12170,7 +12450,7 @@
12170
12450
  "content": {
12171
12451
  "application/json": {
12172
12452
  "schema": {
12173
- "$ref": "#/components/schemas/DirectoryResponse"
12453
+ "$ref": "#/components/schemas/MarketplaceResponse"
12174
12454
  }
12175
12455
  }
12176
12456
  }
@@ -12184,7 +12464,7 @@
12184
12464
  "Agent Chat"
12185
12465
  ],
12186
12466
  "summary": "Send chat message",
12187
- "description": "Send a message to an agent and receive a response via Shroud LLM.\nSupports SSE streaming when Accept: text/event-stream is set.\n",
12467
+ "description": "Send a message to an agent and receive a response via Shroud LLM.\nSupports SSE streaming when Accept: text/event-stream is set.\n\nAgents can call this endpoint on other agents within the same\norganization for inter-agent communication (agent-to-agent chat).\nThe caller must be authenticated and belong to the same org as\nthe target agent.\n",
12188
12468
  "operationId": "sendChatMessage",
12189
12469
  "parameters": [
12190
12470
  {
@@ -19596,6 +19876,14 @@
19596
19876
  "format": "uuid",
19597
19877
  "nullable": true
19598
19878
  },
19879
+ "agent_ids": {
19880
+ "type": "array",
19881
+ "items": {
19882
+ "type": "string",
19883
+ "format": "uuid"
19884
+ },
19885
+ "description": "All agent IDs provisioned by the template (when multiple agents are defined)"
19886
+ },
19599
19887
  "policy_ids": {
19600
19888
  "type": "array",
19601
19889
  "items": {
@@ -19661,6 +19949,88 @@
19661
19949
  }
19662
19950
  }
19663
19951
  },
19952
+ "PlatformAppStatsResponse": {
19953
+ "type": "object",
19954
+ "required": [
19955
+ "total_connections",
19956
+ "active_connections",
19957
+ "claimed_connections",
19958
+ "total_bootstraps",
19959
+ "total_grants"
19960
+ ],
19961
+ "properties": {
19962
+ "total_connections": {
19963
+ "type": "integer",
19964
+ "description": "Total number of user connections (all statuses)"
19965
+ },
19966
+ "active_connections": {
19967
+ "type": "integer",
19968
+ "description": "Number of active connections"
19969
+ },
19970
+ "claimed_connections": {
19971
+ "type": "integer",
19972
+ "description": "Number of claimed connections"
19973
+ },
19974
+ "total_bootstraps": {
19975
+ "type": "integer",
19976
+ "description": "Total bootstrap operations performed"
19977
+ },
19978
+ "total_grants": {
19979
+ "type": "integer",
19980
+ "description": "Total resource grants issued"
19981
+ }
19982
+ }
19983
+ },
19984
+ "MarketplaceResponse": {
19985
+ "type": "object",
19986
+ "properties": {
19987
+ "apps": {
19988
+ "type": "array",
19989
+ "items": {
19990
+ "type": "object",
19991
+ "properties": {
19992
+ "id": {
19993
+ "type": "string",
19994
+ "format": "uuid"
19995
+ },
19996
+ "name": {
19997
+ "type": "string"
19998
+ },
19999
+ "slug": {
20000
+ "type": "string"
20001
+ },
20002
+ "description": {
20003
+ "type": "string"
20004
+ },
20005
+ "logo_url": {
20006
+ "type": "string",
20007
+ "nullable": true
20008
+ },
20009
+ "category": {
20010
+ "type": "string",
20011
+ "nullable": true
20012
+ },
20013
+ "listing_tags": {
20014
+ "type": "array",
20015
+ "items": {
20016
+ "type": "string"
20017
+ }
20018
+ },
20019
+ "listing_screenshots": {
20020
+ "type": "array",
20021
+ "items": {
20022
+ "type": "string"
20023
+ }
20024
+ },
20025
+ "pricing_summary": {
20026
+ "type": "string",
20027
+ "nullable": true
20028
+ }
20029
+ }
20030
+ }
20031
+ }
20032
+ }
20033
+ },
19664
20034
  "ConnectedAppResponse": {
19665
20035
  "type": "object",
19666
20036
  "properties": {
@@ -20284,6 +20654,11 @@
20284
20654
  "type": "integer",
20285
20655
  "description": "Token lifetime in seconds"
20286
20656
  },
20657
+ "refresh_token": {
20658
+ "type": "string",
20659
+ "nullable": true,
20660
+ "description": "Refresh token for obtaining new access tokens (when offline_access scope was granted)"
20661
+ },
20287
20662
  "id_token": {
20288
20663
  "type": "string",
20289
20664
  "nullable": true,
@@ -22051,6 +22426,82 @@
22051
22426
  }
22052
22427
  }
22053
22428
  },
22429
+ "OrgDirectoryAgent": {
22430
+ "type": "object",
22431
+ "required": [
22432
+ "id",
22433
+ "name",
22434
+ "intents_api_enabled",
22435
+ "execution_intents_enabled",
22436
+ "memory_enabled",
22437
+ "shroud_enabled"
22438
+ ],
22439
+ "properties": {
22440
+ "id": {
22441
+ "type": "string",
22442
+ "format": "uuid"
22443
+ },
22444
+ "name": {
22445
+ "type": "string"
22446
+ },
22447
+ "public_description": {
22448
+ "type": "string",
22449
+ "nullable": true
22450
+ },
22451
+ "public_tags": {
22452
+ "type": "array",
22453
+ "items": {
22454
+ "type": "string"
22455
+ }
22456
+ },
22457
+ "a2a_url": {
22458
+ "type": "string",
22459
+ "nullable": true
22460
+ },
22461
+ "mcp_url": {
22462
+ "type": "string",
22463
+ "nullable": true
22464
+ },
22465
+ "intents_api_enabled": {
22466
+ "type": "boolean"
22467
+ },
22468
+ "execution_intents_enabled": {
22469
+ "type": "boolean"
22470
+ },
22471
+ "memory_enabled": {
22472
+ "type": "boolean"
22473
+ },
22474
+ "shroud_enabled": {
22475
+ "type": "boolean"
22476
+ }
22477
+ }
22478
+ },
22479
+ "OrgDirectoryResponse": {
22480
+ "type": "object",
22481
+ "required": [
22482
+ "agents",
22483
+ "total",
22484
+ "page",
22485
+ "page_size"
22486
+ ],
22487
+ "properties": {
22488
+ "agents": {
22489
+ "type": "array",
22490
+ "items": {
22491
+ "$ref": "#/components/schemas/OrgDirectoryAgent"
22492
+ }
22493
+ },
22494
+ "total": {
22495
+ "type": "integer"
22496
+ },
22497
+ "page": {
22498
+ "type": "integer"
22499
+ },
22500
+ "page_size": {
22501
+ "type": "integer"
22502
+ }
22503
+ }
22504
+ },
22054
22505
  "UpdateDiscoveryRequest": {
22055
22506
  "type": "object",
22056
22507
  "properties": {
@@ -22223,6 +22674,25 @@
22223
22674
  "type": "string"
22224
22675
  },
22225
22676
  "description": "Platform-specific config.\nTelegram: { bot_token }.\nWhatsApp: { phone_number_id, access_token, verify_token }.\nDiscord: { bot_token, application_id }.\n"
22677
+ },
22678
+ "slash_commands_enabled": {
22679
+ "type": "boolean",
22680
+ "description": "Enable slash commands on this channel"
22681
+ },
22682
+ "voice_transcription_enabled": {
22683
+ "type": "boolean",
22684
+ "description": "Enable voice message transcription"
22685
+ },
22686
+ "sender_allowlist": {
22687
+ "type": "array",
22688
+ "items": {
22689
+ "type": "string"
22690
+ },
22691
+ "description": "List of allowed sender IDs"
22692
+ },
22693
+ "auto_respond_enabled": {
22694
+ "type": "boolean",
22695
+ "description": "Enable auto-respond"
22226
22696
  }
22227
22697
  }
22228
22698
  },
@@ -22240,6 +22710,21 @@
22240
22710
  "additionalProperties": {
22241
22711
  "type": "string"
22242
22712
  }
22713
+ },
22714
+ "slash_commands_enabled": {
22715
+ "type": "boolean"
22716
+ },
22717
+ "voice_transcription_enabled": {
22718
+ "type": "boolean"
22719
+ },
22720
+ "sender_allowlist": {
22721
+ "type": "array",
22722
+ "items": {
22723
+ "type": "string"
22724
+ }
22725
+ },
22726
+ "auto_respond_enabled": {
22727
+ "type": "boolean"
22243
22728
  }
22244
22729
  }
22245
22730
  },
@@ -22284,6 +22769,36 @@
22284
22769
  "nullable": true,
22285
22770
  "description": "Channel-specific configuration JSON. May include:\n- sender_allowlist (array of strings): restrict which external senders can trigger the agent\n- auto_respond_enabled (boolean): whether the agent auto-responds to inbound messages\n"
22286
22771
  },
22772
+ "slash_commands_enabled": {
22773
+ "type": "boolean",
22774
+ "description": "Whether slash commands are enabled for this channel"
22775
+ },
22776
+ "voice_transcription_enabled": {
22777
+ "type": "boolean",
22778
+ "description": "Whether voice message transcription is enabled"
22779
+ },
22780
+ "unified_conversation_id": {
22781
+ "type": "string",
22782
+ "format": "uuid",
22783
+ "nullable": true,
22784
+ "description": "ID linking this channel to a unified cross-platform conversation"
22785
+ },
22786
+ "is_home_platform": {
22787
+ "type": "boolean",
22788
+ "description": "Whether this is the agent's home platform channel"
22789
+ },
22790
+ "sender_allowlist": {
22791
+ "type": "array",
22792
+ "items": {
22793
+ "type": "string"
22794
+ },
22795
+ "nullable": true,
22796
+ "description": "List of allowed sender IDs for auto-respond"
22797
+ },
22798
+ "auto_respond_enabled": {
22799
+ "type": "boolean",
22800
+ "description": "Whether auto-respond is enabled for this channel"
22801
+ },
22287
22802
  "created_at": {
22288
22803
  "type": "string",
22289
22804
  "format": "date-time"
@@ -22358,6 +22873,30 @@
22358
22873
  "media_url": {
22359
22874
  "type": "string"
22360
22875
  },
22876
+ "is_voice_message": {
22877
+ "type": "boolean",
22878
+ "description": "Whether this message was a voice message"
22879
+ },
22880
+ "voice_file_id": {
22881
+ "type": "string",
22882
+ "nullable": true,
22883
+ "description": "Telegram voice file ID"
22884
+ },
22885
+ "voice_duration_secs": {
22886
+ "type": "integer",
22887
+ "nullable": true,
22888
+ "description": "Duration of voice message in seconds"
22889
+ },
22890
+ "transcription_status": {
22891
+ "type": "string",
22892
+ "nullable": true,
22893
+ "enum": [
22894
+ "pending",
22895
+ "completed",
22896
+ "failed"
22897
+ ],
22898
+ "description": "Status of voice transcription"
22899
+ },
22361
22900
  "created_at": {
22362
22901
  "type": "string",
22363
22902
  "format": "date-time"
package/openapi.yaml CHANGED
@@ -2,7 +2,7 @@ openapi: 3.1.0
2
2
 
3
3
  info:
4
4
  title: 1Claw API
5
- version: 2.33.0
5
+ version: 2.34.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,
@@ -4981,6 +4981,67 @@ paths:
4981
4981
  "403":
4982
4982
  description: Only human users can rotate platform keys
4983
4983
 
4984
+ /v1/platform/apps/{appId}/stats:
4985
+ get:
4986
+ tags: [Platform]
4987
+ summary: Get platform app statistics
4988
+ description: Returns aggregate statistics about a platform app's connected users, bootstraps, and grants.
4989
+ operationId: getPlatformAppStats
4990
+ security:
4991
+ - BearerAuth: []
4992
+ parameters:
4993
+ - name: appId
4994
+ in: path
4995
+ required: true
4996
+ schema:
4997
+ type: string
4998
+ format: uuid
4999
+ responses:
5000
+ "200":
5001
+ description: App statistics
5002
+ content:
5003
+ application/json:
5004
+ schema:
5005
+ $ref: "#/components/schemas/PlatformAppStatsResponse"
5006
+ "401":
5007
+ $ref: "#/components/responses/Unauthorized"
5008
+ "404":
5009
+ $ref: "#/components/responses/NotFound"
5010
+
5011
+ /v1/platform/apps/{appId}/rotate-webhook-secret:
5012
+ post:
5013
+ tags: [Platform]
5014
+ summary: Rotate webhook secret
5015
+ description: Generate a new webhook signing secret for the platform app. The old secret is immediately invalidated. Returns the new secret (one-time).
5016
+ operationId: rotatePlatformWebhookSecret
5017
+ security:
5018
+ - BearerAuth: []
5019
+ parameters:
5020
+ - name: appId
5021
+ in: path
5022
+ required: true
5023
+ schema:
5024
+ type: string
5025
+ format: uuid
5026
+ responses:
5027
+ "200":
5028
+ description: New webhook secret generated
5029
+ content:
5030
+ application/json:
5031
+ schema:
5032
+ type: object
5033
+ required: [webhook_secret]
5034
+ properties:
5035
+ webhook_secret:
5036
+ type: string
5037
+ description: The new webhook signing secret (shown once)
5038
+ "401":
5039
+ $ref: "#/components/responses/Unauthorized"
5040
+ "403":
5041
+ description: Only human users can rotate webhook secrets
5042
+ "404":
5043
+ $ref: "#/components/responses/NotFound"
5044
+
4984
5045
  /v1/platform/apps/{appId}/templates:
4985
5046
  post:
4986
5047
  tags: [Platform]
@@ -6310,6 +6371,79 @@ paths:
6310
6371
  "401":
6311
6372
  $ref: "#/components/responses/Unauthorized"
6312
6373
 
6374
+ /v1/oauth/revoke:
6375
+ post:
6376
+ tags: [OAuth]
6377
+ summary: Revoke an OAuth token (RFC 7009)
6378
+ description: |
6379
+ Revokes an access token or refresh token. The authorization server
6380
+ invalidates the token so it can no longer be used. Follows RFC 7009.
6381
+ operationId: revokeOAuthToken
6382
+ security: []
6383
+ requestBody:
6384
+ required: true
6385
+ content:
6386
+ application/json:
6387
+ schema:
6388
+ type: object
6389
+ required: [token]
6390
+ properties:
6391
+ token:
6392
+ type: string
6393
+ description: The token to revoke (access_token or refresh_token)
6394
+ token_type_hint:
6395
+ type: string
6396
+ enum: [access_token, refresh_token]
6397
+ description: Hint about the type of token being revoked
6398
+ responses:
6399
+ "200":
6400
+ description: Token revoked successfully (or was already invalid)
6401
+ content:
6402
+ application/json:
6403
+ schema:
6404
+ type: object
6405
+ properties:
6406
+ revoked:
6407
+ type: boolean
6408
+ example: true
6409
+
6410
+ /v1/oauth/consents/{app_id}:
6411
+ delete:
6412
+ tags: [OAuth]
6413
+ summary: Revoke consent for a platform app
6414
+ description: |
6415
+ Revokes the user's previously granted OAuth consent for a specific platform app.
6416
+ All active tokens issued to the app are invalidated and the consent record is deleted.
6417
+ operationId: revokeOAuthConsent
6418
+ security:
6419
+ - BearerAuth: []
6420
+ parameters:
6421
+ - name: app_id
6422
+ in: path
6423
+ required: true
6424
+ schema:
6425
+ type: string
6426
+ format: uuid
6427
+ description: The platform app ID whose consent to revoke
6428
+ responses:
6429
+ "200":
6430
+ description: Consent revoked
6431
+ content:
6432
+ application/json:
6433
+ schema:
6434
+ type: object
6435
+ properties:
6436
+ revoked:
6437
+ type: boolean
6438
+ example: true
6439
+ app_id:
6440
+ type: string
6441
+ format: uuid
6442
+ "401":
6443
+ $ref: "#/components/responses/Unauthorized"
6444
+ "404":
6445
+ $ref: "#/components/responses/NotFound"
6446
+
6313
6447
  # ---------------------------------------------------------------------------
6314
6448
  # Risk Engine
6315
6449
  # ---------------------------------------------------------------------------
@@ -7703,6 +7837,46 @@ paths:
7703
7837
  schema:
7704
7838
  $ref: "#/components/schemas/DirectoryResponse"
7705
7839
 
7840
+ /v1/agents/org-directory:
7841
+ get:
7842
+ tags: [agents, discovery]
7843
+ summary: List org agents
7844
+ description: |
7845
+ List agents within the caller's organization for sub-agent discovery.
7846
+ Returns agents with their capabilities, enabling agent-to-agent
7847
+ coordination and discovery within an org. Requires authentication.
7848
+ operationId: listOrgDirectory
7849
+ parameters:
7850
+ - name: q
7851
+ in: query
7852
+ schema:
7853
+ type: string
7854
+ description: Search query to filter agents by name or description
7855
+ - name: tags
7856
+ in: query
7857
+ schema:
7858
+ type: string
7859
+ description: Comma-separated tag filter
7860
+ - name: page
7861
+ in: query
7862
+ schema:
7863
+ type: integer
7864
+ default: 1
7865
+ - name: page_size
7866
+ in: query
7867
+ schema:
7868
+ type: integer
7869
+ default: 20
7870
+ responses:
7871
+ "200":
7872
+ description: Org agent directory listing
7873
+ content:
7874
+ application/json:
7875
+ schema:
7876
+ $ref: "#/components/schemas/OrgDirectoryResponse"
7877
+ "401":
7878
+ $ref: "#/components/responses/Unauthorized"
7879
+
7706
7880
  /v1/agents/{agent_id}/discovery:
7707
7881
  patch:
7708
7882
  tags: [Discovery]
@@ -7732,9 +7906,9 @@ paths:
7732
7906
 
7733
7907
  /v1/platform/marketplace:
7734
7908
  get:
7735
- tags: [Discovery]
7909
+ tags: [Platform, Discovery]
7736
7910
  summary: Public marketplace
7737
- description: Browse the public platform marketplace of agents and apps.
7911
+ description: Browse the public platform marketplace of listed apps and agents. Returns approved platform apps with category, tags, pricing summaries, and screenshots.
7738
7912
  operationId: listMarketplace
7739
7913
  security: []
7740
7914
  parameters:
@@ -7753,13 +7927,18 @@ paths:
7753
7927
  schema:
7754
7928
  type: string
7755
7929
  description: Search query
7930
+ - name: category
7931
+ in: query
7932
+ schema:
7933
+ type: string
7934
+ description: Filter by app category
7756
7935
  responses:
7757
7936
  "200":
7758
7937
  description: Marketplace listing
7759
7938
  content:
7760
7939
  application/json:
7761
7940
  schema:
7762
- $ref: "#/components/schemas/DirectoryResponse"
7941
+ $ref: "#/components/schemas/MarketplaceResponse"
7763
7942
 
7764
7943
  # ---------------------------------------------------------------------------
7765
7944
  # Agent Chat
@@ -7772,6 +7951,11 @@ paths:
7772
7951
  description: |
7773
7952
  Send a message to an agent and receive a response via Shroud LLM.
7774
7953
  Supports SSE streaming when Accept: text/event-stream is set.
7954
+
7955
+ Agents can call this endpoint on other agents within the same
7956
+ organization for inter-agent communication (agent-to-agent chat).
7957
+ The caller must be authenticated and belong to the same org as
7958
+ the target agent.
7775
7959
  operationId: sendChatMessage
7776
7960
  parameters:
7777
7961
  - $ref: "#/components/parameters/AgentId"
@@ -12910,6 +13094,12 @@ components:
12910
13094
  type: string
12911
13095
  format: uuid
12912
13096
  nullable: true
13097
+ agent_ids:
13098
+ type: array
13099
+ items:
13100
+ type: string
13101
+ format: uuid
13102
+ description: All agent IDs provisioned by the template (when multiple agents are defined)
12913
13103
  policy_ids:
12914
13104
  type: array
12915
13105
  items:
@@ -12955,6 +13145,61 @@ components:
12955
13145
  format: uuid
12956
13146
  description: IDs of automations provisioned by the template
12957
13147
 
13148
+ PlatformAppStatsResponse:
13149
+ type: object
13150
+ required: [total_connections, active_connections, claimed_connections, total_bootstraps, total_grants]
13151
+ properties:
13152
+ total_connections:
13153
+ type: integer
13154
+ description: Total number of user connections (all statuses)
13155
+ active_connections:
13156
+ type: integer
13157
+ description: Number of active connections
13158
+ claimed_connections:
13159
+ type: integer
13160
+ description: Number of claimed connections
13161
+ total_bootstraps:
13162
+ type: integer
13163
+ description: Total bootstrap operations performed
13164
+ total_grants:
13165
+ type: integer
13166
+ description: Total resource grants issued
13167
+
13168
+ MarketplaceResponse:
13169
+ type: object
13170
+ properties:
13171
+ apps:
13172
+ type: array
13173
+ items:
13174
+ type: object
13175
+ properties:
13176
+ id:
13177
+ type: string
13178
+ format: uuid
13179
+ name:
13180
+ type: string
13181
+ slug:
13182
+ type: string
13183
+ description:
13184
+ type: string
13185
+ logo_url:
13186
+ type: string
13187
+ nullable: true
13188
+ category:
13189
+ type: string
13190
+ nullable: true
13191
+ listing_tags:
13192
+ type: array
13193
+ items:
13194
+ type: string
13195
+ listing_screenshots:
13196
+ type: array
13197
+ items:
13198
+ type: string
13199
+ pricing_summary:
13200
+ type: string
13201
+ nullable: true
13202
+
12958
13203
  ConnectedAppResponse:
12959
13204
  type: object
12960
13205
  properties:
@@ -13367,6 +13612,10 @@ components:
13367
13612
  expires_in:
13368
13613
  type: integer
13369
13614
  description: Token lifetime in seconds
13615
+ refresh_token:
13616
+ type: string
13617
+ nullable: true
13618
+ description: Refresh token for obtaining new access tokens (when offline_access scope was granted)
13370
13619
  id_token:
13371
13620
  type: string
13372
13621
  nullable: true
@@ -14507,6 +14756,52 @@ components:
14507
14756
  per_page:
14508
14757
  type: integer
14509
14758
 
14759
+ OrgDirectoryAgent:
14760
+ type: object
14761
+ required: [id, name, intents_api_enabled, execution_intents_enabled, memory_enabled, shroud_enabled]
14762
+ properties:
14763
+ id:
14764
+ type: string
14765
+ format: uuid
14766
+ name:
14767
+ type: string
14768
+ public_description:
14769
+ type: string
14770
+ nullable: true
14771
+ public_tags:
14772
+ type: array
14773
+ items:
14774
+ type: string
14775
+ a2a_url:
14776
+ type: string
14777
+ nullable: true
14778
+ mcp_url:
14779
+ type: string
14780
+ nullable: true
14781
+ intents_api_enabled:
14782
+ type: boolean
14783
+ execution_intents_enabled:
14784
+ type: boolean
14785
+ memory_enabled:
14786
+ type: boolean
14787
+ shroud_enabled:
14788
+ type: boolean
14789
+
14790
+ OrgDirectoryResponse:
14791
+ type: object
14792
+ required: [agents, total, page, page_size]
14793
+ properties:
14794
+ agents:
14795
+ type: array
14796
+ items:
14797
+ $ref: "#/components/schemas/OrgDirectoryAgent"
14798
+ total:
14799
+ type: integer
14800
+ page:
14801
+ type: integer
14802
+ page_size:
14803
+ type: integer
14804
+
14510
14805
  UpdateDiscoveryRequest:
14511
14806
  type: object
14512
14807
  properties:
@@ -14635,6 +14930,20 @@ components:
14635
14930
  Telegram: { bot_token }.
14636
14931
  WhatsApp: { phone_number_id, access_token, verify_token }.
14637
14932
  Discord: { bot_token, application_id }.
14933
+ slash_commands_enabled:
14934
+ type: boolean
14935
+ description: Enable slash commands on this channel
14936
+ voice_transcription_enabled:
14937
+ type: boolean
14938
+ description: Enable voice message transcription
14939
+ sender_allowlist:
14940
+ type: array
14941
+ items:
14942
+ type: string
14943
+ description: List of allowed sender IDs
14944
+ auto_respond_enabled:
14945
+ type: boolean
14946
+ description: Enable auto-respond
14638
14947
 
14639
14948
  UpdateChannelRequest:
14640
14949
  type: object
@@ -14647,6 +14956,16 @@ components:
14647
14956
  type: object
14648
14957
  additionalProperties:
14649
14958
  type: string
14959
+ slash_commands_enabled:
14960
+ type: boolean
14961
+ voice_transcription_enabled:
14962
+ type: boolean
14963
+ sender_allowlist:
14964
+ type: array
14965
+ items:
14966
+ type: string
14967
+ auto_respond_enabled:
14968
+ type: boolean
14650
14969
 
14651
14970
  ChannelResponse:
14652
14971
  type: object
@@ -14679,6 +14998,29 @@ components:
14679
14998
  Channel-specific configuration JSON. May include:
14680
14999
  - sender_allowlist (array of strings): restrict which external senders can trigger the agent
14681
15000
  - auto_respond_enabled (boolean): whether the agent auto-responds to inbound messages
15001
+ slash_commands_enabled:
15002
+ type: boolean
15003
+ description: Whether slash commands are enabled for this channel
15004
+ voice_transcription_enabled:
15005
+ type: boolean
15006
+ description: Whether voice message transcription is enabled
15007
+ unified_conversation_id:
15008
+ type: string
15009
+ format: uuid
15010
+ nullable: true
15011
+ description: ID linking this channel to a unified cross-platform conversation
15012
+ is_home_platform:
15013
+ type: boolean
15014
+ description: Whether this is the agent's home platform channel
15015
+ sender_allowlist:
15016
+ type: array
15017
+ items:
15018
+ type: string
15019
+ nullable: true
15020
+ description: List of allowed sender IDs for auto-respond
15021
+ auto_respond_enabled:
15022
+ type: boolean
15023
+ description: Whether auto-respond is enabled for this channel
14682
15024
  created_at:
14683
15025
  type: string
14684
15026
  format: date-time
@@ -14729,6 +15071,22 @@ components:
14729
15071
  type: string
14730
15072
  media_url:
14731
15073
  type: string
15074
+ is_voice_message:
15075
+ type: boolean
15076
+ description: Whether this message was a voice message
15077
+ voice_file_id:
15078
+ type: string
15079
+ nullable: true
15080
+ description: Telegram voice file ID
15081
+ voice_duration_secs:
15082
+ type: integer
15083
+ nullable: true
15084
+ description: Duration of voice message in seconds
15085
+ transcription_status:
15086
+ type: string
15087
+ nullable: true
15088
+ enum: [pending, completed, failed]
15089
+ description: Status of voice transcription
14732
15090
  created_at:
14733
15091
  type: string
14734
15092
  format: date-time
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1claw/openapi-spec",
3
- "version": "0.44.1",
3
+ "version": "0.45.0",
4
4
  "description": "OpenAPI 3.1.0 specification for the 1Claw Vault API \u2014 generate clients in any language",
5
5
  "license": "MIT",
6
6
  "repository": {