@1claw/openapi-spec 0.61.42 → 0.61.44
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 +205 -1
- package/openapi.yaml +154 -1
- package/package.json +2 -2
package/openapi.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"openapi": "3.1.0",
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "1Claw API",
|
|
5
|
-
"version": "0.61.
|
|
5
|
+
"version": "0.61.44",
|
|
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\n## Domains\n\n`api.1claw.co` is canonical: it is the OIDC issuer, the `aud` the API\nmints, and the first entry in `servers` — a generated client takes its\nbase URL from there, and the previous ordering pointed every SDK at the\ndomain the issuer had already left. `api.1claw.xyz` still answers and is\nstill accepted on token validation, because tokens minted before the\nmove carry it; it is never minted now.\n\nOne deliberate exception: the Shroud attestation identity token is\nrequested from GCP with `audience: https://api.1claw.xyz`, so\n`/v1/shroud/attestation` reports that as its `expected_audience`. That\nis accurate rather than stale — the audience is a verification contract\nwith anyone already checking the token, and moving it is a breaking\nchange for them, not a rename.\n\nAll endpoints require JWT Bearer authentication unless marked with\n`security: []`.\n",
|
|
7
7
|
"contact": {
|
|
8
8
|
"email": "ops@1claw.co"
|
|
@@ -28151,6 +28151,121 @@
|
|
|
28151
28151
|
}
|
|
28152
28152
|
}
|
|
28153
28153
|
},
|
|
28154
|
+
"/v1/billing/promo/preview": {
|
|
28155
|
+
"get": {
|
|
28156
|
+
"tags": [
|
|
28157
|
+
"Billing"
|
|
28158
|
+
],
|
|
28159
|
+
"summary": "What a promotion code does to a plan",
|
|
28160
|
+
"description": "Public, and deliberately so: a promo advertised on social media is read by people who have no account yet, and the price they were promised has to be on the pricing page before they make one. It resolves a Stripe promotion code and one configured plan price; no tenant data is reachable through it.\n\nDistinct from `/v1/billing/promo/validate`, which answers for the `promo_codes` grants an authenticated org can redeem in place. This one describes a checkout discount, which needs a card and therefore has to go through `POST /v1/billing/subscribe` with `promo_code`.\n",
|
|
28161
|
+
"operationId": "preview_promo",
|
|
28162
|
+
"security": [],
|
|
28163
|
+
"parameters": [
|
|
28164
|
+
{
|
|
28165
|
+
"name": "code",
|
|
28166
|
+
"in": "query",
|
|
28167
|
+
"required": true,
|
|
28168
|
+
"schema": {
|
|
28169
|
+
"type": "string",
|
|
28170
|
+
"maxLength": 64
|
|
28171
|
+
},
|
|
28172
|
+
"description": "The promotion code, as advertised."
|
|
28173
|
+
},
|
|
28174
|
+
{
|
|
28175
|
+
"name": "tier",
|
|
28176
|
+
"in": "query",
|
|
28177
|
+
"required": false,
|
|
28178
|
+
"schema": {
|
|
28179
|
+
"type": "string",
|
|
28180
|
+
"enum": [
|
|
28181
|
+
"pro",
|
|
28182
|
+
"team",
|
|
28183
|
+
"business"
|
|
28184
|
+
],
|
|
28185
|
+
"default": "pro"
|
|
28186
|
+
}
|
|
28187
|
+
},
|
|
28188
|
+
{
|
|
28189
|
+
"name": "interval",
|
|
28190
|
+
"in": "query",
|
|
28191
|
+
"required": false,
|
|
28192
|
+
"schema": {
|
|
28193
|
+
"type": "string",
|
|
28194
|
+
"enum": [
|
|
28195
|
+
"monthly",
|
|
28196
|
+
"annual"
|
|
28197
|
+
],
|
|
28198
|
+
"default": "monthly"
|
|
28199
|
+
}
|
|
28200
|
+
}
|
|
28201
|
+
],
|
|
28202
|
+
"responses": {
|
|
28203
|
+
"200": {
|
|
28204
|
+
"description": "The offer, or why the code cannot be used. A code that does not apply answers 200 with `valid: false` and a message, not an error status — \"this code is not for annual billing\" is an answer, not a failure.\n",
|
|
28205
|
+
"content": {
|
|
28206
|
+
"application/json": {
|
|
28207
|
+
"schema": {
|
|
28208
|
+
"type": "object",
|
|
28209
|
+
"required": [
|
|
28210
|
+
"valid",
|
|
28211
|
+
"tier",
|
|
28212
|
+
"interval"
|
|
28213
|
+
],
|
|
28214
|
+
"properties": {
|
|
28215
|
+
"valid": {
|
|
28216
|
+
"type": "boolean"
|
|
28217
|
+
},
|
|
28218
|
+
"code": {
|
|
28219
|
+
"type": "string",
|
|
28220
|
+
"nullable": true,
|
|
28221
|
+
"description": "The code as Stripe stores it, not the caller's casing."
|
|
28222
|
+
},
|
|
28223
|
+
"headline": {
|
|
28224
|
+
"type": "string",
|
|
28225
|
+
"nullable": true,
|
|
28226
|
+
"description": "The offer in one sentence, derived from the coupon — e.g. \"$5/mo for your first 6 months, then $29/mo\". Rendered rather than composed by the client, so a page cannot advertise terms different from the ones charged.\n"
|
|
28227
|
+
},
|
|
28228
|
+
"tier": {
|
|
28229
|
+
"type": "string"
|
|
28230
|
+
},
|
|
28231
|
+
"interval": {
|
|
28232
|
+
"type": "string"
|
|
28233
|
+
},
|
|
28234
|
+
"list_cents": {
|
|
28235
|
+
"type": "integer",
|
|
28236
|
+
"nullable": true
|
|
28237
|
+
},
|
|
28238
|
+
"first_cents": {
|
|
28239
|
+
"type": "integer",
|
|
28240
|
+
"nullable": true,
|
|
28241
|
+
"description": "What the first invoice comes to, after the discount."
|
|
28242
|
+
},
|
|
28243
|
+
"duration_months": {
|
|
28244
|
+
"type": "integer",
|
|
28245
|
+
"nullable": true,
|
|
28246
|
+
"description": "How many invoices the discount covers."
|
|
28247
|
+
},
|
|
28248
|
+
"expires_at": {
|
|
28249
|
+
"type": "string",
|
|
28250
|
+
"format": "date-time",
|
|
28251
|
+
"nullable": true,
|
|
28252
|
+
"description": "Last moment the code can be redeemed. Someone who subscribes before this keeps the discount for its full length.\n"
|
|
28253
|
+
},
|
|
28254
|
+
"message": {
|
|
28255
|
+
"type": "string",
|
|
28256
|
+
"nullable": true
|
|
28257
|
+
}
|
|
28258
|
+
}
|
|
28259
|
+
}
|
|
28260
|
+
}
|
|
28261
|
+
}
|
|
28262
|
+
},
|
|
28263
|
+
"400": {
|
|
28264
|
+
"description": "Unknown tier or interval"
|
|
28265
|
+
}
|
|
28266
|
+
}
|
|
28267
|
+
}
|
|
28268
|
+
},
|
|
28154
28269
|
"/v1/billing/promo/validate": {
|
|
28155
28270
|
"get": {
|
|
28156
28271
|
"tags": [
|
|
@@ -29544,6 +29659,62 @@
|
|
|
29544
29659
|
}
|
|
29545
29660
|
}
|
|
29546
29661
|
},
|
|
29662
|
+
"/v1/runtimes/{runtime_id}/agent-token/renew": {
|
|
29663
|
+
"parameters": [
|
|
29664
|
+
{
|
|
29665
|
+
"name": "runtime_id",
|
|
29666
|
+
"in": "path",
|
|
29667
|
+
"required": true,
|
|
29668
|
+
"schema": {
|
|
29669
|
+
"type": "string"
|
|
29670
|
+
}
|
|
29671
|
+
}
|
|
29672
|
+
],
|
|
29673
|
+
"post": {
|
|
29674
|
+
"tags": [
|
|
29675
|
+
"Runtimes"
|
|
29676
|
+
],
|
|
29677
|
+
"summary": "Renew this runtime's own agent JWT before it expires",
|
|
29678
|
+
"description": "Called by the runtime container itself, not by a human or an external client.\nA runtime's `ONECLAW_AGENT_TOKEN` is a short-lived JWT that Cloud Run resolves from Secret Manager when the instance starts and never again, so a container that outlives the TTL loses its credential — and with it every 1claw tool — until it is restarted. This lets it replace the token in place instead.\nAuthenticated by the credential being renewed: the caller must present a still-valid runtime-bound agent JWT together with a matching `X-1Claw-Runtime-Id` header, and must be the agent that runtime is bound to. It grants nothing new — the same claims with a later expiry — and stops working the moment the token lapses, the token is revoked, the agent is suspended, or the runtime is no longer deployed. Exempt from the monthly request quota: upkeep of an already-paid-for runtime is not itself a billable request.",
|
|
29679
|
+
"operationId": "renew_runtime_agent_token",
|
|
29680
|
+
"responses": {
|
|
29681
|
+
"200": {
|
|
29682
|
+
"description": "A fresh access token",
|
|
29683
|
+
"content": {
|
|
29684
|
+
"application/json": {
|
|
29685
|
+
"schema": {
|
|
29686
|
+
"type": "object",
|
|
29687
|
+
"properties": {
|
|
29688
|
+
"access_token": {
|
|
29689
|
+
"type": "string"
|
|
29690
|
+
},
|
|
29691
|
+
"expires_in": {
|
|
29692
|
+
"type": "integer"
|
|
29693
|
+
},
|
|
29694
|
+
"token_type": {
|
|
29695
|
+
"type": "string",
|
|
29696
|
+
"example": "Bearer"
|
|
29697
|
+
}
|
|
29698
|
+
}
|
|
29699
|
+
}
|
|
29700
|
+
}
|
|
29701
|
+
}
|
|
29702
|
+
},
|
|
29703
|
+
"400": {
|
|
29704
|
+
"description": "The runtime is not deployed, so it has nothing to renew"
|
|
29705
|
+
},
|
|
29706
|
+
"401": {
|
|
29707
|
+
"description": "Unauthenticated, or the token presented has already expired"
|
|
29708
|
+
},
|
|
29709
|
+
"403": {
|
|
29710
|
+
"description": "Not an agent caller"
|
|
29711
|
+
},
|
|
29712
|
+
"404": {
|
|
29713
|
+
"description": "No such runtime, or it is not bound to this agent"
|
|
29714
|
+
}
|
|
29715
|
+
}
|
|
29716
|
+
}
|
|
29717
|
+
},
|
|
29547
29718
|
"/v1/otel/stream": {
|
|
29548
29719
|
"get": {
|
|
29549
29720
|
"tags": [
|
|
@@ -30668,6 +30839,39 @@
|
|
|
30668
30839
|
}
|
|
30669
30840
|
}
|
|
30670
30841
|
},
|
|
30842
|
+
"/v1/runtimes/{runtime_id}/enable-recommended-tools": {
|
|
30843
|
+
"parameters": [
|
|
30844
|
+
{
|
|
30845
|
+
"name": "runtime_id",
|
|
30846
|
+
"in": "path",
|
|
30847
|
+
"required": true,
|
|
30848
|
+
"schema": {
|
|
30849
|
+
"type": "string"
|
|
30850
|
+
}
|
|
30851
|
+
}
|
|
30852
|
+
],
|
|
30853
|
+
"post": {
|
|
30854
|
+
"tags": [
|
|
30855
|
+
"Runtimes"
|
|
30856
|
+
],
|
|
30857
|
+
"summary": "Enable the recommended tool set (image generation, web search, memory, Shroud, intents) on the runtime's agent. Human-only.",
|
|
30858
|
+
"operationId": "enable_recommended_tools",
|
|
30859
|
+
"responses": {
|
|
30860
|
+
"200": {
|
|
30861
|
+
"description": "Success"
|
|
30862
|
+
},
|
|
30863
|
+
"401": {
|
|
30864
|
+
"description": "Unauthenticated"
|
|
30865
|
+
},
|
|
30866
|
+
"403": {
|
|
30867
|
+
"description": "Forbidden, or the plan does not include this"
|
|
30868
|
+
},
|
|
30869
|
+
"404": {
|
|
30870
|
+
"description": "Not found"
|
|
30871
|
+
}
|
|
30872
|
+
}
|
|
30873
|
+
}
|
|
30874
|
+
},
|
|
30671
30875
|
"/v1/vaults/{vault_id}/secret-version-disable/{*path_and_version}": {
|
|
30672
30876
|
"parameters": [
|
|
30673
30877
|
{
|
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.61.
|
|
5
|
+
version: "0.61.44"
|
|
6
6
|
description: |
|
|
7
7
|
Secure secret management for AI agents. Provides vaults, secrets,
|
|
8
8
|
policy-based access control, agent identity, Intents API,
|
|
@@ -18000,6 +18000,87 @@ paths:
|
|
|
18000
18000
|
description: Forbidden, or the plan does not include this
|
|
18001
18001
|
'404':
|
|
18002
18002
|
description: Not found
|
|
18003
|
+
/v1/billing/promo/preview:
|
|
18004
|
+
get:
|
|
18005
|
+
tags: [Billing]
|
|
18006
|
+
summary: "What a promotion code does to a plan"
|
|
18007
|
+
description: >
|
|
18008
|
+
Public, and deliberately so: a promo advertised on social media
|
|
18009
|
+
is read by people who have no account yet, and the price they
|
|
18010
|
+
were promised has to be on the pricing page before they make
|
|
18011
|
+
one. It resolves a Stripe promotion code and one configured
|
|
18012
|
+
plan price; no tenant data is reachable through it.
|
|
18013
|
+
|
|
18014
|
+
|
|
18015
|
+
Distinct from `/v1/billing/promo/validate`, which answers for
|
|
18016
|
+
the `promo_codes` grants an authenticated org can redeem in
|
|
18017
|
+
place. This one describes a checkout discount, which needs a
|
|
18018
|
+
card and therefore has to go through
|
|
18019
|
+
`POST /v1/billing/subscribe` with `promo_code`.
|
|
18020
|
+
operationId: preview_promo
|
|
18021
|
+
security: []
|
|
18022
|
+
parameters:
|
|
18023
|
+
- name: code
|
|
18024
|
+
in: query
|
|
18025
|
+
required: true
|
|
18026
|
+
schema: { type: string, maxLength: 64 }
|
|
18027
|
+
description: The promotion code, as advertised.
|
|
18028
|
+
- name: tier
|
|
18029
|
+
in: query
|
|
18030
|
+
required: false
|
|
18031
|
+
schema: { type: string, enum: [pro, team, business], default: pro }
|
|
18032
|
+
- name: interval
|
|
18033
|
+
in: query
|
|
18034
|
+
required: false
|
|
18035
|
+
schema: { type: string, enum: [monthly, annual], default: monthly }
|
|
18036
|
+
responses:
|
|
18037
|
+
'200':
|
|
18038
|
+
description: >
|
|
18039
|
+
The offer, or why the code cannot be used. A code that
|
|
18040
|
+
does not apply answers 200 with `valid: false` and a
|
|
18041
|
+
message, not an error status — "this code is not for
|
|
18042
|
+
annual billing" is an answer, not a failure.
|
|
18043
|
+
content:
|
|
18044
|
+
application/json:
|
|
18045
|
+
schema:
|
|
18046
|
+
type: object
|
|
18047
|
+
required: [valid, tier, interval]
|
|
18048
|
+
properties:
|
|
18049
|
+
valid: { type: boolean }
|
|
18050
|
+
code:
|
|
18051
|
+
type: string
|
|
18052
|
+
nullable: true
|
|
18053
|
+
description: The code as Stripe stores it, not the caller's casing.
|
|
18054
|
+
headline:
|
|
18055
|
+
type: string
|
|
18056
|
+
nullable: true
|
|
18057
|
+
description: >
|
|
18058
|
+
The offer in one sentence, derived from the coupon —
|
|
18059
|
+
e.g. "$5/mo for your first 6 months, then $29/mo".
|
|
18060
|
+
Rendered rather than composed by the client, so a page
|
|
18061
|
+
cannot advertise terms different from the ones charged.
|
|
18062
|
+
tier: { type: string }
|
|
18063
|
+
interval: { type: string }
|
|
18064
|
+
list_cents: { type: integer, nullable: true }
|
|
18065
|
+
first_cents:
|
|
18066
|
+
type: integer
|
|
18067
|
+
nullable: true
|
|
18068
|
+
description: What the first invoice comes to, after the discount.
|
|
18069
|
+
duration_months:
|
|
18070
|
+
type: integer
|
|
18071
|
+
nullable: true
|
|
18072
|
+
description: How many invoices the discount covers.
|
|
18073
|
+
expires_at:
|
|
18074
|
+
type: string
|
|
18075
|
+
format: date-time
|
|
18076
|
+
nullable: true
|
|
18077
|
+
description: >
|
|
18078
|
+
Last moment the code can be redeemed. Someone who
|
|
18079
|
+
subscribes before this keeps the discount for its
|
|
18080
|
+
full length.
|
|
18081
|
+
message: { type: string, nullable: true }
|
|
18082
|
+
'400':
|
|
18083
|
+
description: Unknown tier or interval
|
|
18003
18084
|
/v1/billing/promo/validate:
|
|
18004
18085
|
get:
|
|
18005
18086
|
tags: [Billing]
|
|
@@ -18893,6 +18974,58 @@ paths:
|
|
|
18893
18974
|
description: Forbidden, or the plan does not include this
|
|
18894
18975
|
'404':
|
|
18895
18976
|
description: Not found
|
|
18977
|
+
/v1/runtimes/{runtime_id}/agent-token/renew:
|
|
18978
|
+
parameters:
|
|
18979
|
+
- name: runtime_id
|
|
18980
|
+
in: path
|
|
18981
|
+
required: true
|
|
18982
|
+
schema:
|
|
18983
|
+
type: string
|
|
18984
|
+
post:
|
|
18985
|
+
tags: [Runtimes]
|
|
18986
|
+
summary: "Renew this runtime's own agent JWT before it expires"
|
|
18987
|
+
description: >-
|
|
18988
|
+
Called by the runtime container itself, not by a human or an
|
|
18989
|
+
external client.
|
|
18990
|
+
|
|
18991
|
+
A runtime's `ONECLAW_AGENT_TOKEN` is a short-lived JWT that Cloud
|
|
18992
|
+
Run resolves from Secret Manager when the instance starts and
|
|
18993
|
+
never again, so a container that outlives the TTL loses its
|
|
18994
|
+
credential — and with it every 1claw tool — until it is
|
|
18995
|
+
restarted. This lets it replace the token in place instead.
|
|
18996
|
+
|
|
18997
|
+
Authenticated by the credential being renewed: the caller must
|
|
18998
|
+
present a still-valid runtime-bound agent JWT together with a
|
|
18999
|
+
matching `X-1Claw-Runtime-Id` header, and must be the agent that
|
|
19000
|
+
runtime is bound to. It grants nothing new — the same claims with
|
|
19001
|
+
a later expiry — and stops working the moment the token lapses,
|
|
19002
|
+
the token is revoked, the agent is suspended, or the runtime is
|
|
19003
|
+
no longer deployed. Exempt from the monthly request quota: upkeep
|
|
19004
|
+
of an already-paid-for runtime is not itself a billable request.
|
|
19005
|
+
operationId: renew_runtime_agent_token
|
|
19006
|
+
responses:
|
|
19007
|
+
'200':
|
|
19008
|
+
description: A fresh access token
|
|
19009
|
+
content:
|
|
19010
|
+
application/json:
|
|
19011
|
+
schema:
|
|
19012
|
+
type: object
|
|
19013
|
+
properties:
|
|
19014
|
+
access_token:
|
|
19015
|
+
type: string
|
|
19016
|
+
expires_in:
|
|
19017
|
+
type: integer
|
|
19018
|
+
token_type:
|
|
19019
|
+
type: string
|
|
19020
|
+
example: Bearer
|
|
19021
|
+
'400':
|
|
19022
|
+
description: The runtime is not deployed, so it has nothing to renew
|
|
19023
|
+
'401':
|
|
19024
|
+
description: Unauthenticated, or the token presented has already expired
|
|
19025
|
+
'403':
|
|
19026
|
+
description: Not an agent caller
|
|
19027
|
+
'404':
|
|
19028
|
+
description: No such runtime, or it is not bound to this agent
|
|
18896
19029
|
/v1/otel/stream:
|
|
18897
19030
|
get:
|
|
18898
19031
|
tags: [Observability]
|
|
@@ -19596,6 +19729,26 @@ paths:
|
|
|
19596
19729
|
description: Forbidden, or the plan does not include this
|
|
19597
19730
|
'404':
|
|
19598
19731
|
description: Not found
|
|
19732
|
+
/v1/runtimes/{runtime_id}/enable-recommended-tools:
|
|
19733
|
+
parameters:
|
|
19734
|
+
- name: runtime_id
|
|
19735
|
+
in: path
|
|
19736
|
+
required: true
|
|
19737
|
+
schema:
|
|
19738
|
+
type: string
|
|
19739
|
+
post:
|
|
19740
|
+
tags: [Runtimes]
|
|
19741
|
+
summary: "Enable the recommended tool set (image generation, web search, memory, Shroud, intents) on the runtime's agent. Human-only."
|
|
19742
|
+
operationId: enable_recommended_tools
|
|
19743
|
+
responses:
|
|
19744
|
+
'200':
|
|
19745
|
+
description: Success
|
|
19746
|
+
'401':
|
|
19747
|
+
description: Unauthenticated
|
|
19748
|
+
'403':
|
|
19749
|
+
description: Forbidden, or the plan does not include this
|
|
19750
|
+
'404':
|
|
19751
|
+
description: Not found
|
|
19599
19752
|
/v1/vaults/{vault_id}/secret-version-disable/{*path_and_version}:
|
|
19600
19753
|
parameters:
|
|
19601
19754
|
- name: vault_id
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@1claw/openapi-spec",
|
|
3
|
-
"version": "0.61.
|
|
4
|
-
"description": "OpenAPI 3.1.0 specification for the 1Claw Vault API
|
|
3
|
+
"version": "0.61.44",
|
|
4
|
+
"description": "OpenAPI 3.1.0 specification for the 1Claw Vault API — generate clients in any language",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|