@1claw/openapi-spec 0.61.44 → 0.61.46
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 +190 -1
- package/openapi.yaml +105 -1
- package/package.json +1 -1
package/openapi.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"openapi": "3.1.0",
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "1Claw API",
|
|
5
|
-
"version": "0.61.
|
|
5
|
+
"version": "0.61.46",
|
|
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,195 @@
|
|
|
28151
28151
|
}
|
|
28152
28152
|
}
|
|
28153
28153
|
},
|
|
28154
|
+
"/v1/marketing/unsubscribe": {
|
|
28155
|
+
"get": {
|
|
28156
|
+
"tags": [
|
|
28157
|
+
"Billing"
|
|
28158
|
+
],
|
|
28159
|
+
"summary": "Unsubscribe an address from offers and announcements",
|
|
28160
|
+
"description": "Public and session-less by necessity: the link lives in an email, and an unsubscribe that asks the reader to log in first is one they abandon — they mark the next message as spam instead, which costs the sending domain far more. The `t` parameter is an HMAC over the address, which is what stops a stranger unsubscribing somebody else.\n\nOffers and announcements only. Transactional mail — sign-in codes, approval requests, invitations, reports the recipient asked for — does not consult this flag and is unaffected; turning it off must never lock someone out of their account.\n\nIdempotent, and the answer is the same whether or not the address has an account. \"Stop emailing me\" is always answered \"done\", and a 404 here would tell a caller holding a valid token which addresses are registered.\n",
|
|
28161
|
+
"operationId": "marketing_unsubscribe",
|
|
28162
|
+
"security": [],
|
|
28163
|
+
"parameters": [
|
|
28164
|
+
{
|
|
28165
|
+
"name": "email",
|
|
28166
|
+
"in": "query",
|
|
28167
|
+
"required": true,
|
|
28168
|
+
"schema": {
|
|
28169
|
+
"type": "string",
|
|
28170
|
+
"format": "email"
|
|
28171
|
+
}
|
|
28172
|
+
},
|
|
28173
|
+
{
|
|
28174
|
+
"name": "t",
|
|
28175
|
+
"in": "query",
|
|
28176
|
+
"required": true,
|
|
28177
|
+
"schema": {
|
|
28178
|
+
"type": "string"
|
|
28179
|
+
},
|
|
28180
|
+
"description": "HMAC over the address, from the link."
|
|
28181
|
+
},
|
|
28182
|
+
{
|
|
28183
|
+
"name": "c",
|
|
28184
|
+
"in": "query",
|
|
28185
|
+
"required": false,
|
|
28186
|
+
"schema": {
|
|
28187
|
+
"type": "string"
|
|
28188
|
+
},
|
|
28189
|
+
"description": "Campaign the link came from. Recorded, not trusted."
|
|
28190
|
+
}
|
|
28191
|
+
],
|
|
28192
|
+
"responses": {
|
|
28193
|
+
"200": {
|
|
28194
|
+
"description": "Unsubscribed (or already was)",
|
|
28195
|
+
"content": {
|
|
28196
|
+
"application/json": {
|
|
28197
|
+
"schema": {
|
|
28198
|
+
"type": "object",
|
|
28199
|
+
"required": [
|
|
28200
|
+
"unsubscribed",
|
|
28201
|
+
"email",
|
|
28202
|
+
"message"
|
|
28203
|
+
],
|
|
28204
|
+
"properties": {
|
|
28205
|
+
"unsubscribed": {
|
|
28206
|
+
"type": "boolean"
|
|
28207
|
+
},
|
|
28208
|
+
"email": {
|
|
28209
|
+
"type": "string"
|
|
28210
|
+
},
|
|
28211
|
+
"message": {
|
|
28212
|
+
"type": "string"
|
|
28213
|
+
}
|
|
28214
|
+
}
|
|
28215
|
+
}
|
|
28216
|
+
}
|
|
28217
|
+
}
|
|
28218
|
+
},
|
|
28219
|
+
"400": {
|
|
28220
|
+
"description": "The link's signature did not verify"
|
|
28221
|
+
}
|
|
28222
|
+
}
|
|
28223
|
+
},
|
|
28224
|
+
"post": {
|
|
28225
|
+
"tags": [
|
|
28226
|
+
"Billing"
|
|
28227
|
+
],
|
|
28228
|
+
"summary": "Unsubscribe (one-click)",
|
|
28229
|
+
"description": "Identical to the GET. Present because `List-Unsubscribe-Post: List-Unsubscribe=One-Click` makes Gmail and Yahoo POST here without ever opening the page, and both require that header on bulk mail — an endpoint that only answered GET would look like a working unsubscribe to a person and a broken one to the providers scoring the domain.\n",
|
|
28230
|
+
"operationId": "marketing_unsubscribe_post",
|
|
28231
|
+
"security": [],
|
|
28232
|
+
"parameters": [
|
|
28233
|
+
{
|
|
28234
|
+
"name": "email",
|
|
28235
|
+
"in": "query",
|
|
28236
|
+
"required": true,
|
|
28237
|
+
"schema": {
|
|
28238
|
+
"type": "string",
|
|
28239
|
+
"format": "email"
|
|
28240
|
+
}
|
|
28241
|
+
},
|
|
28242
|
+
{
|
|
28243
|
+
"name": "t",
|
|
28244
|
+
"in": "query",
|
|
28245
|
+
"required": true,
|
|
28246
|
+
"schema": {
|
|
28247
|
+
"type": "string"
|
|
28248
|
+
},
|
|
28249
|
+
"description": "HMAC over the address, from the link."
|
|
28250
|
+
},
|
|
28251
|
+
{
|
|
28252
|
+
"name": "c",
|
|
28253
|
+
"in": "query",
|
|
28254
|
+
"required": false,
|
|
28255
|
+
"schema": {
|
|
28256
|
+
"type": "string"
|
|
28257
|
+
},
|
|
28258
|
+
"description": "Campaign the link came from. Recorded, not trusted."
|
|
28259
|
+
}
|
|
28260
|
+
],
|
|
28261
|
+
"responses": {
|
|
28262
|
+
"200": {
|
|
28263
|
+
"description": "Unsubscribed (or already was)",
|
|
28264
|
+
"content": {
|
|
28265
|
+
"application/json": {
|
|
28266
|
+
"schema": {
|
|
28267
|
+
"type": "object",
|
|
28268
|
+
"required": [
|
|
28269
|
+
"unsubscribed",
|
|
28270
|
+
"email",
|
|
28271
|
+
"message"
|
|
28272
|
+
],
|
|
28273
|
+
"properties": {
|
|
28274
|
+
"unsubscribed": {
|
|
28275
|
+
"type": "boolean"
|
|
28276
|
+
},
|
|
28277
|
+
"email": {
|
|
28278
|
+
"type": "string"
|
|
28279
|
+
},
|
|
28280
|
+
"message": {
|
|
28281
|
+
"type": "string"
|
|
28282
|
+
}
|
|
28283
|
+
}
|
|
28284
|
+
}
|
|
28285
|
+
}
|
|
28286
|
+
}
|
|
28287
|
+
},
|
|
28288
|
+
"400": {
|
|
28289
|
+
"description": "The link's signature did not verify"
|
|
28290
|
+
}
|
|
28291
|
+
}
|
|
28292
|
+
}
|
|
28293
|
+
},
|
|
28294
|
+
"/v1/connectors/suggest": {
|
|
28295
|
+
"get": {
|
|
28296
|
+
"tags": [
|
|
28297
|
+
"Connectors"
|
|
28298
|
+
],
|
|
28299
|
+
"summary": "Is there a connector for this credential?",
|
|
28300
|
+
"description": "Asked before a secret is written, so the caller can offer to connect the service properly instead of filing a key that cannot do the job. A user stored an X bearer token, a consumer key and a consumer secret and asked their agent to post daily; none of the three can post, because X needs a user-context OAuth grant. Nothing said so until the agent failed.\n\nMatches on both a provider name and a credential word, so `api-keys/x-bearer-token` suggests the X connector and `notes/slack-migration-plan` suggests nothing — a hint that fires on every path is one people learn to scroll past.\n",
|
|
28301
|
+
"operationId": "suggest_connector",
|
|
28302
|
+
"parameters": [
|
|
28303
|
+
{
|
|
28304
|
+
"name": "path",
|
|
28305
|
+
"in": "query",
|
|
28306
|
+
"required": true,
|
|
28307
|
+
"schema": {
|
|
28308
|
+
"type": "string"
|
|
28309
|
+
},
|
|
28310
|
+
"description": "The secret path about to be written."
|
|
28311
|
+
}
|
|
28312
|
+
],
|
|
28313
|
+
"responses": {
|
|
28314
|
+
"200": {
|
|
28315
|
+
"description": "The matching connector, or null.",
|
|
28316
|
+
"content": {
|
|
28317
|
+
"application/json": {
|
|
28318
|
+
"schema": {
|
|
28319
|
+
"type": "object",
|
|
28320
|
+
"required": [
|
|
28321
|
+
"preset"
|
|
28322
|
+
],
|
|
28323
|
+
"properties": {
|
|
28324
|
+
"preset": {
|
|
28325
|
+
"nullable": true,
|
|
28326
|
+
"allOf": [
|
|
28327
|
+
{
|
|
28328
|
+
"$ref": "#/components/schemas/ConnectorPreset"
|
|
28329
|
+
}
|
|
28330
|
+
]
|
|
28331
|
+
}
|
|
28332
|
+
}
|
|
28333
|
+
}
|
|
28334
|
+
}
|
|
28335
|
+
}
|
|
28336
|
+
},
|
|
28337
|
+
"401": {
|
|
28338
|
+
"description": "Unauthenticated"
|
|
28339
|
+
}
|
|
28340
|
+
}
|
|
28341
|
+
}
|
|
28342
|
+
},
|
|
28154
28343
|
"/v1/billing/promo/preview": {
|
|
28155
28344
|
"get": {
|
|
28156
28345
|
"tags": [
|
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.46"
|
|
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,110 @@ paths:
|
|
|
18000
18000
|
description: Forbidden, or the plan does not include this
|
|
18001
18001
|
'404':
|
|
18002
18002
|
description: Not found
|
|
18003
|
+
/v1/marketing/unsubscribe:
|
|
18004
|
+
get: &marketing_unsubscribe
|
|
18005
|
+
tags: [Billing]
|
|
18006
|
+
summary: "Unsubscribe an address from offers and announcements"
|
|
18007
|
+
description: >
|
|
18008
|
+
Public and session-less by necessity: the link lives in an
|
|
18009
|
+
email, and an unsubscribe that asks the reader to log in
|
|
18010
|
+
first is one they abandon — they mark the next message as
|
|
18011
|
+
spam instead, which costs the sending domain far more.
|
|
18012
|
+
The `t` parameter is an HMAC over the address, which is what
|
|
18013
|
+
stops a stranger unsubscribing somebody else.
|
|
18014
|
+
|
|
18015
|
+
|
|
18016
|
+
Offers and announcements only. Transactional mail — sign-in
|
|
18017
|
+
codes, approval requests, invitations, reports the recipient
|
|
18018
|
+
asked for — does not consult this flag and is unaffected;
|
|
18019
|
+
turning it off must never lock someone out of their account.
|
|
18020
|
+
|
|
18021
|
+
|
|
18022
|
+
Idempotent, and the answer is the same whether or not the
|
|
18023
|
+
address has an account. "Stop emailing me" is always
|
|
18024
|
+
answered "done", and a 404 here would tell a caller holding
|
|
18025
|
+
a valid token which addresses are registered.
|
|
18026
|
+
operationId: marketing_unsubscribe
|
|
18027
|
+
security: []
|
|
18028
|
+
parameters:
|
|
18029
|
+
- name: email
|
|
18030
|
+
in: query
|
|
18031
|
+
required: true
|
|
18032
|
+
schema: { type: string, format: email }
|
|
18033
|
+
- name: t
|
|
18034
|
+
in: query
|
|
18035
|
+
required: true
|
|
18036
|
+
schema: { type: string }
|
|
18037
|
+
description: HMAC over the address, from the link.
|
|
18038
|
+
- name: c
|
|
18039
|
+
in: query
|
|
18040
|
+
required: false
|
|
18041
|
+
schema: { type: string }
|
|
18042
|
+
description: Campaign the link came from. Recorded, not trusted.
|
|
18043
|
+
responses:
|
|
18044
|
+
'200':
|
|
18045
|
+
description: Unsubscribed (or already was)
|
|
18046
|
+
content:
|
|
18047
|
+
application/json:
|
|
18048
|
+
schema:
|
|
18049
|
+
type: object
|
|
18050
|
+
required: [unsubscribed, email, message]
|
|
18051
|
+
properties:
|
|
18052
|
+
unsubscribed: { type: boolean }
|
|
18053
|
+
email: { type: string }
|
|
18054
|
+
message: { type: string }
|
|
18055
|
+
'400':
|
|
18056
|
+
description: The link's signature did not verify
|
|
18057
|
+
post:
|
|
18058
|
+
<<: *marketing_unsubscribe
|
|
18059
|
+
summary: "Unsubscribe (one-click)"
|
|
18060
|
+
description: >
|
|
18061
|
+
Identical to the GET. Present because
|
|
18062
|
+
`List-Unsubscribe-Post: List-Unsubscribe=One-Click` makes
|
|
18063
|
+
Gmail and Yahoo POST here without ever opening the page, and
|
|
18064
|
+
both require that header on bulk mail — an endpoint that only
|
|
18065
|
+
answered GET would look like a working unsubscribe to a
|
|
18066
|
+
person and a broken one to the providers scoring the domain.
|
|
18067
|
+
operationId: marketing_unsubscribe_post
|
|
18068
|
+
/v1/connectors/suggest:
|
|
18069
|
+
get:
|
|
18070
|
+
tags: [Connectors]
|
|
18071
|
+
summary: "Is there a connector for this credential?"
|
|
18072
|
+
description: >
|
|
18073
|
+
Asked before a secret is written, so the caller can offer to
|
|
18074
|
+
connect the service properly instead of filing a key that
|
|
18075
|
+
cannot do the job. A user stored an X bearer token, a consumer
|
|
18076
|
+
key and a consumer secret and asked their agent to post daily;
|
|
18077
|
+
none of the three can post, because X needs a user-context
|
|
18078
|
+
OAuth grant. Nothing said so until the agent failed.
|
|
18079
|
+
|
|
18080
|
+
|
|
18081
|
+
Matches on both a provider name and a credential word, so
|
|
18082
|
+
`api-keys/x-bearer-token` suggests the X connector and
|
|
18083
|
+
`notes/slack-migration-plan` suggests nothing — a hint that
|
|
18084
|
+
fires on every path is one people learn to scroll past.
|
|
18085
|
+
operationId: suggest_connector
|
|
18086
|
+
parameters:
|
|
18087
|
+
- name: path
|
|
18088
|
+
in: query
|
|
18089
|
+
required: true
|
|
18090
|
+
schema: { type: string }
|
|
18091
|
+
description: The secret path about to be written.
|
|
18092
|
+
responses:
|
|
18093
|
+
'200':
|
|
18094
|
+
description: The matching connector, or null.
|
|
18095
|
+
content:
|
|
18096
|
+
application/json:
|
|
18097
|
+
schema:
|
|
18098
|
+
type: object
|
|
18099
|
+
required: [preset]
|
|
18100
|
+
properties:
|
|
18101
|
+
preset:
|
|
18102
|
+
nullable: true
|
|
18103
|
+
allOf:
|
|
18104
|
+
- $ref: '#/components/schemas/ConnectorPreset'
|
|
18105
|
+
'401':
|
|
18106
|
+
description: Unauthenticated
|
|
18003
18107
|
/v1/billing/promo/preview:
|
|
18004
18108
|
get:
|
|
18005
18109
|
tags: [Billing]
|