@wspc/cli 0.0.22 → 0.0.23
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 +21 -1
- package/dist/cli.d.ts +5 -1
- package/dist/cli.js +1021 -32
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/spec/openapi.json +3827 -55
package/spec/openapi.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "wspc API",
|
|
5
5
|
"version": "0.1.0",
|
|
6
|
-
"description": "Merged OpenAPI document covering every wspc worker (auth, todo, calendar, email, push). For per-domain browsing use api.wspc.ai/<domain>/docs."
|
|
6
|
+
"description": "Merged OpenAPI document covering every wspc worker (auth, todo, calendar, drive, email, push). For per-domain browsing use api.wspc.ai/<domain>/docs."
|
|
7
7
|
},
|
|
8
8
|
"servers": [
|
|
9
9
|
{
|
|
@@ -1187,6 +1187,317 @@
|
|
|
1187
1187
|
"additionalProperties": false,
|
|
1188
1188
|
"description": "Request body for PATCH `/calendar/events/{id}`. All fields are optional partial updates. To CANCEL a meeting (preserve the record and notify attendees) set `status: cancelled`; to remove the event from default listings, call DELETE instead."
|
|
1189
1189
|
},
|
|
1190
|
+
"DriveLibrary": {
|
|
1191
|
+
"type": "object",
|
|
1192
|
+
"properties": {
|
|
1193
|
+
"id": {
|
|
1194
|
+
"type": "string"
|
|
1195
|
+
},
|
|
1196
|
+
"org_id": {
|
|
1197
|
+
"type": "string"
|
|
1198
|
+
},
|
|
1199
|
+
"created_by_user_id": {
|
|
1200
|
+
"type": "string"
|
|
1201
|
+
},
|
|
1202
|
+
"name": {
|
|
1203
|
+
"type": "string"
|
|
1204
|
+
},
|
|
1205
|
+
"version": {
|
|
1206
|
+
"type": "integer"
|
|
1207
|
+
},
|
|
1208
|
+
"file_count": {
|
|
1209
|
+
"type": "integer",
|
|
1210
|
+
"minimum": 0
|
|
1211
|
+
},
|
|
1212
|
+
"storage_bytes": {
|
|
1213
|
+
"type": "integer",
|
|
1214
|
+
"minimum": 0
|
|
1215
|
+
},
|
|
1216
|
+
"created_at": {
|
|
1217
|
+
"type": "integer"
|
|
1218
|
+
},
|
|
1219
|
+
"updated_at": {
|
|
1220
|
+
"type": "integer"
|
|
1221
|
+
},
|
|
1222
|
+
"deleted_at": {
|
|
1223
|
+
"type": "integer"
|
|
1224
|
+
}
|
|
1225
|
+
},
|
|
1226
|
+
"required": [
|
|
1227
|
+
"id",
|
|
1228
|
+
"org_id",
|
|
1229
|
+
"created_by_user_id",
|
|
1230
|
+
"name",
|
|
1231
|
+
"version",
|
|
1232
|
+
"file_count",
|
|
1233
|
+
"storage_bytes",
|
|
1234
|
+
"created_at",
|
|
1235
|
+
"updated_at"
|
|
1236
|
+
]
|
|
1237
|
+
},
|
|
1238
|
+
"CreateDriveLibraryBody": {
|
|
1239
|
+
"type": "object",
|
|
1240
|
+
"properties": {
|
|
1241
|
+
"name": {
|
|
1242
|
+
"type": "string",
|
|
1243
|
+
"maxLength": 120
|
|
1244
|
+
}
|
|
1245
|
+
},
|
|
1246
|
+
"required": [
|
|
1247
|
+
"name"
|
|
1248
|
+
]
|
|
1249
|
+
},
|
|
1250
|
+
"DeleteDriveFileResponse": {
|
|
1251
|
+
"type": "object",
|
|
1252
|
+
"properties": {
|
|
1253
|
+
"entry": {
|
|
1254
|
+
"type": "object",
|
|
1255
|
+
"properties": {
|
|
1256
|
+
"id": {
|
|
1257
|
+
"type": "string"
|
|
1258
|
+
},
|
|
1259
|
+
"path": {
|
|
1260
|
+
"type": "string"
|
|
1261
|
+
},
|
|
1262
|
+
"kind": {
|
|
1263
|
+
"type": "string",
|
|
1264
|
+
"enum": [
|
|
1265
|
+
"file"
|
|
1266
|
+
]
|
|
1267
|
+
},
|
|
1268
|
+
"entry_version": {
|
|
1269
|
+
"type": "integer",
|
|
1270
|
+
"minimum": 0
|
|
1271
|
+
},
|
|
1272
|
+
"current_version_id": {
|
|
1273
|
+
"type": "string"
|
|
1274
|
+
},
|
|
1275
|
+
"content_sha256": {
|
|
1276
|
+
"type": "string"
|
|
1277
|
+
},
|
|
1278
|
+
"size_bytes": {
|
|
1279
|
+
"type": "integer",
|
|
1280
|
+
"minimum": 0
|
|
1281
|
+
},
|
|
1282
|
+
"updated_at": {
|
|
1283
|
+
"type": "string"
|
|
1284
|
+
},
|
|
1285
|
+
"deleted_at": {
|
|
1286
|
+
"type": "string"
|
|
1287
|
+
}
|
|
1288
|
+
},
|
|
1289
|
+
"required": [
|
|
1290
|
+
"id",
|
|
1291
|
+
"path",
|
|
1292
|
+
"kind",
|
|
1293
|
+
"entry_version",
|
|
1294
|
+
"size_bytes",
|
|
1295
|
+
"updated_at"
|
|
1296
|
+
]
|
|
1297
|
+
},
|
|
1298
|
+
"result": {
|
|
1299
|
+
"type": "string",
|
|
1300
|
+
"enum": [
|
|
1301
|
+
"deleted",
|
|
1302
|
+
"unchanged"
|
|
1303
|
+
]
|
|
1304
|
+
}
|
|
1305
|
+
},
|
|
1306
|
+
"required": [
|
|
1307
|
+
"entry",
|
|
1308
|
+
"result"
|
|
1309
|
+
]
|
|
1310
|
+
},
|
|
1311
|
+
"DeleteDriveFileBody": {
|
|
1312
|
+
"type": "object",
|
|
1313
|
+
"properties": {
|
|
1314
|
+
"path": {
|
|
1315
|
+
"type": "string"
|
|
1316
|
+
},
|
|
1317
|
+
"expected_entry_version": {
|
|
1318
|
+
"type": "integer",
|
|
1319
|
+
"minimum": 0
|
|
1320
|
+
}
|
|
1321
|
+
},
|
|
1322
|
+
"required": [
|
|
1323
|
+
"path",
|
|
1324
|
+
"expected_entry_version"
|
|
1325
|
+
]
|
|
1326
|
+
},
|
|
1327
|
+
"DeleteDriveLibraryBody": {
|
|
1328
|
+
"type": "object",
|
|
1329
|
+
"properties": {
|
|
1330
|
+
"expected_version": {
|
|
1331
|
+
"type": "integer",
|
|
1332
|
+
"minimum": 0
|
|
1333
|
+
}
|
|
1334
|
+
},
|
|
1335
|
+
"required": [
|
|
1336
|
+
"expected_version"
|
|
1337
|
+
]
|
|
1338
|
+
},
|
|
1339
|
+
"DriveManifestResponse": {
|
|
1340
|
+
"type": "object",
|
|
1341
|
+
"properties": {
|
|
1342
|
+
"library": {
|
|
1343
|
+
"$ref": "#/components/schemas/DriveLibrary"
|
|
1344
|
+
},
|
|
1345
|
+
"entries": {
|
|
1346
|
+
"type": "array",
|
|
1347
|
+
"items": {
|
|
1348
|
+
"type": "object",
|
|
1349
|
+
"properties": {
|
|
1350
|
+
"id": {
|
|
1351
|
+
"type": "string"
|
|
1352
|
+
},
|
|
1353
|
+
"path": {
|
|
1354
|
+
"type": "string"
|
|
1355
|
+
},
|
|
1356
|
+
"kind": {
|
|
1357
|
+
"type": "string",
|
|
1358
|
+
"enum": [
|
|
1359
|
+
"file"
|
|
1360
|
+
]
|
|
1361
|
+
},
|
|
1362
|
+
"entry_version": {
|
|
1363
|
+
"type": "integer",
|
|
1364
|
+
"minimum": 0
|
|
1365
|
+
},
|
|
1366
|
+
"current_version_id": {
|
|
1367
|
+
"type": "string"
|
|
1368
|
+
},
|
|
1369
|
+
"content_sha256": {
|
|
1370
|
+
"type": "string"
|
|
1371
|
+
},
|
|
1372
|
+
"size_bytes": {
|
|
1373
|
+
"type": "integer",
|
|
1374
|
+
"minimum": 0
|
|
1375
|
+
},
|
|
1376
|
+
"updated_at": {
|
|
1377
|
+
"type": "string"
|
|
1378
|
+
},
|
|
1379
|
+
"deleted_at": {
|
|
1380
|
+
"type": "string"
|
|
1381
|
+
}
|
|
1382
|
+
},
|
|
1383
|
+
"required": [
|
|
1384
|
+
"id",
|
|
1385
|
+
"path",
|
|
1386
|
+
"kind",
|
|
1387
|
+
"entry_version",
|
|
1388
|
+
"size_bytes",
|
|
1389
|
+
"updated_at"
|
|
1390
|
+
]
|
|
1391
|
+
}
|
|
1392
|
+
},
|
|
1393
|
+
"next_cursor": {
|
|
1394
|
+
"type": [
|
|
1395
|
+
"string",
|
|
1396
|
+
"null"
|
|
1397
|
+
]
|
|
1398
|
+
}
|
|
1399
|
+
},
|
|
1400
|
+
"required": [
|
|
1401
|
+
"library",
|
|
1402
|
+
"entries",
|
|
1403
|
+
"next_cursor"
|
|
1404
|
+
]
|
|
1405
|
+
},
|
|
1406
|
+
"ListDriveLibrariesResponse": {
|
|
1407
|
+
"type": "object",
|
|
1408
|
+
"properties": {
|
|
1409
|
+
"libraries": {
|
|
1410
|
+
"type": "array",
|
|
1411
|
+
"items": {
|
|
1412
|
+
"$ref": "#/components/schemas/DriveLibrary"
|
|
1413
|
+
}
|
|
1414
|
+
},
|
|
1415
|
+
"next_cursor": {
|
|
1416
|
+
"type": "string"
|
|
1417
|
+
}
|
|
1418
|
+
},
|
|
1419
|
+
"required": [
|
|
1420
|
+
"libraries"
|
|
1421
|
+
]
|
|
1422
|
+
},
|
|
1423
|
+
"UpdateDriveLibraryBody": {
|
|
1424
|
+
"type": "object",
|
|
1425
|
+
"properties": {
|
|
1426
|
+
"name": {
|
|
1427
|
+
"type": "string",
|
|
1428
|
+
"maxLength": 120
|
|
1429
|
+
},
|
|
1430
|
+
"expected_version": {
|
|
1431
|
+
"type": "integer",
|
|
1432
|
+
"minimum": 0
|
|
1433
|
+
}
|
|
1434
|
+
},
|
|
1435
|
+
"required": [
|
|
1436
|
+
"expected_version"
|
|
1437
|
+
]
|
|
1438
|
+
},
|
|
1439
|
+
"UploadDriveFileResponse": {
|
|
1440
|
+
"type": "object",
|
|
1441
|
+
"properties": {
|
|
1442
|
+
"entry": {
|
|
1443
|
+
"type": "object",
|
|
1444
|
+
"properties": {
|
|
1445
|
+
"id": {
|
|
1446
|
+
"type": "string"
|
|
1447
|
+
},
|
|
1448
|
+
"path": {
|
|
1449
|
+
"type": "string"
|
|
1450
|
+
},
|
|
1451
|
+
"kind": {
|
|
1452
|
+
"type": "string",
|
|
1453
|
+
"enum": [
|
|
1454
|
+
"file"
|
|
1455
|
+
]
|
|
1456
|
+
},
|
|
1457
|
+
"entry_version": {
|
|
1458
|
+
"type": "integer",
|
|
1459
|
+
"minimum": 0
|
|
1460
|
+
},
|
|
1461
|
+
"current_version_id": {
|
|
1462
|
+
"type": "string"
|
|
1463
|
+
},
|
|
1464
|
+
"content_sha256": {
|
|
1465
|
+
"type": "string"
|
|
1466
|
+
},
|
|
1467
|
+
"size_bytes": {
|
|
1468
|
+
"type": "integer",
|
|
1469
|
+
"minimum": 0
|
|
1470
|
+
},
|
|
1471
|
+
"updated_at": {
|
|
1472
|
+
"type": "string"
|
|
1473
|
+
},
|
|
1474
|
+
"deleted_at": {
|
|
1475
|
+
"type": "string"
|
|
1476
|
+
}
|
|
1477
|
+
},
|
|
1478
|
+
"required": [
|
|
1479
|
+
"id",
|
|
1480
|
+
"path",
|
|
1481
|
+
"kind",
|
|
1482
|
+
"entry_version",
|
|
1483
|
+
"size_bytes",
|
|
1484
|
+
"updated_at"
|
|
1485
|
+
]
|
|
1486
|
+
},
|
|
1487
|
+
"result": {
|
|
1488
|
+
"type": "string",
|
|
1489
|
+
"enum": [
|
|
1490
|
+
"created",
|
|
1491
|
+
"updated",
|
|
1492
|
+
"unchanged"
|
|
1493
|
+
]
|
|
1494
|
+
}
|
|
1495
|
+
},
|
|
1496
|
+
"required": [
|
|
1497
|
+
"entry",
|
|
1498
|
+
"result"
|
|
1499
|
+
]
|
|
1500
|
+
},
|
|
1190
1501
|
"Alias": {
|
|
1191
1502
|
"type": "object",
|
|
1192
1503
|
"properties": {
|
|
@@ -15444,14 +15755,14 @@
|
|
|
15444
15755
|
}
|
|
15445
15756
|
}
|
|
15446
15757
|
},
|
|
15447
|
-
"/
|
|
15758
|
+
"/drive/libraries": {
|
|
15448
15759
|
"post": {
|
|
15449
|
-
"operationId": "
|
|
15760
|
+
"operationId": "drive_library_create",
|
|
15450
15761
|
"tags": [
|
|
15451
|
-
"
|
|
15762
|
+
"DriveLibraries"
|
|
15452
15763
|
],
|
|
15453
|
-
"summary": "Create a
|
|
15454
|
-
"description": "
|
|
15764
|
+
"summary": "Create a drive library",
|
|
15765
|
+
"description": "Create an organization-scoped Drive / Library container.",
|
|
15455
15766
|
"security": [
|
|
15456
15767
|
{
|
|
15457
15768
|
"bearerAuth": []
|
|
@@ -15459,67 +15770,33 @@
|
|
|
15459
15770
|
],
|
|
15460
15771
|
"parameters": [
|
|
15461
15772
|
{
|
|
15462
|
-
"name": "x-cb-
|
|
15773
|
+
"name": "x-cb-drive",
|
|
15463
15774
|
"in": "header",
|
|
15464
15775
|
"required": false,
|
|
15465
|
-
"description": "Optional opaque consistency bookmark returned by a previous
|
|
15776
|
+
"description": "Optional opaque consistency bookmark returned by a previous drive response. Send it back unchanged to continue read-after-write consistency for drive D1 data.",
|
|
15466
15777
|
"schema": {
|
|
15467
15778
|
"type": "string"
|
|
15468
15779
|
},
|
|
15469
15780
|
"example": "opaque-consistency-bookmark"
|
|
15470
15781
|
}
|
|
15471
15782
|
],
|
|
15472
|
-
"x-cli": {
|
|
15473
|
-
"command": "alias add",
|
|
15474
|
-
"positional": [
|
|
15475
|
-
"email"
|
|
15476
|
-
],
|
|
15477
|
-
"display": {
|
|
15478
|
-
"shape": "object",
|
|
15479
|
-
"format": {
|
|
15480
|
-
"id": "id-short",
|
|
15481
|
-
"user_id": "id-short",
|
|
15482
|
-
"created_at": "relative-time",
|
|
15483
|
-
"deleted_at": "relative-time"
|
|
15484
|
-
}
|
|
15485
|
-
}
|
|
15486
|
-
},
|
|
15487
15783
|
"x-codeSamples": [
|
|
15488
15784
|
{
|
|
15489
15785
|
"lang": "shell",
|
|
15490
15786
|
"label": "curl",
|
|
15491
|
-
"source": "curl -X POST https://api.wspc.ai/
|
|
15492
|
-
},
|
|
15493
|
-
{
|
|
15494
|
-
"lang": "bash",
|
|
15495
|
-
"label": "wspc CLI",
|
|
15496
|
-
"source": "wspc email alias create alice-shop@wspc.app"
|
|
15787
|
+
"source": "curl -X POST https://api.wspc.ai/drive/libraries -H \"Authorization: Bearer $WSPC_API_KEY\" -H \"Content-Type: application/json\" -d '{\"name\":\"Team docs\"}'"
|
|
15497
15788
|
}
|
|
15498
15789
|
],
|
|
15499
15790
|
"requestBody": {
|
|
15500
|
-
"required": true,
|
|
15501
15791
|
"content": {
|
|
15502
15792
|
"application/json": {
|
|
15503
15793
|
"schema": {
|
|
15504
|
-
"$ref": "#/components/schemas/
|
|
15794
|
+
"$ref": "#/components/schemas/CreateDriveLibraryBody"
|
|
15505
15795
|
},
|
|
15506
15796
|
"examples": {
|
|
15507
15797
|
"minimal": {
|
|
15508
|
-
"summary": "Minimal — full alias email",
|
|
15509
15798
|
"value": {
|
|
15510
|
-
"
|
|
15511
|
-
}
|
|
15512
|
-
},
|
|
15513
|
-
"full": {
|
|
15514
|
-
"summary": "Another active alias for a different context",
|
|
15515
|
-
"value": {
|
|
15516
|
-
"email": "alice-bills@wspc.app"
|
|
15517
|
-
}
|
|
15518
|
-
},
|
|
15519
|
-
"customDomain": {
|
|
15520
|
-
"summary": "Fully verified custom domain alias",
|
|
15521
|
-
"value": {
|
|
15522
|
-
"email": "alice-shop@example.com"
|
|
15799
|
+
"name": "Team docs"
|
|
15523
15800
|
}
|
|
15524
15801
|
}
|
|
15525
15802
|
}
|
|
@@ -15528,10 +15805,10 @@
|
|
|
15528
15805
|
},
|
|
15529
15806
|
"responses": {
|
|
15530
15807
|
"201": {
|
|
15531
|
-
"description": "
|
|
15808
|
+
"description": "Created",
|
|
15532
15809
|
"headers": {
|
|
15533
|
-
"x-cb-
|
|
15534
|
-
"description": "Opaque consistency bookmark for the latest
|
|
15810
|
+
"x-cb-drive": {
|
|
15811
|
+
"description": "Opaque consistency bookmark for the latest drive database position observed by this request. Store and send it on the next drive request to continue read-after-write consistency.",
|
|
15535
15812
|
"schema": {
|
|
15536
15813
|
"type": "string"
|
|
15537
15814
|
}
|
|
@@ -15540,16 +15817,20 @@
|
|
|
15540
15817
|
"content": {
|
|
15541
15818
|
"application/json": {
|
|
15542
15819
|
"schema": {
|
|
15543
|
-
"$ref": "#/components/schemas/
|
|
15820
|
+
"$ref": "#/components/schemas/DriveLibrary"
|
|
15544
15821
|
},
|
|
15545
15822
|
"examples": {
|
|
15546
|
-
"
|
|
15547
|
-
"summary": "Newly created alias",
|
|
15823
|
+
"library": {
|
|
15548
15824
|
"value": {
|
|
15549
|
-
"
|
|
15825
|
+
"id": "lib_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
15550
15826
|
"org_id": "org_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
15551
|
-
"
|
|
15552
|
-
"
|
|
15827
|
+
"created_by_user_id": "usr_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
15828
|
+
"name": "Team docs",
|
|
15829
|
+
"version": 1,
|
|
15830
|
+
"file_count": 0,
|
|
15831
|
+
"storage_bytes": 0,
|
|
15832
|
+
"created_at": 1781957145290,
|
|
15833
|
+
"updated_at": 1781957145290
|
|
15553
15834
|
}
|
|
15554
15835
|
}
|
|
15555
15836
|
}
|
|
@@ -15557,7 +15838,3490 @@
|
|
|
15557
15838
|
}
|
|
15558
15839
|
},
|
|
15559
15840
|
"400": {
|
|
15560
|
-
"description": "
|
|
15841
|
+
"description": "Request validation failed. The body, query, or path parameters did not match the operation's schema.",
|
|
15842
|
+
"content": {
|
|
15843
|
+
"application/json": {
|
|
15844
|
+
"schema": {
|
|
15845
|
+
"type": "object",
|
|
15846
|
+
"properties": {
|
|
15847
|
+
"error": {
|
|
15848
|
+
"type": "object",
|
|
15849
|
+
"properties": {
|
|
15850
|
+
"code": {
|
|
15851
|
+
"type": "string"
|
|
15852
|
+
},
|
|
15853
|
+
"message": {
|
|
15854
|
+
"type": "string"
|
|
15855
|
+
}
|
|
15856
|
+
},
|
|
15857
|
+
"required": [
|
|
15858
|
+
"code",
|
|
15859
|
+
"message"
|
|
15860
|
+
]
|
|
15861
|
+
}
|
|
15862
|
+
},
|
|
15863
|
+
"required": [
|
|
15864
|
+
"error"
|
|
15865
|
+
]
|
|
15866
|
+
},
|
|
15867
|
+
"examples": {
|
|
15868
|
+
"validationError": {
|
|
15869
|
+
"summary": "Body failed schema validation",
|
|
15870
|
+
"value": {
|
|
15871
|
+
"error": {
|
|
15872
|
+
"code": "VALIDATION_ERROR",
|
|
15873
|
+
"message": "title must not be empty"
|
|
15874
|
+
}
|
|
15875
|
+
}
|
|
15876
|
+
}
|
|
15877
|
+
}
|
|
15878
|
+
}
|
|
15879
|
+
}
|
|
15880
|
+
},
|
|
15881
|
+
"401": {
|
|
15882
|
+
"description": "Authentication is required but missing or invalid. The Bearer token (API key or OAuth access token) was absent, malformed, or rejected.",
|
|
15883
|
+
"content": {
|
|
15884
|
+
"application/json": {
|
|
15885
|
+
"schema": {
|
|
15886
|
+
"type": "object",
|
|
15887
|
+
"properties": {
|
|
15888
|
+
"error": {
|
|
15889
|
+
"type": "object",
|
|
15890
|
+
"properties": {
|
|
15891
|
+
"code": {
|
|
15892
|
+
"type": "string"
|
|
15893
|
+
},
|
|
15894
|
+
"message": {
|
|
15895
|
+
"type": "string"
|
|
15896
|
+
}
|
|
15897
|
+
},
|
|
15898
|
+
"required": [
|
|
15899
|
+
"code",
|
|
15900
|
+
"message"
|
|
15901
|
+
]
|
|
15902
|
+
}
|
|
15903
|
+
},
|
|
15904
|
+
"required": [
|
|
15905
|
+
"error"
|
|
15906
|
+
]
|
|
15907
|
+
},
|
|
15908
|
+
"examples": {
|
|
15909
|
+
"authRequired": {
|
|
15910
|
+
"summary": "Missing Authorization header",
|
|
15911
|
+
"value": {
|
|
15912
|
+
"error": {
|
|
15913
|
+
"code": "AUTH_REQUIRED",
|
|
15914
|
+
"message": "missing bearer token"
|
|
15915
|
+
}
|
|
15916
|
+
}
|
|
15917
|
+
}
|
|
15918
|
+
}
|
|
15919
|
+
}
|
|
15920
|
+
}
|
|
15921
|
+
},
|
|
15922
|
+
"403": {
|
|
15923
|
+
"description": "The caller is authenticated but not permitted to perform this operation on the target resource.",
|
|
15924
|
+
"content": {
|
|
15925
|
+
"application/json": {
|
|
15926
|
+
"schema": {
|
|
15927
|
+
"type": "object",
|
|
15928
|
+
"properties": {
|
|
15929
|
+
"error": {
|
|
15930
|
+
"type": "object",
|
|
15931
|
+
"properties": {
|
|
15932
|
+
"code": {
|
|
15933
|
+
"type": "string"
|
|
15934
|
+
},
|
|
15935
|
+
"message": {
|
|
15936
|
+
"type": "string"
|
|
15937
|
+
}
|
|
15938
|
+
},
|
|
15939
|
+
"required": [
|
|
15940
|
+
"code",
|
|
15941
|
+
"message"
|
|
15942
|
+
]
|
|
15943
|
+
}
|
|
15944
|
+
},
|
|
15945
|
+
"required": [
|
|
15946
|
+
"error"
|
|
15947
|
+
]
|
|
15948
|
+
},
|
|
15949
|
+
"examples": {
|
|
15950
|
+
"forbidden": {
|
|
15951
|
+
"summary": "Caller does not own the resource",
|
|
15952
|
+
"value": {
|
|
15953
|
+
"error": {
|
|
15954
|
+
"code": "FORBIDDEN",
|
|
15955
|
+
"message": "not allowed"
|
|
15956
|
+
}
|
|
15957
|
+
}
|
|
15958
|
+
}
|
|
15959
|
+
}
|
|
15960
|
+
}
|
|
15961
|
+
}
|
|
15962
|
+
},
|
|
15963
|
+
"404": {
|
|
15964
|
+
"description": "The target resource does not exist or is not visible to the caller. Soft-deleted resources are treated as not found unless an `include_deleted` flag is set.",
|
|
15965
|
+
"content": {
|
|
15966
|
+
"application/json": {
|
|
15967
|
+
"schema": {
|
|
15968
|
+
"type": "object",
|
|
15969
|
+
"properties": {
|
|
15970
|
+
"error": {
|
|
15971
|
+
"type": "object",
|
|
15972
|
+
"properties": {
|
|
15973
|
+
"code": {
|
|
15974
|
+
"type": "string"
|
|
15975
|
+
},
|
|
15976
|
+
"message": {
|
|
15977
|
+
"type": "string"
|
|
15978
|
+
}
|
|
15979
|
+
},
|
|
15980
|
+
"required": [
|
|
15981
|
+
"code",
|
|
15982
|
+
"message"
|
|
15983
|
+
]
|
|
15984
|
+
}
|
|
15985
|
+
},
|
|
15986
|
+
"required": [
|
|
15987
|
+
"error"
|
|
15988
|
+
]
|
|
15989
|
+
},
|
|
15990
|
+
"examples": {
|
|
15991
|
+
"notFound": {
|
|
15992
|
+
"summary": "Resource id is unknown to the service",
|
|
15993
|
+
"value": {
|
|
15994
|
+
"error": {
|
|
15995
|
+
"code": "NOT_FOUND",
|
|
15996
|
+
"message": "todo not found"
|
|
15997
|
+
}
|
|
15998
|
+
}
|
|
15999
|
+
}
|
|
16000
|
+
}
|
|
16001
|
+
}
|
|
16002
|
+
}
|
|
16003
|
+
},
|
|
16004
|
+
"409": {
|
|
16005
|
+
"description": "Optimistic-lock conflict. The supplied `expected_version` does not match the server's current version. Refetch the resource and retry.",
|
|
16006
|
+
"content": {
|
|
16007
|
+
"application/json": {
|
|
16008
|
+
"schema": {
|
|
16009
|
+
"type": "object",
|
|
16010
|
+
"properties": {
|
|
16011
|
+
"error": {
|
|
16012
|
+
"type": "object",
|
|
16013
|
+
"properties": {
|
|
16014
|
+
"code": {
|
|
16015
|
+
"type": "string"
|
|
16016
|
+
},
|
|
16017
|
+
"message": {
|
|
16018
|
+
"type": "string"
|
|
16019
|
+
}
|
|
16020
|
+
},
|
|
16021
|
+
"required": [
|
|
16022
|
+
"code",
|
|
16023
|
+
"message"
|
|
16024
|
+
]
|
|
16025
|
+
}
|
|
16026
|
+
},
|
|
16027
|
+
"required": [
|
|
16028
|
+
"error"
|
|
16029
|
+
]
|
|
16030
|
+
},
|
|
16031
|
+
"examples": {
|
|
16032
|
+
"versionConflict": {
|
|
16033
|
+
"summary": "expected_version does not match server version",
|
|
16034
|
+
"value": {
|
|
16035
|
+
"error": {
|
|
16036
|
+
"code": "VERSION_CONFLICT",
|
|
16037
|
+
"message": "expected_version 3 but current is 4"
|
|
16038
|
+
}
|
|
16039
|
+
}
|
|
16040
|
+
}
|
|
16041
|
+
}
|
|
16042
|
+
}
|
|
16043
|
+
}
|
|
16044
|
+
},
|
|
16045
|
+
"429": {
|
|
16046
|
+
"description": "Rate limit exceeded. Use the HTTP `Retry-After` header for machine-readable retry timing.",
|
|
16047
|
+
"content": {
|
|
16048
|
+
"application/json": {
|
|
16049
|
+
"schema": {
|
|
16050
|
+
"type": "object",
|
|
16051
|
+
"properties": {
|
|
16052
|
+
"error": {
|
|
16053
|
+
"type": "object",
|
|
16054
|
+
"properties": {
|
|
16055
|
+
"code": {
|
|
16056
|
+
"type": "string"
|
|
16057
|
+
},
|
|
16058
|
+
"message": {
|
|
16059
|
+
"type": "string"
|
|
16060
|
+
}
|
|
16061
|
+
},
|
|
16062
|
+
"required": [
|
|
16063
|
+
"code",
|
|
16064
|
+
"message"
|
|
16065
|
+
]
|
|
16066
|
+
}
|
|
16067
|
+
},
|
|
16068
|
+
"required": [
|
|
16069
|
+
"error"
|
|
16070
|
+
]
|
|
16071
|
+
},
|
|
16072
|
+
"examples": {
|
|
16073
|
+
"rateLimited": {
|
|
16074
|
+
"summary": "Per-key rate limit hit",
|
|
16075
|
+
"value": {
|
|
16076
|
+
"error": {
|
|
16077
|
+
"code": "RATE_LIMITED",
|
|
16078
|
+
"message": "Too many requests, please retry after 60 seconds."
|
|
16079
|
+
}
|
|
16080
|
+
}
|
|
16081
|
+
}
|
|
16082
|
+
}
|
|
16083
|
+
}
|
|
16084
|
+
}
|
|
16085
|
+
},
|
|
16086
|
+
"500": {
|
|
16087
|
+
"description": "Unhandled server error. The request was well-formed but the service failed unexpectedly. Safe to retry idempotent operations.",
|
|
16088
|
+
"content": {
|
|
16089
|
+
"application/json": {
|
|
16090
|
+
"schema": {
|
|
16091
|
+
"type": "object",
|
|
16092
|
+
"properties": {
|
|
16093
|
+
"error": {
|
|
16094
|
+
"type": "object",
|
|
16095
|
+
"properties": {
|
|
16096
|
+
"code": {
|
|
16097
|
+
"type": "string"
|
|
16098
|
+
},
|
|
16099
|
+
"message": {
|
|
16100
|
+
"type": "string"
|
|
16101
|
+
}
|
|
16102
|
+
},
|
|
16103
|
+
"required": [
|
|
16104
|
+
"code",
|
|
16105
|
+
"message"
|
|
16106
|
+
]
|
|
16107
|
+
}
|
|
16108
|
+
},
|
|
16109
|
+
"required": [
|
|
16110
|
+
"error"
|
|
16111
|
+
]
|
|
16112
|
+
},
|
|
16113
|
+
"examples": {
|
|
16114
|
+
"internalError": {
|
|
16115
|
+
"summary": "Unhandled exception",
|
|
16116
|
+
"value": {
|
|
16117
|
+
"error": {
|
|
16118
|
+
"code": "INTERNAL_ERROR",
|
|
16119
|
+
"message": "internal error"
|
|
16120
|
+
}
|
|
16121
|
+
}
|
|
16122
|
+
}
|
|
16123
|
+
}
|
|
16124
|
+
}
|
|
16125
|
+
}
|
|
16126
|
+
}
|
|
16127
|
+
}
|
|
16128
|
+
},
|
|
16129
|
+
"get": {
|
|
16130
|
+
"operationId": "drive_library_list",
|
|
16131
|
+
"tags": [
|
|
16132
|
+
"DriveLibraries"
|
|
16133
|
+
],
|
|
16134
|
+
"summary": "List drive libraries",
|
|
16135
|
+
"description": "List libraries in the caller organization with cursor pagination.",
|
|
16136
|
+
"security": [
|
|
16137
|
+
{
|
|
16138
|
+
"bearerAuth": []
|
|
16139
|
+
}
|
|
16140
|
+
],
|
|
16141
|
+
"parameters": [
|
|
16142
|
+
{
|
|
16143
|
+
"name": "x-cb-drive",
|
|
16144
|
+
"in": "header",
|
|
16145
|
+
"required": false,
|
|
16146
|
+
"description": "Optional opaque consistency bookmark returned by a previous drive response. Send it back unchanged to continue read-after-write consistency for drive D1 data.",
|
|
16147
|
+
"schema": {
|
|
16148
|
+
"type": "string"
|
|
16149
|
+
},
|
|
16150
|
+
"example": "opaque-consistency-bookmark"
|
|
16151
|
+
},
|
|
16152
|
+
{
|
|
16153
|
+
"schema": {
|
|
16154
|
+
"type": "string"
|
|
16155
|
+
},
|
|
16156
|
+
"required": false,
|
|
16157
|
+
"name": "limit",
|
|
16158
|
+
"in": "query"
|
|
16159
|
+
},
|
|
16160
|
+
{
|
|
16161
|
+
"schema": {
|
|
16162
|
+
"type": "string"
|
|
16163
|
+
},
|
|
16164
|
+
"required": false,
|
|
16165
|
+
"name": "cursor",
|
|
16166
|
+
"in": "query"
|
|
16167
|
+
},
|
|
16168
|
+
{
|
|
16169
|
+
"schema": {
|
|
16170
|
+
"type": "string"
|
|
16171
|
+
},
|
|
16172
|
+
"required": false,
|
|
16173
|
+
"name": "include_deleted",
|
|
16174
|
+
"in": "query"
|
|
16175
|
+
}
|
|
16176
|
+
],
|
|
16177
|
+
"x-codeSamples": [
|
|
16178
|
+
{
|
|
16179
|
+
"lang": "shell",
|
|
16180
|
+
"label": "curl",
|
|
16181
|
+
"source": "curl https://api.wspc.ai/drive/libraries -H \"Authorization: Bearer $WSPC_API_KEY\""
|
|
16182
|
+
}
|
|
16183
|
+
],
|
|
16184
|
+
"responses": {
|
|
16185
|
+
"200": {
|
|
16186
|
+
"description": "List",
|
|
16187
|
+
"headers": {
|
|
16188
|
+
"x-cb-drive": {
|
|
16189
|
+
"description": "Opaque consistency bookmark for the latest drive database position observed by this request. Store and send it on the next drive request to continue read-after-write consistency.",
|
|
16190
|
+
"schema": {
|
|
16191
|
+
"type": "string"
|
|
16192
|
+
}
|
|
16193
|
+
}
|
|
16194
|
+
},
|
|
16195
|
+
"content": {
|
|
16196
|
+
"application/json": {
|
|
16197
|
+
"schema": {
|
|
16198
|
+
"$ref": "#/components/schemas/ListDriveLibrariesResponse"
|
|
16199
|
+
},
|
|
16200
|
+
"examples": {
|
|
16201
|
+
"list": {
|
|
16202
|
+
"value": {
|
|
16203
|
+
"libraries": [
|
|
16204
|
+
{
|
|
16205
|
+
"id": "lib_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
16206
|
+
"org_id": "org_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
16207
|
+
"created_by_user_id": "usr_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
16208
|
+
"name": "Team docs",
|
|
16209
|
+
"version": 1,
|
|
16210
|
+
"file_count": 0,
|
|
16211
|
+
"storage_bytes": 0,
|
|
16212
|
+
"created_at": 1781957145290,
|
|
16213
|
+
"updated_at": 1781957145290
|
|
16214
|
+
}
|
|
16215
|
+
]
|
|
16216
|
+
}
|
|
16217
|
+
}
|
|
16218
|
+
}
|
|
16219
|
+
}
|
|
16220
|
+
}
|
|
16221
|
+
},
|
|
16222
|
+
"400": {
|
|
16223
|
+
"description": "Request validation failed. The body, query, or path parameters did not match the operation's schema.",
|
|
16224
|
+
"content": {
|
|
16225
|
+
"application/json": {
|
|
16226
|
+
"schema": {
|
|
16227
|
+
"type": "object",
|
|
16228
|
+
"properties": {
|
|
16229
|
+
"error": {
|
|
16230
|
+
"type": "object",
|
|
16231
|
+
"properties": {
|
|
16232
|
+
"code": {
|
|
16233
|
+
"type": "string"
|
|
16234
|
+
},
|
|
16235
|
+
"message": {
|
|
16236
|
+
"type": "string"
|
|
16237
|
+
}
|
|
16238
|
+
},
|
|
16239
|
+
"required": [
|
|
16240
|
+
"code",
|
|
16241
|
+
"message"
|
|
16242
|
+
]
|
|
16243
|
+
}
|
|
16244
|
+
},
|
|
16245
|
+
"required": [
|
|
16246
|
+
"error"
|
|
16247
|
+
]
|
|
16248
|
+
},
|
|
16249
|
+
"examples": {
|
|
16250
|
+
"validationError": {
|
|
16251
|
+
"summary": "Body failed schema validation",
|
|
16252
|
+
"value": {
|
|
16253
|
+
"error": {
|
|
16254
|
+
"code": "VALIDATION_ERROR",
|
|
16255
|
+
"message": "title must not be empty"
|
|
16256
|
+
}
|
|
16257
|
+
}
|
|
16258
|
+
}
|
|
16259
|
+
}
|
|
16260
|
+
}
|
|
16261
|
+
}
|
|
16262
|
+
},
|
|
16263
|
+
"401": {
|
|
16264
|
+
"description": "Authentication is required but missing or invalid. The Bearer token (API key or OAuth access token) was absent, malformed, or rejected.",
|
|
16265
|
+
"content": {
|
|
16266
|
+
"application/json": {
|
|
16267
|
+
"schema": {
|
|
16268
|
+
"type": "object",
|
|
16269
|
+
"properties": {
|
|
16270
|
+
"error": {
|
|
16271
|
+
"type": "object",
|
|
16272
|
+
"properties": {
|
|
16273
|
+
"code": {
|
|
16274
|
+
"type": "string"
|
|
16275
|
+
},
|
|
16276
|
+
"message": {
|
|
16277
|
+
"type": "string"
|
|
16278
|
+
}
|
|
16279
|
+
},
|
|
16280
|
+
"required": [
|
|
16281
|
+
"code",
|
|
16282
|
+
"message"
|
|
16283
|
+
]
|
|
16284
|
+
}
|
|
16285
|
+
},
|
|
16286
|
+
"required": [
|
|
16287
|
+
"error"
|
|
16288
|
+
]
|
|
16289
|
+
},
|
|
16290
|
+
"examples": {
|
|
16291
|
+
"authRequired": {
|
|
16292
|
+
"summary": "Missing Authorization header",
|
|
16293
|
+
"value": {
|
|
16294
|
+
"error": {
|
|
16295
|
+
"code": "AUTH_REQUIRED",
|
|
16296
|
+
"message": "missing bearer token"
|
|
16297
|
+
}
|
|
16298
|
+
}
|
|
16299
|
+
}
|
|
16300
|
+
}
|
|
16301
|
+
}
|
|
16302
|
+
}
|
|
16303
|
+
},
|
|
16304
|
+
"403": {
|
|
16305
|
+
"description": "The caller is authenticated but not permitted to perform this operation on the target resource.",
|
|
16306
|
+
"content": {
|
|
16307
|
+
"application/json": {
|
|
16308
|
+
"schema": {
|
|
16309
|
+
"type": "object",
|
|
16310
|
+
"properties": {
|
|
16311
|
+
"error": {
|
|
16312
|
+
"type": "object",
|
|
16313
|
+
"properties": {
|
|
16314
|
+
"code": {
|
|
16315
|
+
"type": "string"
|
|
16316
|
+
},
|
|
16317
|
+
"message": {
|
|
16318
|
+
"type": "string"
|
|
16319
|
+
}
|
|
16320
|
+
},
|
|
16321
|
+
"required": [
|
|
16322
|
+
"code",
|
|
16323
|
+
"message"
|
|
16324
|
+
]
|
|
16325
|
+
}
|
|
16326
|
+
},
|
|
16327
|
+
"required": [
|
|
16328
|
+
"error"
|
|
16329
|
+
]
|
|
16330
|
+
},
|
|
16331
|
+
"examples": {
|
|
16332
|
+
"forbidden": {
|
|
16333
|
+
"summary": "Caller does not own the resource",
|
|
16334
|
+
"value": {
|
|
16335
|
+
"error": {
|
|
16336
|
+
"code": "FORBIDDEN",
|
|
16337
|
+
"message": "not allowed"
|
|
16338
|
+
}
|
|
16339
|
+
}
|
|
16340
|
+
}
|
|
16341
|
+
}
|
|
16342
|
+
}
|
|
16343
|
+
}
|
|
16344
|
+
},
|
|
16345
|
+
"404": {
|
|
16346
|
+
"description": "The target resource does not exist or is not visible to the caller. Soft-deleted resources are treated as not found unless an `include_deleted` flag is set.",
|
|
16347
|
+
"content": {
|
|
16348
|
+
"application/json": {
|
|
16349
|
+
"schema": {
|
|
16350
|
+
"type": "object",
|
|
16351
|
+
"properties": {
|
|
16352
|
+
"error": {
|
|
16353
|
+
"type": "object",
|
|
16354
|
+
"properties": {
|
|
16355
|
+
"code": {
|
|
16356
|
+
"type": "string"
|
|
16357
|
+
},
|
|
16358
|
+
"message": {
|
|
16359
|
+
"type": "string"
|
|
16360
|
+
}
|
|
16361
|
+
},
|
|
16362
|
+
"required": [
|
|
16363
|
+
"code",
|
|
16364
|
+
"message"
|
|
16365
|
+
]
|
|
16366
|
+
}
|
|
16367
|
+
},
|
|
16368
|
+
"required": [
|
|
16369
|
+
"error"
|
|
16370
|
+
]
|
|
16371
|
+
},
|
|
16372
|
+
"examples": {
|
|
16373
|
+
"notFound": {
|
|
16374
|
+
"summary": "Resource id is unknown to the service",
|
|
16375
|
+
"value": {
|
|
16376
|
+
"error": {
|
|
16377
|
+
"code": "NOT_FOUND",
|
|
16378
|
+
"message": "todo not found"
|
|
16379
|
+
}
|
|
16380
|
+
}
|
|
16381
|
+
}
|
|
16382
|
+
}
|
|
16383
|
+
}
|
|
16384
|
+
}
|
|
16385
|
+
},
|
|
16386
|
+
"409": {
|
|
16387
|
+
"description": "Optimistic-lock conflict. The supplied `expected_version` does not match the server's current version. Refetch the resource and retry.",
|
|
16388
|
+
"content": {
|
|
16389
|
+
"application/json": {
|
|
16390
|
+
"schema": {
|
|
16391
|
+
"type": "object",
|
|
16392
|
+
"properties": {
|
|
16393
|
+
"error": {
|
|
16394
|
+
"type": "object",
|
|
16395
|
+
"properties": {
|
|
16396
|
+
"code": {
|
|
16397
|
+
"type": "string"
|
|
16398
|
+
},
|
|
16399
|
+
"message": {
|
|
16400
|
+
"type": "string"
|
|
16401
|
+
}
|
|
16402
|
+
},
|
|
16403
|
+
"required": [
|
|
16404
|
+
"code",
|
|
16405
|
+
"message"
|
|
16406
|
+
]
|
|
16407
|
+
}
|
|
16408
|
+
},
|
|
16409
|
+
"required": [
|
|
16410
|
+
"error"
|
|
16411
|
+
]
|
|
16412
|
+
},
|
|
16413
|
+
"examples": {
|
|
16414
|
+
"versionConflict": {
|
|
16415
|
+
"summary": "expected_version does not match server version",
|
|
16416
|
+
"value": {
|
|
16417
|
+
"error": {
|
|
16418
|
+
"code": "VERSION_CONFLICT",
|
|
16419
|
+
"message": "expected_version 3 but current is 4"
|
|
16420
|
+
}
|
|
16421
|
+
}
|
|
16422
|
+
}
|
|
16423
|
+
}
|
|
16424
|
+
}
|
|
16425
|
+
}
|
|
16426
|
+
},
|
|
16427
|
+
"429": {
|
|
16428
|
+
"description": "Rate limit exceeded. Use the HTTP `Retry-After` header for machine-readable retry timing.",
|
|
16429
|
+
"content": {
|
|
16430
|
+
"application/json": {
|
|
16431
|
+
"schema": {
|
|
16432
|
+
"type": "object",
|
|
16433
|
+
"properties": {
|
|
16434
|
+
"error": {
|
|
16435
|
+
"type": "object",
|
|
16436
|
+
"properties": {
|
|
16437
|
+
"code": {
|
|
16438
|
+
"type": "string"
|
|
16439
|
+
},
|
|
16440
|
+
"message": {
|
|
16441
|
+
"type": "string"
|
|
16442
|
+
}
|
|
16443
|
+
},
|
|
16444
|
+
"required": [
|
|
16445
|
+
"code",
|
|
16446
|
+
"message"
|
|
16447
|
+
]
|
|
16448
|
+
}
|
|
16449
|
+
},
|
|
16450
|
+
"required": [
|
|
16451
|
+
"error"
|
|
16452
|
+
]
|
|
16453
|
+
},
|
|
16454
|
+
"examples": {
|
|
16455
|
+
"rateLimited": {
|
|
16456
|
+
"summary": "Per-key rate limit hit",
|
|
16457
|
+
"value": {
|
|
16458
|
+
"error": {
|
|
16459
|
+
"code": "RATE_LIMITED",
|
|
16460
|
+
"message": "Too many requests, please retry after 60 seconds."
|
|
16461
|
+
}
|
|
16462
|
+
}
|
|
16463
|
+
}
|
|
16464
|
+
}
|
|
16465
|
+
}
|
|
16466
|
+
}
|
|
16467
|
+
},
|
|
16468
|
+
"500": {
|
|
16469
|
+
"description": "Unhandled server error. The request was well-formed but the service failed unexpectedly. Safe to retry idempotent operations.",
|
|
16470
|
+
"content": {
|
|
16471
|
+
"application/json": {
|
|
16472
|
+
"schema": {
|
|
16473
|
+
"type": "object",
|
|
16474
|
+
"properties": {
|
|
16475
|
+
"error": {
|
|
16476
|
+
"type": "object",
|
|
16477
|
+
"properties": {
|
|
16478
|
+
"code": {
|
|
16479
|
+
"type": "string"
|
|
16480
|
+
},
|
|
16481
|
+
"message": {
|
|
16482
|
+
"type": "string"
|
|
16483
|
+
}
|
|
16484
|
+
},
|
|
16485
|
+
"required": [
|
|
16486
|
+
"code",
|
|
16487
|
+
"message"
|
|
16488
|
+
]
|
|
16489
|
+
}
|
|
16490
|
+
},
|
|
16491
|
+
"required": [
|
|
16492
|
+
"error"
|
|
16493
|
+
]
|
|
16494
|
+
},
|
|
16495
|
+
"examples": {
|
|
16496
|
+
"internalError": {
|
|
16497
|
+
"summary": "Unhandled exception",
|
|
16498
|
+
"value": {
|
|
16499
|
+
"error": {
|
|
16500
|
+
"code": "INTERNAL_ERROR",
|
|
16501
|
+
"message": "internal error"
|
|
16502
|
+
}
|
|
16503
|
+
}
|
|
16504
|
+
}
|
|
16505
|
+
}
|
|
16506
|
+
}
|
|
16507
|
+
}
|
|
16508
|
+
}
|
|
16509
|
+
}
|
|
16510
|
+
}
|
|
16511
|
+
},
|
|
16512
|
+
"/drive/libraries/{id}/files/delete": {
|
|
16513
|
+
"post": {
|
|
16514
|
+
"operationId": "drive_file_delete",
|
|
16515
|
+
"tags": [
|
|
16516
|
+
"DriveFiles"
|
|
16517
|
+
],
|
|
16518
|
+
"summary": "Delete a drive file",
|
|
16519
|
+
"description": "Tombstone an active file using optimistic entry version locking.",
|
|
16520
|
+
"security": [
|
|
16521
|
+
{
|
|
16522
|
+
"bearerAuth": []
|
|
16523
|
+
}
|
|
16524
|
+
],
|
|
16525
|
+
"parameters": [
|
|
16526
|
+
{
|
|
16527
|
+
"name": "x-cb-drive",
|
|
16528
|
+
"in": "header",
|
|
16529
|
+
"required": false,
|
|
16530
|
+
"description": "Optional opaque consistency bookmark returned by a previous drive response. Send it back unchanged to continue read-after-write consistency for drive D1 data.",
|
|
16531
|
+
"schema": {
|
|
16532
|
+
"type": "string"
|
|
16533
|
+
},
|
|
16534
|
+
"example": "opaque-consistency-bookmark"
|
|
16535
|
+
},
|
|
16536
|
+
{
|
|
16537
|
+
"schema": {
|
|
16538
|
+
"type": "string"
|
|
16539
|
+
},
|
|
16540
|
+
"required": true,
|
|
16541
|
+
"name": "id",
|
|
16542
|
+
"in": "path"
|
|
16543
|
+
}
|
|
16544
|
+
],
|
|
16545
|
+
"x-codeSamples": [
|
|
16546
|
+
{
|
|
16547
|
+
"lang": "shell",
|
|
16548
|
+
"label": "curl",
|
|
16549
|
+
"source": "curl -X POST https://api.wspc.ai/drive/libraries/lib_01HW3K4N9V5G6Z8C2Q7B1Y0M3F/files/delete -H \"Authorization: Bearer $WSPC_API_KEY\" -H \"Content-Type: application/json\" -d '{\"path\":\"notes/today.md\",\"expected_entry_version\":1}'"
|
|
16550
|
+
}
|
|
16551
|
+
],
|
|
16552
|
+
"requestBody": {
|
|
16553
|
+
"content": {
|
|
16554
|
+
"application/json": {
|
|
16555
|
+
"schema": {
|
|
16556
|
+
"$ref": "#/components/schemas/DeleteDriveFileBody"
|
|
16557
|
+
},
|
|
16558
|
+
"examples": {
|
|
16559
|
+
"delete": {
|
|
16560
|
+
"value": {
|
|
16561
|
+
"path": "notes/today.md",
|
|
16562
|
+
"expected_entry_version": 1
|
|
16563
|
+
}
|
|
16564
|
+
}
|
|
16565
|
+
}
|
|
16566
|
+
}
|
|
16567
|
+
}
|
|
16568
|
+
},
|
|
16569
|
+
"responses": {
|
|
16570
|
+
"200": {
|
|
16571
|
+
"description": "Deleted",
|
|
16572
|
+
"headers": {
|
|
16573
|
+
"x-cb-drive": {
|
|
16574
|
+
"description": "Opaque consistency bookmark for the latest drive database position observed by this request. Store and send it on the next drive request to continue read-after-write consistency.",
|
|
16575
|
+
"schema": {
|
|
16576
|
+
"type": "string"
|
|
16577
|
+
}
|
|
16578
|
+
}
|
|
16579
|
+
},
|
|
16580
|
+
"content": {
|
|
16581
|
+
"application/json": {
|
|
16582
|
+
"schema": {
|
|
16583
|
+
"$ref": "#/components/schemas/DeleteDriveFileResponse"
|
|
16584
|
+
},
|
|
16585
|
+
"examples": {
|
|
16586
|
+
"deleted": {
|
|
16587
|
+
"value": {
|
|
16588
|
+
"entry": {
|
|
16589
|
+
"id": "fil_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
16590
|
+
"path": "notes/today.md",
|
|
16591
|
+
"kind": "file",
|
|
16592
|
+
"entry_version": 1,
|
|
16593
|
+
"current_version_id": "fvr_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
16594
|
+
"content_sha256": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
|
16595
|
+
"size_bytes": 12,
|
|
16596
|
+
"updated_at": "2026-06-20T10:00:00.000Z"
|
|
16597
|
+
},
|
|
16598
|
+
"result": "deleted"
|
|
16599
|
+
}
|
|
16600
|
+
}
|
|
16601
|
+
}
|
|
16602
|
+
}
|
|
16603
|
+
}
|
|
16604
|
+
},
|
|
16605
|
+
"400": {
|
|
16606
|
+
"description": "Request validation failed. The body, query, or path parameters did not match the operation's schema.",
|
|
16607
|
+
"content": {
|
|
16608
|
+
"application/json": {
|
|
16609
|
+
"schema": {
|
|
16610
|
+
"type": "object",
|
|
16611
|
+
"properties": {
|
|
16612
|
+
"error": {
|
|
16613
|
+
"type": "object",
|
|
16614
|
+
"properties": {
|
|
16615
|
+
"code": {
|
|
16616
|
+
"type": "string"
|
|
16617
|
+
},
|
|
16618
|
+
"message": {
|
|
16619
|
+
"type": "string"
|
|
16620
|
+
}
|
|
16621
|
+
},
|
|
16622
|
+
"required": [
|
|
16623
|
+
"code",
|
|
16624
|
+
"message"
|
|
16625
|
+
]
|
|
16626
|
+
}
|
|
16627
|
+
},
|
|
16628
|
+
"required": [
|
|
16629
|
+
"error"
|
|
16630
|
+
]
|
|
16631
|
+
},
|
|
16632
|
+
"examples": {
|
|
16633
|
+
"validationError": {
|
|
16634
|
+
"summary": "Body failed schema validation",
|
|
16635
|
+
"value": {
|
|
16636
|
+
"error": {
|
|
16637
|
+
"code": "VALIDATION_ERROR",
|
|
16638
|
+
"message": "title must not be empty"
|
|
16639
|
+
}
|
|
16640
|
+
}
|
|
16641
|
+
}
|
|
16642
|
+
}
|
|
16643
|
+
}
|
|
16644
|
+
}
|
|
16645
|
+
},
|
|
16646
|
+
"401": {
|
|
16647
|
+
"description": "Authentication is required but missing or invalid. The Bearer token (API key or OAuth access token) was absent, malformed, or rejected.",
|
|
16648
|
+
"content": {
|
|
16649
|
+
"application/json": {
|
|
16650
|
+
"schema": {
|
|
16651
|
+
"type": "object",
|
|
16652
|
+
"properties": {
|
|
16653
|
+
"error": {
|
|
16654
|
+
"type": "object",
|
|
16655
|
+
"properties": {
|
|
16656
|
+
"code": {
|
|
16657
|
+
"type": "string"
|
|
16658
|
+
},
|
|
16659
|
+
"message": {
|
|
16660
|
+
"type": "string"
|
|
16661
|
+
}
|
|
16662
|
+
},
|
|
16663
|
+
"required": [
|
|
16664
|
+
"code",
|
|
16665
|
+
"message"
|
|
16666
|
+
]
|
|
16667
|
+
}
|
|
16668
|
+
},
|
|
16669
|
+
"required": [
|
|
16670
|
+
"error"
|
|
16671
|
+
]
|
|
16672
|
+
},
|
|
16673
|
+
"examples": {
|
|
16674
|
+
"authRequired": {
|
|
16675
|
+
"summary": "Missing Authorization header",
|
|
16676
|
+
"value": {
|
|
16677
|
+
"error": {
|
|
16678
|
+
"code": "AUTH_REQUIRED",
|
|
16679
|
+
"message": "missing bearer token"
|
|
16680
|
+
}
|
|
16681
|
+
}
|
|
16682
|
+
}
|
|
16683
|
+
}
|
|
16684
|
+
}
|
|
16685
|
+
}
|
|
16686
|
+
},
|
|
16687
|
+
"403": {
|
|
16688
|
+
"description": "The caller is authenticated but not permitted to perform this operation on the target resource.",
|
|
16689
|
+
"content": {
|
|
16690
|
+
"application/json": {
|
|
16691
|
+
"schema": {
|
|
16692
|
+
"type": "object",
|
|
16693
|
+
"properties": {
|
|
16694
|
+
"error": {
|
|
16695
|
+
"type": "object",
|
|
16696
|
+
"properties": {
|
|
16697
|
+
"code": {
|
|
16698
|
+
"type": "string"
|
|
16699
|
+
},
|
|
16700
|
+
"message": {
|
|
16701
|
+
"type": "string"
|
|
16702
|
+
}
|
|
16703
|
+
},
|
|
16704
|
+
"required": [
|
|
16705
|
+
"code",
|
|
16706
|
+
"message"
|
|
16707
|
+
]
|
|
16708
|
+
}
|
|
16709
|
+
},
|
|
16710
|
+
"required": [
|
|
16711
|
+
"error"
|
|
16712
|
+
]
|
|
16713
|
+
},
|
|
16714
|
+
"examples": {
|
|
16715
|
+
"forbidden": {
|
|
16716
|
+
"summary": "Caller does not own the resource",
|
|
16717
|
+
"value": {
|
|
16718
|
+
"error": {
|
|
16719
|
+
"code": "FORBIDDEN",
|
|
16720
|
+
"message": "not allowed"
|
|
16721
|
+
}
|
|
16722
|
+
}
|
|
16723
|
+
}
|
|
16724
|
+
}
|
|
16725
|
+
}
|
|
16726
|
+
}
|
|
16727
|
+
},
|
|
16728
|
+
"404": {
|
|
16729
|
+
"description": "The target resource does not exist or is not visible to the caller. Soft-deleted resources are treated as not found unless an `include_deleted` flag is set.",
|
|
16730
|
+
"content": {
|
|
16731
|
+
"application/json": {
|
|
16732
|
+
"schema": {
|
|
16733
|
+
"type": "object",
|
|
16734
|
+
"properties": {
|
|
16735
|
+
"error": {
|
|
16736
|
+
"type": "object",
|
|
16737
|
+
"properties": {
|
|
16738
|
+
"code": {
|
|
16739
|
+
"type": "string"
|
|
16740
|
+
},
|
|
16741
|
+
"message": {
|
|
16742
|
+
"type": "string"
|
|
16743
|
+
}
|
|
16744
|
+
},
|
|
16745
|
+
"required": [
|
|
16746
|
+
"code",
|
|
16747
|
+
"message"
|
|
16748
|
+
]
|
|
16749
|
+
}
|
|
16750
|
+
},
|
|
16751
|
+
"required": [
|
|
16752
|
+
"error"
|
|
16753
|
+
]
|
|
16754
|
+
},
|
|
16755
|
+
"examples": {
|
|
16756
|
+
"notFound": {
|
|
16757
|
+
"summary": "Resource id is unknown to the service",
|
|
16758
|
+
"value": {
|
|
16759
|
+
"error": {
|
|
16760
|
+
"code": "NOT_FOUND",
|
|
16761
|
+
"message": "todo not found"
|
|
16762
|
+
}
|
|
16763
|
+
}
|
|
16764
|
+
}
|
|
16765
|
+
}
|
|
16766
|
+
}
|
|
16767
|
+
}
|
|
16768
|
+
},
|
|
16769
|
+
"409": {
|
|
16770
|
+
"description": "Optimistic-lock conflict. The supplied `expected_version` does not match the server's current version. Refetch the resource and retry.",
|
|
16771
|
+
"content": {
|
|
16772
|
+
"application/json": {
|
|
16773
|
+
"schema": {
|
|
16774
|
+
"type": "object",
|
|
16775
|
+
"properties": {
|
|
16776
|
+
"error": {
|
|
16777
|
+
"type": "object",
|
|
16778
|
+
"properties": {
|
|
16779
|
+
"code": {
|
|
16780
|
+
"type": "string"
|
|
16781
|
+
},
|
|
16782
|
+
"message": {
|
|
16783
|
+
"type": "string"
|
|
16784
|
+
}
|
|
16785
|
+
},
|
|
16786
|
+
"required": [
|
|
16787
|
+
"code",
|
|
16788
|
+
"message"
|
|
16789
|
+
]
|
|
16790
|
+
}
|
|
16791
|
+
},
|
|
16792
|
+
"required": [
|
|
16793
|
+
"error"
|
|
16794
|
+
]
|
|
16795
|
+
},
|
|
16796
|
+
"examples": {
|
|
16797
|
+
"versionConflict": {
|
|
16798
|
+
"summary": "expected_version does not match server version",
|
|
16799
|
+
"value": {
|
|
16800
|
+
"error": {
|
|
16801
|
+
"code": "VERSION_CONFLICT",
|
|
16802
|
+
"message": "expected_version 3 but current is 4"
|
|
16803
|
+
}
|
|
16804
|
+
}
|
|
16805
|
+
}
|
|
16806
|
+
}
|
|
16807
|
+
}
|
|
16808
|
+
}
|
|
16809
|
+
},
|
|
16810
|
+
"429": {
|
|
16811
|
+
"description": "Rate limit exceeded. Use the HTTP `Retry-After` header for machine-readable retry timing.",
|
|
16812
|
+
"content": {
|
|
16813
|
+
"application/json": {
|
|
16814
|
+
"schema": {
|
|
16815
|
+
"type": "object",
|
|
16816
|
+
"properties": {
|
|
16817
|
+
"error": {
|
|
16818
|
+
"type": "object",
|
|
16819
|
+
"properties": {
|
|
16820
|
+
"code": {
|
|
16821
|
+
"type": "string"
|
|
16822
|
+
},
|
|
16823
|
+
"message": {
|
|
16824
|
+
"type": "string"
|
|
16825
|
+
}
|
|
16826
|
+
},
|
|
16827
|
+
"required": [
|
|
16828
|
+
"code",
|
|
16829
|
+
"message"
|
|
16830
|
+
]
|
|
16831
|
+
}
|
|
16832
|
+
},
|
|
16833
|
+
"required": [
|
|
16834
|
+
"error"
|
|
16835
|
+
]
|
|
16836
|
+
},
|
|
16837
|
+
"examples": {
|
|
16838
|
+
"rateLimited": {
|
|
16839
|
+
"summary": "Per-key rate limit hit",
|
|
16840
|
+
"value": {
|
|
16841
|
+
"error": {
|
|
16842
|
+
"code": "RATE_LIMITED",
|
|
16843
|
+
"message": "Too many requests, please retry after 60 seconds."
|
|
16844
|
+
}
|
|
16845
|
+
}
|
|
16846
|
+
}
|
|
16847
|
+
}
|
|
16848
|
+
}
|
|
16849
|
+
}
|
|
16850
|
+
},
|
|
16851
|
+
"500": {
|
|
16852
|
+
"description": "Unhandled server error. The request was well-formed but the service failed unexpectedly. Safe to retry idempotent operations.",
|
|
16853
|
+
"content": {
|
|
16854
|
+
"application/json": {
|
|
16855
|
+
"schema": {
|
|
16856
|
+
"type": "object",
|
|
16857
|
+
"properties": {
|
|
16858
|
+
"error": {
|
|
16859
|
+
"type": "object",
|
|
16860
|
+
"properties": {
|
|
16861
|
+
"code": {
|
|
16862
|
+
"type": "string"
|
|
16863
|
+
},
|
|
16864
|
+
"message": {
|
|
16865
|
+
"type": "string"
|
|
16866
|
+
}
|
|
16867
|
+
},
|
|
16868
|
+
"required": [
|
|
16869
|
+
"code",
|
|
16870
|
+
"message"
|
|
16871
|
+
]
|
|
16872
|
+
}
|
|
16873
|
+
},
|
|
16874
|
+
"required": [
|
|
16875
|
+
"error"
|
|
16876
|
+
]
|
|
16877
|
+
},
|
|
16878
|
+
"examples": {
|
|
16879
|
+
"internalError": {
|
|
16880
|
+
"summary": "Unhandled exception",
|
|
16881
|
+
"value": {
|
|
16882
|
+
"error": {
|
|
16883
|
+
"code": "INTERNAL_ERROR",
|
|
16884
|
+
"message": "internal error"
|
|
16885
|
+
}
|
|
16886
|
+
}
|
|
16887
|
+
}
|
|
16888
|
+
}
|
|
16889
|
+
}
|
|
16890
|
+
}
|
|
16891
|
+
}
|
|
16892
|
+
}
|
|
16893
|
+
}
|
|
16894
|
+
},
|
|
16895
|
+
"/drive/libraries/{id}": {
|
|
16896
|
+
"delete": {
|
|
16897
|
+
"operationId": "drive_library_delete",
|
|
16898
|
+
"tags": [
|
|
16899
|
+
"DriveLibraries"
|
|
16900
|
+
],
|
|
16901
|
+
"summary": "Delete a drive library",
|
|
16902
|
+
"description": "Soft-delete an empty library using optimistic version locking.",
|
|
16903
|
+
"security": [
|
|
16904
|
+
{
|
|
16905
|
+
"bearerAuth": []
|
|
16906
|
+
}
|
|
16907
|
+
],
|
|
16908
|
+
"parameters": [
|
|
16909
|
+
{
|
|
16910
|
+
"name": "x-cb-drive",
|
|
16911
|
+
"in": "header",
|
|
16912
|
+
"required": false,
|
|
16913
|
+
"description": "Optional opaque consistency bookmark returned by a previous drive response. Send it back unchanged to continue read-after-write consistency for drive D1 data.",
|
|
16914
|
+
"schema": {
|
|
16915
|
+
"type": "string"
|
|
16916
|
+
},
|
|
16917
|
+
"example": "opaque-consistency-bookmark"
|
|
16918
|
+
},
|
|
16919
|
+
{
|
|
16920
|
+
"schema": {
|
|
16921
|
+
"type": "string"
|
|
16922
|
+
},
|
|
16923
|
+
"required": true,
|
|
16924
|
+
"name": "id",
|
|
16925
|
+
"in": "path"
|
|
16926
|
+
}
|
|
16927
|
+
],
|
|
16928
|
+
"x-codeSamples": [
|
|
16929
|
+
{
|
|
16930
|
+
"lang": "shell",
|
|
16931
|
+
"label": "curl",
|
|
16932
|
+
"source": "curl -X DELETE https://api.wspc.ai/drive/libraries/lib_01HW3K4N9V5G6Z8C2Q7B1Y0M3F -H \"Authorization: Bearer $WSPC_API_KEY\" -H \"Content-Type: application/json\" -d '{\"expected_version\":1}'"
|
|
16933
|
+
}
|
|
16934
|
+
],
|
|
16935
|
+
"requestBody": {
|
|
16936
|
+
"content": {
|
|
16937
|
+
"application/json": {
|
|
16938
|
+
"schema": {
|
|
16939
|
+
"$ref": "#/components/schemas/DeleteDriveLibraryBody"
|
|
16940
|
+
},
|
|
16941
|
+
"examples": {
|
|
16942
|
+
"delete": {
|
|
16943
|
+
"value": {
|
|
16944
|
+
"expected_version": 1
|
|
16945
|
+
}
|
|
16946
|
+
}
|
|
16947
|
+
}
|
|
16948
|
+
}
|
|
16949
|
+
}
|
|
16950
|
+
},
|
|
16951
|
+
"responses": {
|
|
16952
|
+
"200": {
|
|
16953
|
+
"description": "Deleted",
|
|
16954
|
+
"headers": {
|
|
16955
|
+
"x-cb-drive": {
|
|
16956
|
+
"description": "Opaque consistency bookmark for the latest drive database position observed by this request. Store and send it on the next drive request to continue read-after-write consistency.",
|
|
16957
|
+
"schema": {
|
|
16958
|
+
"type": "string"
|
|
16959
|
+
}
|
|
16960
|
+
}
|
|
16961
|
+
},
|
|
16962
|
+
"content": {
|
|
16963
|
+
"application/json": {
|
|
16964
|
+
"schema": {
|
|
16965
|
+
"$ref": "#/components/schemas/DriveLibrary"
|
|
16966
|
+
},
|
|
16967
|
+
"examples": {
|
|
16968
|
+
"library": {
|
|
16969
|
+
"value": {
|
|
16970
|
+
"id": "lib_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
16971
|
+
"org_id": "org_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
16972
|
+
"created_by_user_id": "usr_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
16973
|
+
"name": "Team docs",
|
|
16974
|
+
"version": 1,
|
|
16975
|
+
"file_count": 0,
|
|
16976
|
+
"storage_bytes": 0,
|
|
16977
|
+
"created_at": 1781957145290,
|
|
16978
|
+
"updated_at": 1781957145290
|
|
16979
|
+
}
|
|
16980
|
+
}
|
|
16981
|
+
}
|
|
16982
|
+
}
|
|
16983
|
+
}
|
|
16984
|
+
},
|
|
16985
|
+
"400": {
|
|
16986
|
+
"description": "Request validation failed. The body, query, or path parameters did not match the operation's schema.",
|
|
16987
|
+
"content": {
|
|
16988
|
+
"application/json": {
|
|
16989
|
+
"schema": {
|
|
16990
|
+
"type": "object",
|
|
16991
|
+
"properties": {
|
|
16992
|
+
"error": {
|
|
16993
|
+
"type": "object",
|
|
16994
|
+
"properties": {
|
|
16995
|
+
"code": {
|
|
16996
|
+
"type": "string"
|
|
16997
|
+
},
|
|
16998
|
+
"message": {
|
|
16999
|
+
"type": "string"
|
|
17000
|
+
}
|
|
17001
|
+
},
|
|
17002
|
+
"required": [
|
|
17003
|
+
"code",
|
|
17004
|
+
"message"
|
|
17005
|
+
]
|
|
17006
|
+
}
|
|
17007
|
+
},
|
|
17008
|
+
"required": [
|
|
17009
|
+
"error"
|
|
17010
|
+
]
|
|
17011
|
+
},
|
|
17012
|
+
"examples": {
|
|
17013
|
+
"validationError": {
|
|
17014
|
+
"summary": "Body failed schema validation",
|
|
17015
|
+
"value": {
|
|
17016
|
+
"error": {
|
|
17017
|
+
"code": "VALIDATION_ERROR",
|
|
17018
|
+
"message": "title must not be empty"
|
|
17019
|
+
}
|
|
17020
|
+
}
|
|
17021
|
+
}
|
|
17022
|
+
}
|
|
17023
|
+
}
|
|
17024
|
+
}
|
|
17025
|
+
},
|
|
17026
|
+
"401": {
|
|
17027
|
+
"description": "Authentication is required but missing or invalid. The Bearer token (API key or OAuth access token) was absent, malformed, or rejected.",
|
|
17028
|
+
"content": {
|
|
17029
|
+
"application/json": {
|
|
17030
|
+
"schema": {
|
|
17031
|
+
"type": "object",
|
|
17032
|
+
"properties": {
|
|
17033
|
+
"error": {
|
|
17034
|
+
"type": "object",
|
|
17035
|
+
"properties": {
|
|
17036
|
+
"code": {
|
|
17037
|
+
"type": "string"
|
|
17038
|
+
},
|
|
17039
|
+
"message": {
|
|
17040
|
+
"type": "string"
|
|
17041
|
+
}
|
|
17042
|
+
},
|
|
17043
|
+
"required": [
|
|
17044
|
+
"code",
|
|
17045
|
+
"message"
|
|
17046
|
+
]
|
|
17047
|
+
}
|
|
17048
|
+
},
|
|
17049
|
+
"required": [
|
|
17050
|
+
"error"
|
|
17051
|
+
]
|
|
17052
|
+
},
|
|
17053
|
+
"examples": {
|
|
17054
|
+
"authRequired": {
|
|
17055
|
+
"summary": "Missing Authorization header",
|
|
17056
|
+
"value": {
|
|
17057
|
+
"error": {
|
|
17058
|
+
"code": "AUTH_REQUIRED",
|
|
17059
|
+
"message": "missing bearer token"
|
|
17060
|
+
}
|
|
17061
|
+
}
|
|
17062
|
+
}
|
|
17063
|
+
}
|
|
17064
|
+
}
|
|
17065
|
+
}
|
|
17066
|
+
},
|
|
17067
|
+
"403": {
|
|
17068
|
+
"description": "The caller is authenticated but not permitted to perform this operation on the target resource.",
|
|
17069
|
+
"content": {
|
|
17070
|
+
"application/json": {
|
|
17071
|
+
"schema": {
|
|
17072
|
+
"type": "object",
|
|
17073
|
+
"properties": {
|
|
17074
|
+
"error": {
|
|
17075
|
+
"type": "object",
|
|
17076
|
+
"properties": {
|
|
17077
|
+
"code": {
|
|
17078
|
+
"type": "string"
|
|
17079
|
+
},
|
|
17080
|
+
"message": {
|
|
17081
|
+
"type": "string"
|
|
17082
|
+
}
|
|
17083
|
+
},
|
|
17084
|
+
"required": [
|
|
17085
|
+
"code",
|
|
17086
|
+
"message"
|
|
17087
|
+
]
|
|
17088
|
+
}
|
|
17089
|
+
},
|
|
17090
|
+
"required": [
|
|
17091
|
+
"error"
|
|
17092
|
+
]
|
|
17093
|
+
},
|
|
17094
|
+
"examples": {
|
|
17095
|
+
"forbidden": {
|
|
17096
|
+
"summary": "Caller does not own the resource",
|
|
17097
|
+
"value": {
|
|
17098
|
+
"error": {
|
|
17099
|
+
"code": "FORBIDDEN",
|
|
17100
|
+
"message": "not allowed"
|
|
17101
|
+
}
|
|
17102
|
+
}
|
|
17103
|
+
}
|
|
17104
|
+
}
|
|
17105
|
+
}
|
|
17106
|
+
}
|
|
17107
|
+
},
|
|
17108
|
+
"404": {
|
|
17109
|
+
"description": "The target resource does not exist or is not visible to the caller. Soft-deleted resources are treated as not found unless an `include_deleted` flag is set.",
|
|
17110
|
+
"content": {
|
|
17111
|
+
"application/json": {
|
|
17112
|
+
"schema": {
|
|
17113
|
+
"type": "object",
|
|
17114
|
+
"properties": {
|
|
17115
|
+
"error": {
|
|
17116
|
+
"type": "object",
|
|
17117
|
+
"properties": {
|
|
17118
|
+
"code": {
|
|
17119
|
+
"type": "string"
|
|
17120
|
+
},
|
|
17121
|
+
"message": {
|
|
17122
|
+
"type": "string"
|
|
17123
|
+
}
|
|
17124
|
+
},
|
|
17125
|
+
"required": [
|
|
17126
|
+
"code",
|
|
17127
|
+
"message"
|
|
17128
|
+
]
|
|
17129
|
+
}
|
|
17130
|
+
},
|
|
17131
|
+
"required": [
|
|
17132
|
+
"error"
|
|
17133
|
+
]
|
|
17134
|
+
},
|
|
17135
|
+
"examples": {
|
|
17136
|
+
"notFound": {
|
|
17137
|
+
"summary": "Resource id is unknown to the service",
|
|
17138
|
+
"value": {
|
|
17139
|
+
"error": {
|
|
17140
|
+
"code": "NOT_FOUND",
|
|
17141
|
+
"message": "todo not found"
|
|
17142
|
+
}
|
|
17143
|
+
}
|
|
17144
|
+
}
|
|
17145
|
+
}
|
|
17146
|
+
}
|
|
17147
|
+
}
|
|
17148
|
+
},
|
|
17149
|
+
"409": {
|
|
17150
|
+
"description": "Optimistic-lock conflict. The supplied `expected_version` does not match the server's current version. Refetch the resource and retry.",
|
|
17151
|
+
"content": {
|
|
17152
|
+
"application/json": {
|
|
17153
|
+
"schema": {
|
|
17154
|
+
"type": "object",
|
|
17155
|
+
"properties": {
|
|
17156
|
+
"error": {
|
|
17157
|
+
"type": "object",
|
|
17158
|
+
"properties": {
|
|
17159
|
+
"code": {
|
|
17160
|
+
"type": "string"
|
|
17161
|
+
},
|
|
17162
|
+
"message": {
|
|
17163
|
+
"type": "string"
|
|
17164
|
+
}
|
|
17165
|
+
},
|
|
17166
|
+
"required": [
|
|
17167
|
+
"code",
|
|
17168
|
+
"message"
|
|
17169
|
+
]
|
|
17170
|
+
}
|
|
17171
|
+
},
|
|
17172
|
+
"required": [
|
|
17173
|
+
"error"
|
|
17174
|
+
]
|
|
17175
|
+
},
|
|
17176
|
+
"examples": {
|
|
17177
|
+
"versionConflict": {
|
|
17178
|
+
"summary": "expected_version does not match server version",
|
|
17179
|
+
"value": {
|
|
17180
|
+
"error": {
|
|
17181
|
+
"code": "VERSION_CONFLICT",
|
|
17182
|
+
"message": "expected_version 3 but current is 4"
|
|
17183
|
+
}
|
|
17184
|
+
}
|
|
17185
|
+
}
|
|
17186
|
+
}
|
|
17187
|
+
}
|
|
17188
|
+
}
|
|
17189
|
+
},
|
|
17190
|
+
"429": {
|
|
17191
|
+
"description": "Rate limit exceeded. Use the HTTP `Retry-After` header for machine-readable retry timing.",
|
|
17192
|
+
"content": {
|
|
17193
|
+
"application/json": {
|
|
17194
|
+
"schema": {
|
|
17195
|
+
"type": "object",
|
|
17196
|
+
"properties": {
|
|
17197
|
+
"error": {
|
|
17198
|
+
"type": "object",
|
|
17199
|
+
"properties": {
|
|
17200
|
+
"code": {
|
|
17201
|
+
"type": "string"
|
|
17202
|
+
},
|
|
17203
|
+
"message": {
|
|
17204
|
+
"type": "string"
|
|
17205
|
+
}
|
|
17206
|
+
},
|
|
17207
|
+
"required": [
|
|
17208
|
+
"code",
|
|
17209
|
+
"message"
|
|
17210
|
+
]
|
|
17211
|
+
}
|
|
17212
|
+
},
|
|
17213
|
+
"required": [
|
|
17214
|
+
"error"
|
|
17215
|
+
]
|
|
17216
|
+
},
|
|
17217
|
+
"examples": {
|
|
17218
|
+
"rateLimited": {
|
|
17219
|
+
"summary": "Per-key rate limit hit",
|
|
17220
|
+
"value": {
|
|
17221
|
+
"error": {
|
|
17222
|
+
"code": "RATE_LIMITED",
|
|
17223
|
+
"message": "Too many requests, please retry after 60 seconds."
|
|
17224
|
+
}
|
|
17225
|
+
}
|
|
17226
|
+
}
|
|
17227
|
+
}
|
|
17228
|
+
}
|
|
17229
|
+
}
|
|
17230
|
+
},
|
|
17231
|
+
"500": {
|
|
17232
|
+
"description": "Unhandled server error. The request was well-formed but the service failed unexpectedly. Safe to retry idempotent operations.",
|
|
17233
|
+
"content": {
|
|
17234
|
+
"application/json": {
|
|
17235
|
+
"schema": {
|
|
17236
|
+
"type": "object",
|
|
17237
|
+
"properties": {
|
|
17238
|
+
"error": {
|
|
17239
|
+
"type": "object",
|
|
17240
|
+
"properties": {
|
|
17241
|
+
"code": {
|
|
17242
|
+
"type": "string"
|
|
17243
|
+
},
|
|
17244
|
+
"message": {
|
|
17245
|
+
"type": "string"
|
|
17246
|
+
}
|
|
17247
|
+
},
|
|
17248
|
+
"required": [
|
|
17249
|
+
"code",
|
|
17250
|
+
"message"
|
|
17251
|
+
]
|
|
17252
|
+
}
|
|
17253
|
+
},
|
|
17254
|
+
"required": [
|
|
17255
|
+
"error"
|
|
17256
|
+
]
|
|
17257
|
+
},
|
|
17258
|
+
"examples": {
|
|
17259
|
+
"internalError": {
|
|
17260
|
+
"summary": "Unhandled exception",
|
|
17261
|
+
"value": {
|
|
17262
|
+
"error": {
|
|
17263
|
+
"code": "INTERNAL_ERROR",
|
|
17264
|
+
"message": "internal error"
|
|
17265
|
+
}
|
|
17266
|
+
}
|
|
17267
|
+
}
|
|
17268
|
+
}
|
|
17269
|
+
}
|
|
17270
|
+
}
|
|
17271
|
+
}
|
|
17272
|
+
}
|
|
17273
|
+
},
|
|
17274
|
+
"get": {
|
|
17275
|
+
"operationId": "drive_library_get",
|
|
17276
|
+
"tags": [
|
|
17277
|
+
"DriveLibraries"
|
|
17278
|
+
],
|
|
17279
|
+
"summary": "Get a drive library",
|
|
17280
|
+
"description": "Fetch one active library by id. Cross-org and soft-deleted rows are hidden.",
|
|
17281
|
+
"security": [
|
|
17282
|
+
{
|
|
17283
|
+
"bearerAuth": []
|
|
17284
|
+
}
|
|
17285
|
+
],
|
|
17286
|
+
"parameters": [
|
|
17287
|
+
{
|
|
17288
|
+
"name": "x-cb-drive",
|
|
17289
|
+
"in": "header",
|
|
17290
|
+
"required": false,
|
|
17291
|
+
"description": "Optional opaque consistency bookmark returned by a previous drive response. Send it back unchanged to continue read-after-write consistency for drive D1 data.",
|
|
17292
|
+
"schema": {
|
|
17293
|
+
"type": "string"
|
|
17294
|
+
},
|
|
17295
|
+
"example": "opaque-consistency-bookmark"
|
|
17296
|
+
},
|
|
17297
|
+
{
|
|
17298
|
+
"schema": {
|
|
17299
|
+
"type": "string"
|
|
17300
|
+
},
|
|
17301
|
+
"required": true,
|
|
17302
|
+
"name": "id",
|
|
17303
|
+
"in": "path"
|
|
17304
|
+
}
|
|
17305
|
+
],
|
|
17306
|
+
"x-codeSamples": [
|
|
17307
|
+
{
|
|
17308
|
+
"lang": "shell",
|
|
17309
|
+
"label": "curl",
|
|
17310
|
+
"source": "curl https://api.wspc.ai/drive/libraries/lib_01HW3K4N9V5G6Z8C2Q7B1Y0M3F -H \"Authorization: Bearer $WSPC_API_KEY\""
|
|
17311
|
+
}
|
|
17312
|
+
],
|
|
17313
|
+
"responses": {
|
|
17314
|
+
"200": {
|
|
17315
|
+
"description": "Library",
|
|
17316
|
+
"headers": {
|
|
17317
|
+
"x-cb-drive": {
|
|
17318
|
+
"description": "Opaque consistency bookmark for the latest drive database position observed by this request. Store and send it on the next drive request to continue read-after-write consistency.",
|
|
17319
|
+
"schema": {
|
|
17320
|
+
"type": "string"
|
|
17321
|
+
}
|
|
17322
|
+
}
|
|
17323
|
+
},
|
|
17324
|
+
"content": {
|
|
17325
|
+
"application/json": {
|
|
17326
|
+
"schema": {
|
|
17327
|
+
"$ref": "#/components/schemas/DriveLibrary"
|
|
17328
|
+
},
|
|
17329
|
+
"examples": {
|
|
17330
|
+
"library": {
|
|
17331
|
+
"value": {
|
|
17332
|
+
"id": "lib_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
17333
|
+
"org_id": "org_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
17334
|
+
"created_by_user_id": "usr_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
17335
|
+
"name": "Team docs",
|
|
17336
|
+
"version": 1,
|
|
17337
|
+
"file_count": 0,
|
|
17338
|
+
"storage_bytes": 0,
|
|
17339
|
+
"created_at": 1781957145290,
|
|
17340
|
+
"updated_at": 1781957145290
|
|
17341
|
+
}
|
|
17342
|
+
}
|
|
17343
|
+
}
|
|
17344
|
+
}
|
|
17345
|
+
}
|
|
17346
|
+
},
|
|
17347
|
+
"400": {
|
|
17348
|
+
"description": "Request validation failed. The body, query, or path parameters did not match the operation's schema.",
|
|
17349
|
+
"content": {
|
|
17350
|
+
"application/json": {
|
|
17351
|
+
"schema": {
|
|
17352
|
+
"type": "object",
|
|
17353
|
+
"properties": {
|
|
17354
|
+
"error": {
|
|
17355
|
+
"type": "object",
|
|
17356
|
+
"properties": {
|
|
17357
|
+
"code": {
|
|
17358
|
+
"type": "string"
|
|
17359
|
+
},
|
|
17360
|
+
"message": {
|
|
17361
|
+
"type": "string"
|
|
17362
|
+
}
|
|
17363
|
+
},
|
|
17364
|
+
"required": [
|
|
17365
|
+
"code",
|
|
17366
|
+
"message"
|
|
17367
|
+
]
|
|
17368
|
+
}
|
|
17369
|
+
},
|
|
17370
|
+
"required": [
|
|
17371
|
+
"error"
|
|
17372
|
+
]
|
|
17373
|
+
},
|
|
17374
|
+
"examples": {
|
|
17375
|
+
"validationError": {
|
|
17376
|
+
"summary": "Body failed schema validation",
|
|
17377
|
+
"value": {
|
|
17378
|
+
"error": {
|
|
17379
|
+
"code": "VALIDATION_ERROR",
|
|
17380
|
+
"message": "title must not be empty"
|
|
17381
|
+
}
|
|
17382
|
+
}
|
|
17383
|
+
}
|
|
17384
|
+
}
|
|
17385
|
+
}
|
|
17386
|
+
}
|
|
17387
|
+
},
|
|
17388
|
+
"401": {
|
|
17389
|
+
"description": "Authentication is required but missing or invalid. The Bearer token (API key or OAuth access token) was absent, malformed, or rejected.",
|
|
17390
|
+
"content": {
|
|
17391
|
+
"application/json": {
|
|
17392
|
+
"schema": {
|
|
17393
|
+
"type": "object",
|
|
17394
|
+
"properties": {
|
|
17395
|
+
"error": {
|
|
17396
|
+
"type": "object",
|
|
17397
|
+
"properties": {
|
|
17398
|
+
"code": {
|
|
17399
|
+
"type": "string"
|
|
17400
|
+
},
|
|
17401
|
+
"message": {
|
|
17402
|
+
"type": "string"
|
|
17403
|
+
}
|
|
17404
|
+
},
|
|
17405
|
+
"required": [
|
|
17406
|
+
"code",
|
|
17407
|
+
"message"
|
|
17408
|
+
]
|
|
17409
|
+
}
|
|
17410
|
+
},
|
|
17411
|
+
"required": [
|
|
17412
|
+
"error"
|
|
17413
|
+
]
|
|
17414
|
+
},
|
|
17415
|
+
"examples": {
|
|
17416
|
+
"authRequired": {
|
|
17417
|
+
"summary": "Missing Authorization header",
|
|
17418
|
+
"value": {
|
|
17419
|
+
"error": {
|
|
17420
|
+
"code": "AUTH_REQUIRED",
|
|
17421
|
+
"message": "missing bearer token"
|
|
17422
|
+
}
|
|
17423
|
+
}
|
|
17424
|
+
}
|
|
17425
|
+
}
|
|
17426
|
+
}
|
|
17427
|
+
}
|
|
17428
|
+
},
|
|
17429
|
+
"403": {
|
|
17430
|
+
"description": "The caller is authenticated but not permitted to perform this operation on the target resource.",
|
|
17431
|
+
"content": {
|
|
17432
|
+
"application/json": {
|
|
17433
|
+
"schema": {
|
|
17434
|
+
"type": "object",
|
|
17435
|
+
"properties": {
|
|
17436
|
+
"error": {
|
|
17437
|
+
"type": "object",
|
|
17438
|
+
"properties": {
|
|
17439
|
+
"code": {
|
|
17440
|
+
"type": "string"
|
|
17441
|
+
},
|
|
17442
|
+
"message": {
|
|
17443
|
+
"type": "string"
|
|
17444
|
+
}
|
|
17445
|
+
},
|
|
17446
|
+
"required": [
|
|
17447
|
+
"code",
|
|
17448
|
+
"message"
|
|
17449
|
+
]
|
|
17450
|
+
}
|
|
17451
|
+
},
|
|
17452
|
+
"required": [
|
|
17453
|
+
"error"
|
|
17454
|
+
]
|
|
17455
|
+
},
|
|
17456
|
+
"examples": {
|
|
17457
|
+
"forbidden": {
|
|
17458
|
+
"summary": "Caller does not own the resource",
|
|
17459
|
+
"value": {
|
|
17460
|
+
"error": {
|
|
17461
|
+
"code": "FORBIDDEN",
|
|
17462
|
+
"message": "not allowed"
|
|
17463
|
+
}
|
|
17464
|
+
}
|
|
17465
|
+
}
|
|
17466
|
+
}
|
|
17467
|
+
}
|
|
17468
|
+
}
|
|
17469
|
+
},
|
|
17470
|
+
"404": {
|
|
17471
|
+
"description": "The target resource does not exist or is not visible to the caller. Soft-deleted resources are treated as not found unless an `include_deleted` flag is set.",
|
|
17472
|
+
"content": {
|
|
17473
|
+
"application/json": {
|
|
17474
|
+
"schema": {
|
|
17475
|
+
"type": "object",
|
|
17476
|
+
"properties": {
|
|
17477
|
+
"error": {
|
|
17478
|
+
"type": "object",
|
|
17479
|
+
"properties": {
|
|
17480
|
+
"code": {
|
|
17481
|
+
"type": "string"
|
|
17482
|
+
},
|
|
17483
|
+
"message": {
|
|
17484
|
+
"type": "string"
|
|
17485
|
+
}
|
|
17486
|
+
},
|
|
17487
|
+
"required": [
|
|
17488
|
+
"code",
|
|
17489
|
+
"message"
|
|
17490
|
+
]
|
|
17491
|
+
}
|
|
17492
|
+
},
|
|
17493
|
+
"required": [
|
|
17494
|
+
"error"
|
|
17495
|
+
]
|
|
17496
|
+
},
|
|
17497
|
+
"examples": {
|
|
17498
|
+
"notFound": {
|
|
17499
|
+
"summary": "Resource id is unknown to the service",
|
|
17500
|
+
"value": {
|
|
17501
|
+
"error": {
|
|
17502
|
+
"code": "NOT_FOUND",
|
|
17503
|
+
"message": "todo not found"
|
|
17504
|
+
}
|
|
17505
|
+
}
|
|
17506
|
+
}
|
|
17507
|
+
}
|
|
17508
|
+
}
|
|
17509
|
+
}
|
|
17510
|
+
},
|
|
17511
|
+
"409": {
|
|
17512
|
+
"description": "Optimistic-lock conflict. The supplied `expected_version` does not match the server's current version. Refetch the resource and retry.",
|
|
17513
|
+
"content": {
|
|
17514
|
+
"application/json": {
|
|
17515
|
+
"schema": {
|
|
17516
|
+
"type": "object",
|
|
17517
|
+
"properties": {
|
|
17518
|
+
"error": {
|
|
17519
|
+
"type": "object",
|
|
17520
|
+
"properties": {
|
|
17521
|
+
"code": {
|
|
17522
|
+
"type": "string"
|
|
17523
|
+
},
|
|
17524
|
+
"message": {
|
|
17525
|
+
"type": "string"
|
|
17526
|
+
}
|
|
17527
|
+
},
|
|
17528
|
+
"required": [
|
|
17529
|
+
"code",
|
|
17530
|
+
"message"
|
|
17531
|
+
]
|
|
17532
|
+
}
|
|
17533
|
+
},
|
|
17534
|
+
"required": [
|
|
17535
|
+
"error"
|
|
17536
|
+
]
|
|
17537
|
+
},
|
|
17538
|
+
"examples": {
|
|
17539
|
+
"versionConflict": {
|
|
17540
|
+
"summary": "expected_version does not match server version",
|
|
17541
|
+
"value": {
|
|
17542
|
+
"error": {
|
|
17543
|
+
"code": "VERSION_CONFLICT",
|
|
17544
|
+
"message": "expected_version 3 but current is 4"
|
|
17545
|
+
}
|
|
17546
|
+
}
|
|
17547
|
+
}
|
|
17548
|
+
}
|
|
17549
|
+
}
|
|
17550
|
+
}
|
|
17551
|
+
},
|
|
17552
|
+
"429": {
|
|
17553
|
+
"description": "Rate limit exceeded. Use the HTTP `Retry-After` header for machine-readable retry timing.",
|
|
17554
|
+
"content": {
|
|
17555
|
+
"application/json": {
|
|
17556
|
+
"schema": {
|
|
17557
|
+
"type": "object",
|
|
17558
|
+
"properties": {
|
|
17559
|
+
"error": {
|
|
17560
|
+
"type": "object",
|
|
17561
|
+
"properties": {
|
|
17562
|
+
"code": {
|
|
17563
|
+
"type": "string"
|
|
17564
|
+
},
|
|
17565
|
+
"message": {
|
|
17566
|
+
"type": "string"
|
|
17567
|
+
}
|
|
17568
|
+
},
|
|
17569
|
+
"required": [
|
|
17570
|
+
"code",
|
|
17571
|
+
"message"
|
|
17572
|
+
]
|
|
17573
|
+
}
|
|
17574
|
+
},
|
|
17575
|
+
"required": [
|
|
17576
|
+
"error"
|
|
17577
|
+
]
|
|
17578
|
+
},
|
|
17579
|
+
"examples": {
|
|
17580
|
+
"rateLimited": {
|
|
17581
|
+
"summary": "Per-key rate limit hit",
|
|
17582
|
+
"value": {
|
|
17583
|
+
"error": {
|
|
17584
|
+
"code": "RATE_LIMITED",
|
|
17585
|
+
"message": "Too many requests, please retry after 60 seconds."
|
|
17586
|
+
}
|
|
17587
|
+
}
|
|
17588
|
+
}
|
|
17589
|
+
}
|
|
17590
|
+
}
|
|
17591
|
+
}
|
|
17592
|
+
},
|
|
17593
|
+
"500": {
|
|
17594
|
+
"description": "Unhandled server error. The request was well-formed but the service failed unexpectedly. Safe to retry idempotent operations.",
|
|
17595
|
+
"content": {
|
|
17596
|
+
"application/json": {
|
|
17597
|
+
"schema": {
|
|
17598
|
+
"type": "object",
|
|
17599
|
+
"properties": {
|
|
17600
|
+
"error": {
|
|
17601
|
+
"type": "object",
|
|
17602
|
+
"properties": {
|
|
17603
|
+
"code": {
|
|
17604
|
+
"type": "string"
|
|
17605
|
+
},
|
|
17606
|
+
"message": {
|
|
17607
|
+
"type": "string"
|
|
17608
|
+
}
|
|
17609
|
+
},
|
|
17610
|
+
"required": [
|
|
17611
|
+
"code",
|
|
17612
|
+
"message"
|
|
17613
|
+
]
|
|
17614
|
+
}
|
|
17615
|
+
},
|
|
17616
|
+
"required": [
|
|
17617
|
+
"error"
|
|
17618
|
+
]
|
|
17619
|
+
},
|
|
17620
|
+
"examples": {
|
|
17621
|
+
"internalError": {
|
|
17622
|
+
"summary": "Unhandled exception",
|
|
17623
|
+
"value": {
|
|
17624
|
+
"error": {
|
|
17625
|
+
"code": "INTERNAL_ERROR",
|
|
17626
|
+
"message": "internal error"
|
|
17627
|
+
}
|
|
17628
|
+
}
|
|
17629
|
+
}
|
|
17630
|
+
}
|
|
17631
|
+
}
|
|
17632
|
+
}
|
|
17633
|
+
}
|
|
17634
|
+
}
|
|
17635
|
+
},
|
|
17636
|
+
"patch": {
|
|
17637
|
+
"operationId": "drive_library_update",
|
|
17638
|
+
"tags": [
|
|
17639
|
+
"DriveLibraries"
|
|
17640
|
+
],
|
|
17641
|
+
"summary": "Update a drive library",
|
|
17642
|
+
"description": "Rename a library using optimistic version locking.",
|
|
17643
|
+
"security": [
|
|
17644
|
+
{
|
|
17645
|
+
"bearerAuth": []
|
|
17646
|
+
}
|
|
17647
|
+
],
|
|
17648
|
+
"parameters": [
|
|
17649
|
+
{
|
|
17650
|
+
"name": "x-cb-drive",
|
|
17651
|
+
"in": "header",
|
|
17652
|
+
"required": false,
|
|
17653
|
+
"description": "Optional opaque consistency bookmark returned by a previous drive response. Send it back unchanged to continue read-after-write consistency for drive D1 data.",
|
|
17654
|
+
"schema": {
|
|
17655
|
+
"type": "string"
|
|
17656
|
+
},
|
|
17657
|
+
"example": "opaque-consistency-bookmark"
|
|
17658
|
+
},
|
|
17659
|
+
{
|
|
17660
|
+
"schema": {
|
|
17661
|
+
"type": "string"
|
|
17662
|
+
},
|
|
17663
|
+
"required": true,
|
|
17664
|
+
"name": "id",
|
|
17665
|
+
"in": "path"
|
|
17666
|
+
}
|
|
17667
|
+
],
|
|
17668
|
+
"x-codeSamples": [
|
|
17669
|
+
{
|
|
17670
|
+
"lang": "shell",
|
|
17671
|
+
"label": "curl",
|
|
17672
|
+
"source": "curl -X PATCH https://api.wspc.ai/drive/libraries/lib_01HW3K4N9V5G6Z8C2Q7B1Y0M3F -H \"Authorization: Bearer $WSPC_API_KEY\" -H \"Content-Type: application/json\" -d '{\"name\":\"Renamed\",\"expected_version\":1}'"
|
|
17673
|
+
}
|
|
17674
|
+
],
|
|
17675
|
+
"requestBody": {
|
|
17676
|
+
"content": {
|
|
17677
|
+
"application/json": {
|
|
17678
|
+
"schema": {
|
|
17679
|
+
"$ref": "#/components/schemas/UpdateDriveLibraryBody"
|
|
17680
|
+
},
|
|
17681
|
+
"examples": {
|
|
17682
|
+
"rename": {
|
|
17683
|
+
"value": {
|
|
17684
|
+
"name": "Renamed",
|
|
17685
|
+
"expected_version": 1
|
|
17686
|
+
}
|
|
17687
|
+
}
|
|
17688
|
+
}
|
|
17689
|
+
}
|
|
17690
|
+
}
|
|
17691
|
+
},
|
|
17692
|
+
"responses": {
|
|
17693
|
+
"200": {
|
|
17694
|
+
"description": "Updated",
|
|
17695
|
+
"headers": {
|
|
17696
|
+
"x-cb-drive": {
|
|
17697
|
+
"description": "Opaque consistency bookmark for the latest drive database position observed by this request. Store and send it on the next drive request to continue read-after-write consistency.",
|
|
17698
|
+
"schema": {
|
|
17699
|
+
"type": "string"
|
|
17700
|
+
}
|
|
17701
|
+
}
|
|
17702
|
+
},
|
|
17703
|
+
"content": {
|
|
17704
|
+
"application/json": {
|
|
17705
|
+
"schema": {
|
|
17706
|
+
"$ref": "#/components/schemas/DriveLibrary"
|
|
17707
|
+
},
|
|
17708
|
+
"examples": {
|
|
17709
|
+
"library": {
|
|
17710
|
+
"value": {
|
|
17711
|
+
"id": "lib_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
17712
|
+
"org_id": "org_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
17713
|
+
"created_by_user_id": "usr_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
17714
|
+
"name": "Team docs",
|
|
17715
|
+
"version": 1,
|
|
17716
|
+
"file_count": 0,
|
|
17717
|
+
"storage_bytes": 0,
|
|
17718
|
+
"created_at": 1781957145290,
|
|
17719
|
+
"updated_at": 1781957145290
|
|
17720
|
+
}
|
|
17721
|
+
}
|
|
17722
|
+
}
|
|
17723
|
+
}
|
|
17724
|
+
}
|
|
17725
|
+
},
|
|
17726
|
+
"400": {
|
|
17727
|
+
"description": "Request validation failed. The body, query, or path parameters did not match the operation's schema.",
|
|
17728
|
+
"content": {
|
|
17729
|
+
"application/json": {
|
|
17730
|
+
"schema": {
|
|
17731
|
+
"type": "object",
|
|
17732
|
+
"properties": {
|
|
17733
|
+
"error": {
|
|
17734
|
+
"type": "object",
|
|
17735
|
+
"properties": {
|
|
17736
|
+
"code": {
|
|
17737
|
+
"type": "string"
|
|
17738
|
+
},
|
|
17739
|
+
"message": {
|
|
17740
|
+
"type": "string"
|
|
17741
|
+
}
|
|
17742
|
+
},
|
|
17743
|
+
"required": [
|
|
17744
|
+
"code",
|
|
17745
|
+
"message"
|
|
17746
|
+
]
|
|
17747
|
+
}
|
|
17748
|
+
},
|
|
17749
|
+
"required": [
|
|
17750
|
+
"error"
|
|
17751
|
+
]
|
|
17752
|
+
},
|
|
17753
|
+
"examples": {
|
|
17754
|
+
"validationError": {
|
|
17755
|
+
"summary": "Body failed schema validation",
|
|
17756
|
+
"value": {
|
|
17757
|
+
"error": {
|
|
17758
|
+
"code": "VALIDATION_ERROR",
|
|
17759
|
+
"message": "title must not be empty"
|
|
17760
|
+
}
|
|
17761
|
+
}
|
|
17762
|
+
}
|
|
17763
|
+
}
|
|
17764
|
+
}
|
|
17765
|
+
}
|
|
17766
|
+
},
|
|
17767
|
+
"401": {
|
|
17768
|
+
"description": "Authentication is required but missing or invalid. The Bearer token (API key or OAuth access token) was absent, malformed, or rejected.",
|
|
17769
|
+
"content": {
|
|
17770
|
+
"application/json": {
|
|
17771
|
+
"schema": {
|
|
17772
|
+
"type": "object",
|
|
17773
|
+
"properties": {
|
|
17774
|
+
"error": {
|
|
17775
|
+
"type": "object",
|
|
17776
|
+
"properties": {
|
|
17777
|
+
"code": {
|
|
17778
|
+
"type": "string"
|
|
17779
|
+
},
|
|
17780
|
+
"message": {
|
|
17781
|
+
"type": "string"
|
|
17782
|
+
}
|
|
17783
|
+
},
|
|
17784
|
+
"required": [
|
|
17785
|
+
"code",
|
|
17786
|
+
"message"
|
|
17787
|
+
]
|
|
17788
|
+
}
|
|
17789
|
+
},
|
|
17790
|
+
"required": [
|
|
17791
|
+
"error"
|
|
17792
|
+
]
|
|
17793
|
+
},
|
|
17794
|
+
"examples": {
|
|
17795
|
+
"authRequired": {
|
|
17796
|
+
"summary": "Missing Authorization header",
|
|
17797
|
+
"value": {
|
|
17798
|
+
"error": {
|
|
17799
|
+
"code": "AUTH_REQUIRED",
|
|
17800
|
+
"message": "missing bearer token"
|
|
17801
|
+
}
|
|
17802
|
+
}
|
|
17803
|
+
}
|
|
17804
|
+
}
|
|
17805
|
+
}
|
|
17806
|
+
}
|
|
17807
|
+
},
|
|
17808
|
+
"403": {
|
|
17809
|
+
"description": "The caller is authenticated but not permitted to perform this operation on the target resource.",
|
|
17810
|
+
"content": {
|
|
17811
|
+
"application/json": {
|
|
17812
|
+
"schema": {
|
|
17813
|
+
"type": "object",
|
|
17814
|
+
"properties": {
|
|
17815
|
+
"error": {
|
|
17816
|
+
"type": "object",
|
|
17817
|
+
"properties": {
|
|
17818
|
+
"code": {
|
|
17819
|
+
"type": "string"
|
|
17820
|
+
},
|
|
17821
|
+
"message": {
|
|
17822
|
+
"type": "string"
|
|
17823
|
+
}
|
|
17824
|
+
},
|
|
17825
|
+
"required": [
|
|
17826
|
+
"code",
|
|
17827
|
+
"message"
|
|
17828
|
+
]
|
|
17829
|
+
}
|
|
17830
|
+
},
|
|
17831
|
+
"required": [
|
|
17832
|
+
"error"
|
|
17833
|
+
]
|
|
17834
|
+
},
|
|
17835
|
+
"examples": {
|
|
17836
|
+
"forbidden": {
|
|
17837
|
+
"summary": "Caller does not own the resource",
|
|
17838
|
+
"value": {
|
|
17839
|
+
"error": {
|
|
17840
|
+
"code": "FORBIDDEN",
|
|
17841
|
+
"message": "not allowed"
|
|
17842
|
+
}
|
|
17843
|
+
}
|
|
17844
|
+
}
|
|
17845
|
+
}
|
|
17846
|
+
}
|
|
17847
|
+
}
|
|
17848
|
+
},
|
|
17849
|
+
"404": {
|
|
17850
|
+
"description": "The target resource does not exist or is not visible to the caller. Soft-deleted resources are treated as not found unless an `include_deleted` flag is set.",
|
|
17851
|
+
"content": {
|
|
17852
|
+
"application/json": {
|
|
17853
|
+
"schema": {
|
|
17854
|
+
"type": "object",
|
|
17855
|
+
"properties": {
|
|
17856
|
+
"error": {
|
|
17857
|
+
"type": "object",
|
|
17858
|
+
"properties": {
|
|
17859
|
+
"code": {
|
|
17860
|
+
"type": "string"
|
|
17861
|
+
},
|
|
17862
|
+
"message": {
|
|
17863
|
+
"type": "string"
|
|
17864
|
+
}
|
|
17865
|
+
},
|
|
17866
|
+
"required": [
|
|
17867
|
+
"code",
|
|
17868
|
+
"message"
|
|
17869
|
+
]
|
|
17870
|
+
}
|
|
17871
|
+
},
|
|
17872
|
+
"required": [
|
|
17873
|
+
"error"
|
|
17874
|
+
]
|
|
17875
|
+
},
|
|
17876
|
+
"examples": {
|
|
17877
|
+
"notFound": {
|
|
17878
|
+
"summary": "Resource id is unknown to the service",
|
|
17879
|
+
"value": {
|
|
17880
|
+
"error": {
|
|
17881
|
+
"code": "NOT_FOUND",
|
|
17882
|
+
"message": "todo not found"
|
|
17883
|
+
}
|
|
17884
|
+
}
|
|
17885
|
+
}
|
|
17886
|
+
}
|
|
17887
|
+
}
|
|
17888
|
+
}
|
|
17889
|
+
},
|
|
17890
|
+
"409": {
|
|
17891
|
+
"description": "Optimistic-lock conflict. The supplied `expected_version` does not match the server's current version. Refetch the resource and retry.",
|
|
17892
|
+
"content": {
|
|
17893
|
+
"application/json": {
|
|
17894
|
+
"schema": {
|
|
17895
|
+
"type": "object",
|
|
17896
|
+
"properties": {
|
|
17897
|
+
"error": {
|
|
17898
|
+
"type": "object",
|
|
17899
|
+
"properties": {
|
|
17900
|
+
"code": {
|
|
17901
|
+
"type": "string"
|
|
17902
|
+
},
|
|
17903
|
+
"message": {
|
|
17904
|
+
"type": "string"
|
|
17905
|
+
}
|
|
17906
|
+
},
|
|
17907
|
+
"required": [
|
|
17908
|
+
"code",
|
|
17909
|
+
"message"
|
|
17910
|
+
]
|
|
17911
|
+
}
|
|
17912
|
+
},
|
|
17913
|
+
"required": [
|
|
17914
|
+
"error"
|
|
17915
|
+
]
|
|
17916
|
+
},
|
|
17917
|
+
"examples": {
|
|
17918
|
+
"versionConflict": {
|
|
17919
|
+
"summary": "expected_version does not match server version",
|
|
17920
|
+
"value": {
|
|
17921
|
+
"error": {
|
|
17922
|
+
"code": "VERSION_CONFLICT",
|
|
17923
|
+
"message": "expected_version 3 but current is 4"
|
|
17924
|
+
}
|
|
17925
|
+
}
|
|
17926
|
+
}
|
|
17927
|
+
}
|
|
17928
|
+
}
|
|
17929
|
+
}
|
|
17930
|
+
},
|
|
17931
|
+
"429": {
|
|
17932
|
+
"description": "Rate limit exceeded. Use the HTTP `Retry-After` header for machine-readable retry timing.",
|
|
17933
|
+
"content": {
|
|
17934
|
+
"application/json": {
|
|
17935
|
+
"schema": {
|
|
17936
|
+
"type": "object",
|
|
17937
|
+
"properties": {
|
|
17938
|
+
"error": {
|
|
17939
|
+
"type": "object",
|
|
17940
|
+
"properties": {
|
|
17941
|
+
"code": {
|
|
17942
|
+
"type": "string"
|
|
17943
|
+
},
|
|
17944
|
+
"message": {
|
|
17945
|
+
"type": "string"
|
|
17946
|
+
}
|
|
17947
|
+
},
|
|
17948
|
+
"required": [
|
|
17949
|
+
"code",
|
|
17950
|
+
"message"
|
|
17951
|
+
]
|
|
17952
|
+
}
|
|
17953
|
+
},
|
|
17954
|
+
"required": [
|
|
17955
|
+
"error"
|
|
17956
|
+
]
|
|
17957
|
+
},
|
|
17958
|
+
"examples": {
|
|
17959
|
+
"rateLimited": {
|
|
17960
|
+
"summary": "Per-key rate limit hit",
|
|
17961
|
+
"value": {
|
|
17962
|
+
"error": {
|
|
17963
|
+
"code": "RATE_LIMITED",
|
|
17964
|
+
"message": "Too many requests, please retry after 60 seconds."
|
|
17965
|
+
}
|
|
17966
|
+
}
|
|
17967
|
+
}
|
|
17968
|
+
}
|
|
17969
|
+
}
|
|
17970
|
+
}
|
|
17971
|
+
},
|
|
17972
|
+
"500": {
|
|
17973
|
+
"description": "Unhandled server error. The request was well-formed but the service failed unexpectedly. Safe to retry idempotent operations.",
|
|
17974
|
+
"content": {
|
|
17975
|
+
"application/json": {
|
|
17976
|
+
"schema": {
|
|
17977
|
+
"type": "object",
|
|
17978
|
+
"properties": {
|
|
17979
|
+
"error": {
|
|
17980
|
+
"type": "object",
|
|
17981
|
+
"properties": {
|
|
17982
|
+
"code": {
|
|
17983
|
+
"type": "string"
|
|
17984
|
+
},
|
|
17985
|
+
"message": {
|
|
17986
|
+
"type": "string"
|
|
17987
|
+
}
|
|
17988
|
+
},
|
|
17989
|
+
"required": [
|
|
17990
|
+
"code",
|
|
17991
|
+
"message"
|
|
17992
|
+
]
|
|
17993
|
+
}
|
|
17994
|
+
},
|
|
17995
|
+
"required": [
|
|
17996
|
+
"error"
|
|
17997
|
+
]
|
|
17998
|
+
},
|
|
17999
|
+
"examples": {
|
|
18000
|
+
"internalError": {
|
|
18001
|
+
"summary": "Unhandled exception",
|
|
18002
|
+
"value": {
|
|
18003
|
+
"error": {
|
|
18004
|
+
"code": "INTERNAL_ERROR",
|
|
18005
|
+
"message": "internal error"
|
|
18006
|
+
}
|
|
18007
|
+
}
|
|
18008
|
+
}
|
|
18009
|
+
}
|
|
18010
|
+
}
|
|
18011
|
+
}
|
|
18012
|
+
}
|
|
18013
|
+
}
|
|
18014
|
+
}
|
|
18015
|
+
},
|
|
18016
|
+
"/drive/libraries/{id}/files/content": {
|
|
18017
|
+
"get": {
|
|
18018
|
+
"operationId": "drive_file_download",
|
|
18019
|
+
"tags": [
|
|
18020
|
+
"DriveFiles"
|
|
18021
|
+
],
|
|
18022
|
+
"summary": "Download drive file content",
|
|
18023
|
+
"description": "Download the current or specified file version as raw bytes.",
|
|
18024
|
+
"security": [
|
|
18025
|
+
{
|
|
18026
|
+
"bearerAuth": []
|
|
18027
|
+
}
|
|
18028
|
+
],
|
|
18029
|
+
"parameters": [
|
|
18030
|
+
{
|
|
18031
|
+
"name": "x-cb-drive",
|
|
18032
|
+
"in": "header",
|
|
18033
|
+
"required": false,
|
|
18034
|
+
"description": "Optional opaque consistency bookmark returned by a previous drive response. Send it back unchanged to continue read-after-write consistency for drive D1 data.",
|
|
18035
|
+
"schema": {
|
|
18036
|
+
"type": "string"
|
|
18037
|
+
},
|
|
18038
|
+
"example": "opaque-consistency-bookmark"
|
|
18039
|
+
},
|
|
18040
|
+
{
|
|
18041
|
+
"schema": {
|
|
18042
|
+
"type": "string"
|
|
18043
|
+
},
|
|
18044
|
+
"required": true,
|
|
18045
|
+
"name": "id",
|
|
18046
|
+
"in": "path"
|
|
18047
|
+
},
|
|
18048
|
+
{
|
|
18049
|
+
"schema": {
|
|
18050
|
+
"type": "string"
|
|
18051
|
+
},
|
|
18052
|
+
"required": true,
|
|
18053
|
+
"name": "path",
|
|
18054
|
+
"in": "query"
|
|
18055
|
+
},
|
|
18056
|
+
{
|
|
18057
|
+
"schema": {
|
|
18058
|
+
"type": "string"
|
|
18059
|
+
},
|
|
18060
|
+
"required": false,
|
|
18061
|
+
"name": "expected_entry_version",
|
|
18062
|
+
"in": "query"
|
|
18063
|
+
},
|
|
18064
|
+
{
|
|
18065
|
+
"schema": {
|
|
18066
|
+
"type": "string"
|
|
18067
|
+
},
|
|
18068
|
+
"required": false,
|
|
18069
|
+
"name": "version_id",
|
|
18070
|
+
"in": "query"
|
|
18071
|
+
}
|
|
18072
|
+
],
|
|
18073
|
+
"x-codeSamples": [
|
|
18074
|
+
{
|
|
18075
|
+
"lang": "shell",
|
|
18076
|
+
"label": "curl",
|
|
18077
|
+
"source": "curl https://api.wspc.ai/drive/libraries/lib_01HW3K4N9V5G6Z8C2Q7B1Y0M3F/files/content?path=notes%2Ftoday.md -H \"Authorization: Bearer $WSPC_API_KEY\""
|
|
18078
|
+
}
|
|
18079
|
+
],
|
|
18080
|
+
"responses": {
|
|
18081
|
+
"200": {
|
|
18082
|
+
"description": "File content",
|
|
18083
|
+
"headers": {
|
|
18084
|
+
"x-cb-drive": {
|
|
18085
|
+
"description": "Opaque consistency bookmark for the latest drive database position observed by this request. Store and send it on the next drive request to continue read-after-write consistency.",
|
|
18086
|
+
"schema": {
|
|
18087
|
+
"type": "string"
|
|
18088
|
+
}
|
|
18089
|
+
},
|
|
18090
|
+
"x-drive-entry-id": {
|
|
18091
|
+
"schema": {
|
|
18092
|
+
"type": "string"
|
|
18093
|
+
}
|
|
18094
|
+
},
|
|
18095
|
+
"x-drive-entry-version": {
|
|
18096
|
+
"schema": {
|
|
18097
|
+
"type": "string"
|
|
18098
|
+
}
|
|
18099
|
+
},
|
|
18100
|
+
"x-drive-file-version-id": {
|
|
18101
|
+
"schema": {
|
|
18102
|
+
"type": "string"
|
|
18103
|
+
}
|
|
18104
|
+
},
|
|
18105
|
+
"x-drive-content-sha256": {
|
|
18106
|
+
"schema": {
|
|
18107
|
+
"type": "string"
|
|
18108
|
+
}
|
|
18109
|
+
}
|
|
18110
|
+
},
|
|
18111
|
+
"content": {
|
|
18112
|
+
"application/octet-stream": {
|
|
18113
|
+
"schema": {
|
|
18114
|
+
"type": "string",
|
|
18115
|
+
"format": "binary"
|
|
18116
|
+
}
|
|
18117
|
+
}
|
|
18118
|
+
}
|
|
18119
|
+
},
|
|
18120
|
+
"400": {
|
|
18121
|
+
"description": "Request validation failed. The body, query, or path parameters did not match the operation's schema.",
|
|
18122
|
+
"content": {
|
|
18123
|
+
"application/json": {
|
|
18124
|
+
"schema": {
|
|
18125
|
+
"type": "object",
|
|
18126
|
+
"properties": {
|
|
18127
|
+
"error": {
|
|
18128
|
+
"type": "object",
|
|
18129
|
+
"properties": {
|
|
18130
|
+
"code": {
|
|
18131
|
+
"type": "string"
|
|
18132
|
+
},
|
|
18133
|
+
"message": {
|
|
18134
|
+
"type": "string"
|
|
18135
|
+
}
|
|
18136
|
+
},
|
|
18137
|
+
"required": [
|
|
18138
|
+
"code",
|
|
18139
|
+
"message"
|
|
18140
|
+
]
|
|
18141
|
+
}
|
|
18142
|
+
},
|
|
18143
|
+
"required": [
|
|
18144
|
+
"error"
|
|
18145
|
+
]
|
|
18146
|
+
},
|
|
18147
|
+
"examples": {
|
|
18148
|
+
"validationError": {
|
|
18149
|
+
"summary": "Body failed schema validation",
|
|
18150
|
+
"value": {
|
|
18151
|
+
"error": {
|
|
18152
|
+
"code": "VALIDATION_ERROR",
|
|
18153
|
+
"message": "title must not be empty"
|
|
18154
|
+
}
|
|
18155
|
+
}
|
|
18156
|
+
}
|
|
18157
|
+
}
|
|
18158
|
+
}
|
|
18159
|
+
}
|
|
18160
|
+
},
|
|
18161
|
+
"401": {
|
|
18162
|
+
"description": "Authentication is required but missing or invalid. The Bearer token (API key or OAuth access token) was absent, malformed, or rejected.",
|
|
18163
|
+
"content": {
|
|
18164
|
+
"application/json": {
|
|
18165
|
+
"schema": {
|
|
18166
|
+
"type": "object",
|
|
18167
|
+
"properties": {
|
|
18168
|
+
"error": {
|
|
18169
|
+
"type": "object",
|
|
18170
|
+
"properties": {
|
|
18171
|
+
"code": {
|
|
18172
|
+
"type": "string"
|
|
18173
|
+
},
|
|
18174
|
+
"message": {
|
|
18175
|
+
"type": "string"
|
|
18176
|
+
}
|
|
18177
|
+
},
|
|
18178
|
+
"required": [
|
|
18179
|
+
"code",
|
|
18180
|
+
"message"
|
|
18181
|
+
]
|
|
18182
|
+
}
|
|
18183
|
+
},
|
|
18184
|
+
"required": [
|
|
18185
|
+
"error"
|
|
18186
|
+
]
|
|
18187
|
+
},
|
|
18188
|
+
"examples": {
|
|
18189
|
+
"authRequired": {
|
|
18190
|
+
"summary": "Missing Authorization header",
|
|
18191
|
+
"value": {
|
|
18192
|
+
"error": {
|
|
18193
|
+
"code": "AUTH_REQUIRED",
|
|
18194
|
+
"message": "missing bearer token"
|
|
18195
|
+
}
|
|
18196
|
+
}
|
|
18197
|
+
}
|
|
18198
|
+
}
|
|
18199
|
+
}
|
|
18200
|
+
}
|
|
18201
|
+
},
|
|
18202
|
+
"403": {
|
|
18203
|
+
"description": "The caller is authenticated but not permitted to perform this operation on the target resource.",
|
|
18204
|
+
"content": {
|
|
18205
|
+
"application/json": {
|
|
18206
|
+
"schema": {
|
|
18207
|
+
"type": "object",
|
|
18208
|
+
"properties": {
|
|
18209
|
+
"error": {
|
|
18210
|
+
"type": "object",
|
|
18211
|
+
"properties": {
|
|
18212
|
+
"code": {
|
|
18213
|
+
"type": "string"
|
|
18214
|
+
},
|
|
18215
|
+
"message": {
|
|
18216
|
+
"type": "string"
|
|
18217
|
+
}
|
|
18218
|
+
},
|
|
18219
|
+
"required": [
|
|
18220
|
+
"code",
|
|
18221
|
+
"message"
|
|
18222
|
+
]
|
|
18223
|
+
}
|
|
18224
|
+
},
|
|
18225
|
+
"required": [
|
|
18226
|
+
"error"
|
|
18227
|
+
]
|
|
18228
|
+
},
|
|
18229
|
+
"examples": {
|
|
18230
|
+
"forbidden": {
|
|
18231
|
+
"summary": "Caller does not own the resource",
|
|
18232
|
+
"value": {
|
|
18233
|
+
"error": {
|
|
18234
|
+
"code": "FORBIDDEN",
|
|
18235
|
+
"message": "not allowed"
|
|
18236
|
+
}
|
|
18237
|
+
}
|
|
18238
|
+
}
|
|
18239
|
+
}
|
|
18240
|
+
}
|
|
18241
|
+
}
|
|
18242
|
+
},
|
|
18243
|
+
"404": {
|
|
18244
|
+
"description": "The target resource does not exist or is not visible to the caller. Soft-deleted resources are treated as not found unless an `include_deleted` flag is set.",
|
|
18245
|
+
"content": {
|
|
18246
|
+
"application/json": {
|
|
18247
|
+
"schema": {
|
|
18248
|
+
"type": "object",
|
|
18249
|
+
"properties": {
|
|
18250
|
+
"error": {
|
|
18251
|
+
"type": "object",
|
|
18252
|
+
"properties": {
|
|
18253
|
+
"code": {
|
|
18254
|
+
"type": "string"
|
|
18255
|
+
},
|
|
18256
|
+
"message": {
|
|
18257
|
+
"type": "string"
|
|
18258
|
+
}
|
|
18259
|
+
},
|
|
18260
|
+
"required": [
|
|
18261
|
+
"code",
|
|
18262
|
+
"message"
|
|
18263
|
+
]
|
|
18264
|
+
}
|
|
18265
|
+
},
|
|
18266
|
+
"required": [
|
|
18267
|
+
"error"
|
|
18268
|
+
]
|
|
18269
|
+
},
|
|
18270
|
+
"examples": {
|
|
18271
|
+
"notFound": {
|
|
18272
|
+
"summary": "Resource id is unknown to the service",
|
|
18273
|
+
"value": {
|
|
18274
|
+
"error": {
|
|
18275
|
+
"code": "NOT_FOUND",
|
|
18276
|
+
"message": "todo not found"
|
|
18277
|
+
}
|
|
18278
|
+
}
|
|
18279
|
+
}
|
|
18280
|
+
}
|
|
18281
|
+
}
|
|
18282
|
+
}
|
|
18283
|
+
},
|
|
18284
|
+
"409": {
|
|
18285
|
+
"description": "Optimistic-lock conflict. The supplied `expected_version` does not match the server's current version. Refetch the resource and retry.",
|
|
18286
|
+
"content": {
|
|
18287
|
+
"application/json": {
|
|
18288
|
+
"schema": {
|
|
18289
|
+
"type": "object",
|
|
18290
|
+
"properties": {
|
|
18291
|
+
"error": {
|
|
18292
|
+
"type": "object",
|
|
18293
|
+
"properties": {
|
|
18294
|
+
"code": {
|
|
18295
|
+
"type": "string"
|
|
18296
|
+
},
|
|
18297
|
+
"message": {
|
|
18298
|
+
"type": "string"
|
|
18299
|
+
}
|
|
18300
|
+
},
|
|
18301
|
+
"required": [
|
|
18302
|
+
"code",
|
|
18303
|
+
"message"
|
|
18304
|
+
]
|
|
18305
|
+
}
|
|
18306
|
+
},
|
|
18307
|
+
"required": [
|
|
18308
|
+
"error"
|
|
18309
|
+
]
|
|
18310
|
+
},
|
|
18311
|
+
"examples": {
|
|
18312
|
+
"versionConflict": {
|
|
18313
|
+
"summary": "expected_version does not match server version",
|
|
18314
|
+
"value": {
|
|
18315
|
+
"error": {
|
|
18316
|
+
"code": "VERSION_CONFLICT",
|
|
18317
|
+
"message": "expected_version 3 but current is 4"
|
|
18318
|
+
}
|
|
18319
|
+
}
|
|
18320
|
+
}
|
|
18321
|
+
}
|
|
18322
|
+
}
|
|
18323
|
+
}
|
|
18324
|
+
},
|
|
18325
|
+
"429": {
|
|
18326
|
+
"description": "Rate limit exceeded. Use the HTTP `Retry-After` header for machine-readable retry timing.",
|
|
18327
|
+
"content": {
|
|
18328
|
+
"application/json": {
|
|
18329
|
+
"schema": {
|
|
18330
|
+
"type": "object",
|
|
18331
|
+
"properties": {
|
|
18332
|
+
"error": {
|
|
18333
|
+
"type": "object",
|
|
18334
|
+
"properties": {
|
|
18335
|
+
"code": {
|
|
18336
|
+
"type": "string"
|
|
18337
|
+
},
|
|
18338
|
+
"message": {
|
|
18339
|
+
"type": "string"
|
|
18340
|
+
}
|
|
18341
|
+
},
|
|
18342
|
+
"required": [
|
|
18343
|
+
"code",
|
|
18344
|
+
"message"
|
|
18345
|
+
]
|
|
18346
|
+
}
|
|
18347
|
+
},
|
|
18348
|
+
"required": [
|
|
18349
|
+
"error"
|
|
18350
|
+
]
|
|
18351
|
+
},
|
|
18352
|
+
"examples": {
|
|
18353
|
+
"rateLimited": {
|
|
18354
|
+
"summary": "Per-key rate limit hit",
|
|
18355
|
+
"value": {
|
|
18356
|
+
"error": {
|
|
18357
|
+
"code": "RATE_LIMITED",
|
|
18358
|
+
"message": "Too many requests, please retry after 60 seconds."
|
|
18359
|
+
}
|
|
18360
|
+
}
|
|
18361
|
+
}
|
|
18362
|
+
}
|
|
18363
|
+
}
|
|
18364
|
+
}
|
|
18365
|
+
},
|
|
18366
|
+
"500": {
|
|
18367
|
+
"description": "Unhandled server error. The request was well-formed but the service failed unexpectedly. Safe to retry idempotent operations.",
|
|
18368
|
+
"content": {
|
|
18369
|
+
"application/json": {
|
|
18370
|
+
"schema": {
|
|
18371
|
+
"type": "object",
|
|
18372
|
+
"properties": {
|
|
18373
|
+
"error": {
|
|
18374
|
+
"type": "object",
|
|
18375
|
+
"properties": {
|
|
18376
|
+
"code": {
|
|
18377
|
+
"type": "string"
|
|
18378
|
+
},
|
|
18379
|
+
"message": {
|
|
18380
|
+
"type": "string"
|
|
18381
|
+
}
|
|
18382
|
+
},
|
|
18383
|
+
"required": [
|
|
18384
|
+
"code",
|
|
18385
|
+
"message"
|
|
18386
|
+
]
|
|
18387
|
+
}
|
|
18388
|
+
},
|
|
18389
|
+
"required": [
|
|
18390
|
+
"error"
|
|
18391
|
+
]
|
|
18392
|
+
},
|
|
18393
|
+
"examples": {
|
|
18394
|
+
"internalError": {
|
|
18395
|
+
"summary": "Unhandled exception",
|
|
18396
|
+
"value": {
|
|
18397
|
+
"error": {
|
|
18398
|
+
"code": "INTERNAL_ERROR",
|
|
18399
|
+
"message": "internal error"
|
|
18400
|
+
}
|
|
18401
|
+
}
|
|
18402
|
+
}
|
|
18403
|
+
}
|
|
18404
|
+
}
|
|
18405
|
+
}
|
|
18406
|
+
}
|
|
18407
|
+
}
|
|
18408
|
+
},
|
|
18409
|
+
"put": {
|
|
18410
|
+
"operationId": "drive_file_upload",
|
|
18411
|
+
"tags": [
|
|
18412
|
+
"DriveFiles"
|
|
18413
|
+
],
|
|
18414
|
+
"summary": "Upload drive file content",
|
|
18415
|
+
"description": "Create or update a whole file using optimistic entry version locking.",
|
|
18416
|
+
"security": [
|
|
18417
|
+
{
|
|
18418
|
+
"bearerAuth": []
|
|
18419
|
+
}
|
|
18420
|
+
],
|
|
18421
|
+
"parameters": [
|
|
18422
|
+
{
|
|
18423
|
+
"name": "x-cb-drive",
|
|
18424
|
+
"in": "header",
|
|
18425
|
+
"required": false,
|
|
18426
|
+
"description": "Optional opaque consistency bookmark returned by a previous drive response. Send it back unchanged to continue read-after-write consistency for drive D1 data.",
|
|
18427
|
+
"schema": {
|
|
18428
|
+
"type": "string"
|
|
18429
|
+
},
|
|
18430
|
+
"example": "opaque-consistency-bookmark"
|
|
18431
|
+
},
|
|
18432
|
+
{
|
|
18433
|
+
"schema": {
|
|
18434
|
+
"type": "string"
|
|
18435
|
+
},
|
|
18436
|
+
"required": true,
|
|
18437
|
+
"name": "id",
|
|
18438
|
+
"in": "path"
|
|
18439
|
+
},
|
|
18440
|
+
{
|
|
18441
|
+
"schema": {
|
|
18442
|
+
"type": "string"
|
|
18443
|
+
},
|
|
18444
|
+
"required": true,
|
|
18445
|
+
"name": "path",
|
|
18446
|
+
"in": "query"
|
|
18447
|
+
},
|
|
18448
|
+
{
|
|
18449
|
+
"schema": {
|
|
18450
|
+
"type": "string"
|
|
18451
|
+
},
|
|
18452
|
+
"required": false,
|
|
18453
|
+
"name": "expected_entry_version",
|
|
18454
|
+
"in": "query"
|
|
18455
|
+
},
|
|
18456
|
+
{
|
|
18457
|
+
"schema": {
|
|
18458
|
+
"type": "string"
|
|
18459
|
+
},
|
|
18460
|
+
"required": false,
|
|
18461
|
+
"name": "version_id",
|
|
18462
|
+
"in": "query"
|
|
18463
|
+
}
|
|
18464
|
+
],
|
|
18465
|
+
"x-codeSamples": [
|
|
18466
|
+
{
|
|
18467
|
+
"lang": "shell",
|
|
18468
|
+
"label": "curl",
|
|
18469
|
+
"source": "curl -X PUT https://api.wspc.ai/drive/libraries/lib_01HW3K4N9V5G6Z8C2Q7B1Y0M3F/files/content?path=notes%2Ftoday.md\\&expected_entry_version=0 -H \"Authorization: Bearer $WSPC_API_KEY\" -H \"Content-Type: text/plain\" -H \"x-drive-content-sha256: $SHA256\" --data-binary @today.md"
|
|
18470
|
+
}
|
|
18471
|
+
],
|
|
18472
|
+
"requestBody": {
|
|
18473
|
+
"content": {
|
|
18474
|
+
"application/octet-stream": {
|
|
18475
|
+
"schema": {
|
|
18476
|
+
"type": "string",
|
|
18477
|
+
"format": "binary"
|
|
18478
|
+
}
|
|
18479
|
+
}
|
|
18480
|
+
}
|
|
18481
|
+
},
|
|
18482
|
+
"responses": {
|
|
18483
|
+
"200": {
|
|
18484
|
+
"description": "Uploaded",
|
|
18485
|
+
"headers": {
|
|
18486
|
+
"x-cb-drive": {
|
|
18487
|
+
"description": "Opaque consistency bookmark for the latest drive database position observed by this request. Store and send it on the next drive request to continue read-after-write consistency.",
|
|
18488
|
+
"schema": {
|
|
18489
|
+
"type": "string"
|
|
18490
|
+
}
|
|
18491
|
+
}
|
|
18492
|
+
},
|
|
18493
|
+
"content": {
|
|
18494
|
+
"application/json": {
|
|
18495
|
+
"schema": {
|
|
18496
|
+
"$ref": "#/components/schemas/UploadDriveFileResponse"
|
|
18497
|
+
},
|
|
18498
|
+
"examples": {
|
|
18499
|
+
"created": {
|
|
18500
|
+
"value": {
|
|
18501
|
+
"entry": {
|
|
18502
|
+
"id": "fil_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
18503
|
+
"path": "notes/today.md",
|
|
18504
|
+
"kind": "file",
|
|
18505
|
+
"entry_version": 1,
|
|
18506
|
+
"current_version_id": "fvr_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
18507
|
+
"content_sha256": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
|
18508
|
+
"size_bytes": 12,
|
|
18509
|
+
"updated_at": "2026-06-20T10:00:00.000Z"
|
|
18510
|
+
},
|
|
18511
|
+
"result": "created"
|
|
18512
|
+
}
|
|
18513
|
+
}
|
|
18514
|
+
}
|
|
18515
|
+
}
|
|
18516
|
+
}
|
|
18517
|
+
},
|
|
18518
|
+
"400": {
|
|
18519
|
+
"description": "Request validation failed. The body, query, or path parameters did not match the operation's schema.",
|
|
18520
|
+
"content": {
|
|
18521
|
+
"application/json": {
|
|
18522
|
+
"schema": {
|
|
18523
|
+
"type": "object",
|
|
18524
|
+
"properties": {
|
|
18525
|
+
"error": {
|
|
18526
|
+
"type": "object",
|
|
18527
|
+
"properties": {
|
|
18528
|
+
"code": {
|
|
18529
|
+
"type": "string"
|
|
18530
|
+
},
|
|
18531
|
+
"message": {
|
|
18532
|
+
"type": "string"
|
|
18533
|
+
}
|
|
18534
|
+
},
|
|
18535
|
+
"required": [
|
|
18536
|
+
"code",
|
|
18537
|
+
"message"
|
|
18538
|
+
]
|
|
18539
|
+
}
|
|
18540
|
+
},
|
|
18541
|
+
"required": [
|
|
18542
|
+
"error"
|
|
18543
|
+
]
|
|
18544
|
+
},
|
|
18545
|
+
"examples": {
|
|
18546
|
+
"validationError": {
|
|
18547
|
+
"summary": "Body failed schema validation",
|
|
18548
|
+
"value": {
|
|
18549
|
+
"error": {
|
|
18550
|
+
"code": "VALIDATION_ERROR",
|
|
18551
|
+
"message": "title must not be empty"
|
|
18552
|
+
}
|
|
18553
|
+
}
|
|
18554
|
+
}
|
|
18555
|
+
}
|
|
18556
|
+
}
|
|
18557
|
+
}
|
|
18558
|
+
},
|
|
18559
|
+
"401": {
|
|
18560
|
+
"description": "Authentication is required but missing or invalid. The Bearer token (API key or OAuth access token) was absent, malformed, or rejected.",
|
|
18561
|
+
"content": {
|
|
18562
|
+
"application/json": {
|
|
18563
|
+
"schema": {
|
|
18564
|
+
"type": "object",
|
|
18565
|
+
"properties": {
|
|
18566
|
+
"error": {
|
|
18567
|
+
"type": "object",
|
|
18568
|
+
"properties": {
|
|
18569
|
+
"code": {
|
|
18570
|
+
"type": "string"
|
|
18571
|
+
},
|
|
18572
|
+
"message": {
|
|
18573
|
+
"type": "string"
|
|
18574
|
+
}
|
|
18575
|
+
},
|
|
18576
|
+
"required": [
|
|
18577
|
+
"code",
|
|
18578
|
+
"message"
|
|
18579
|
+
]
|
|
18580
|
+
}
|
|
18581
|
+
},
|
|
18582
|
+
"required": [
|
|
18583
|
+
"error"
|
|
18584
|
+
]
|
|
18585
|
+
},
|
|
18586
|
+
"examples": {
|
|
18587
|
+
"authRequired": {
|
|
18588
|
+
"summary": "Missing Authorization header",
|
|
18589
|
+
"value": {
|
|
18590
|
+
"error": {
|
|
18591
|
+
"code": "AUTH_REQUIRED",
|
|
18592
|
+
"message": "missing bearer token"
|
|
18593
|
+
}
|
|
18594
|
+
}
|
|
18595
|
+
}
|
|
18596
|
+
}
|
|
18597
|
+
}
|
|
18598
|
+
}
|
|
18599
|
+
},
|
|
18600
|
+
"403": {
|
|
18601
|
+
"description": "The caller is authenticated but not permitted to perform this operation on the target resource.",
|
|
18602
|
+
"content": {
|
|
18603
|
+
"application/json": {
|
|
18604
|
+
"schema": {
|
|
18605
|
+
"type": "object",
|
|
18606
|
+
"properties": {
|
|
18607
|
+
"error": {
|
|
18608
|
+
"type": "object",
|
|
18609
|
+
"properties": {
|
|
18610
|
+
"code": {
|
|
18611
|
+
"type": "string"
|
|
18612
|
+
},
|
|
18613
|
+
"message": {
|
|
18614
|
+
"type": "string"
|
|
18615
|
+
}
|
|
18616
|
+
},
|
|
18617
|
+
"required": [
|
|
18618
|
+
"code",
|
|
18619
|
+
"message"
|
|
18620
|
+
]
|
|
18621
|
+
}
|
|
18622
|
+
},
|
|
18623
|
+
"required": [
|
|
18624
|
+
"error"
|
|
18625
|
+
]
|
|
18626
|
+
},
|
|
18627
|
+
"examples": {
|
|
18628
|
+
"forbidden": {
|
|
18629
|
+
"summary": "Caller does not own the resource",
|
|
18630
|
+
"value": {
|
|
18631
|
+
"error": {
|
|
18632
|
+
"code": "FORBIDDEN",
|
|
18633
|
+
"message": "not allowed"
|
|
18634
|
+
}
|
|
18635
|
+
}
|
|
18636
|
+
}
|
|
18637
|
+
}
|
|
18638
|
+
}
|
|
18639
|
+
}
|
|
18640
|
+
},
|
|
18641
|
+
"404": {
|
|
18642
|
+
"description": "The target resource does not exist or is not visible to the caller. Soft-deleted resources are treated as not found unless an `include_deleted` flag is set.",
|
|
18643
|
+
"content": {
|
|
18644
|
+
"application/json": {
|
|
18645
|
+
"schema": {
|
|
18646
|
+
"type": "object",
|
|
18647
|
+
"properties": {
|
|
18648
|
+
"error": {
|
|
18649
|
+
"type": "object",
|
|
18650
|
+
"properties": {
|
|
18651
|
+
"code": {
|
|
18652
|
+
"type": "string"
|
|
18653
|
+
},
|
|
18654
|
+
"message": {
|
|
18655
|
+
"type": "string"
|
|
18656
|
+
}
|
|
18657
|
+
},
|
|
18658
|
+
"required": [
|
|
18659
|
+
"code",
|
|
18660
|
+
"message"
|
|
18661
|
+
]
|
|
18662
|
+
}
|
|
18663
|
+
},
|
|
18664
|
+
"required": [
|
|
18665
|
+
"error"
|
|
18666
|
+
]
|
|
18667
|
+
},
|
|
18668
|
+
"examples": {
|
|
18669
|
+
"notFound": {
|
|
18670
|
+
"summary": "Resource id is unknown to the service",
|
|
18671
|
+
"value": {
|
|
18672
|
+
"error": {
|
|
18673
|
+
"code": "NOT_FOUND",
|
|
18674
|
+
"message": "todo not found"
|
|
18675
|
+
}
|
|
18676
|
+
}
|
|
18677
|
+
}
|
|
18678
|
+
}
|
|
18679
|
+
}
|
|
18680
|
+
}
|
|
18681
|
+
},
|
|
18682
|
+
"409": {
|
|
18683
|
+
"description": "Optimistic-lock conflict. The supplied `expected_version` does not match the server's current version. Refetch the resource and retry.",
|
|
18684
|
+
"content": {
|
|
18685
|
+
"application/json": {
|
|
18686
|
+
"schema": {
|
|
18687
|
+
"type": "object",
|
|
18688
|
+
"properties": {
|
|
18689
|
+
"error": {
|
|
18690
|
+
"type": "object",
|
|
18691
|
+
"properties": {
|
|
18692
|
+
"code": {
|
|
18693
|
+
"type": "string"
|
|
18694
|
+
},
|
|
18695
|
+
"message": {
|
|
18696
|
+
"type": "string"
|
|
18697
|
+
}
|
|
18698
|
+
},
|
|
18699
|
+
"required": [
|
|
18700
|
+
"code",
|
|
18701
|
+
"message"
|
|
18702
|
+
]
|
|
18703
|
+
}
|
|
18704
|
+
},
|
|
18705
|
+
"required": [
|
|
18706
|
+
"error"
|
|
18707
|
+
]
|
|
18708
|
+
},
|
|
18709
|
+
"examples": {
|
|
18710
|
+
"versionConflict": {
|
|
18711
|
+
"summary": "expected_version does not match server version",
|
|
18712
|
+
"value": {
|
|
18713
|
+
"error": {
|
|
18714
|
+
"code": "VERSION_CONFLICT",
|
|
18715
|
+
"message": "expected_version 3 but current is 4"
|
|
18716
|
+
}
|
|
18717
|
+
}
|
|
18718
|
+
}
|
|
18719
|
+
}
|
|
18720
|
+
}
|
|
18721
|
+
}
|
|
18722
|
+
},
|
|
18723
|
+
"429": {
|
|
18724
|
+
"description": "Rate limit exceeded. Use the HTTP `Retry-After` header for machine-readable retry timing.",
|
|
18725
|
+
"content": {
|
|
18726
|
+
"application/json": {
|
|
18727
|
+
"schema": {
|
|
18728
|
+
"type": "object",
|
|
18729
|
+
"properties": {
|
|
18730
|
+
"error": {
|
|
18731
|
+
"type": "object",
|
|
18732
|
+
"properties": {
|
|
18733
|
+
"code": {
|
|
18734
|
+
"type": "string"
|
|
18735
|
+
},
|
|
18736
|
+
"message": {
|
|
18737
|
+
"type": "string"
|
|
18738
|
+
}
|
|
18739
|
+
},
|
|
18740
|
+
"required": [
|
|
18741
|
+
"code",
|
|
18742
|
+
"message"
|
|
18743
|
+
]
|
|
18744
|
+
}
|
|
18745
|
+
},
|
|
18746
|
+
"required": [
|
|
18747
|
+
"error"
|
|
18748
|
+
]
|
|
18749
|
+
},
|
|
18750
|
+
"examples": {
|
|
18751
|
+
"rateLimited": {
|
|
18752
|
+
"summary": "Per-key rate limit hit",
|
|
18753
|
+
"value": {
|
|
18754
|
+
"error": {
|
|
18755
|
+
"code": "RATE_LIMITED",
|
|
18756
|
+
"message": "Too many requests, please retry after 60 seconds."
|
|
18757
|
+
}
|
|
18758
|
+
}
|
|
18759
|
+
}
|
|
18760
|
+
}
|
|
18761
|
+
}
|
|
18762
|
+
}
|
|
18763
|
+
},
|
|
18764
|
+
"500": {
|
|
18765
|
+
"description": "Unhandled server error. The request was well-formed but the service failed unexpectedly. Safe to retry idempotent operations.",
|
|
18766
|
+
"content": {
|
|
18767
|
+
"application/json": {
|
|
18768
|
+
"schema": {
|
|
18769
|
+
"type": "object",
|
|
18770
|
+
"properties": {
|
|
18771
|
+
"error": {
|
|
18772
|
+
"type": "object",
|
|
18773
|
+
"properties": {
|
|
18774
|
+
"code": {
|
|
18775
|
+
"type": "string"
|
|
18776
|
+
},
|
|
18777
|
+
"message": {
|
|
18778
|
+
"type": "string"
|
|
18779
|
+
}
|
|
18780
|
+
},
|
|
18781
|
+
"required": [
|
|
18782
|
+
"code",
|
|
18783
|
+
"message"
|
|
18784
|
+
]
|
|
18785
|
+
}
|
|
18786
|
+
},
|
|
18787
|
+
"required": [
|
|
18788
|
+
"error"
|
|
18789
|
+
]
|
|
18790
|
+
},
|
|
18791
|
+
"examples": {
|
|
18792
|
+
"internalError": {
|
|
18793
|
+
"summary": "Unhandled exception",
|
|
18794
|
+
"value": {
|
|
18795
|
+
"error": {
|
|
18796
|
+
"code": "INTERNAL_ERROR",
|
|
18797
|
+
"message": "internal error"
|
|
18798
|
+
}
|
|
18799
|
+
}
|
|
18800
|
+
}
|
|
18801
|
+
}
|
|
18802
|
+
}
|
|
18803
|
+
}
|
|
18804
|
+
}
|
|
18805
|
+
}
|
|
18806
|
+
}
|
|
18807
|
+
},
|
|
18808
|
+
"/drive/libraries/{id}/manifest": {
|
|
18809
|
+
"get": {
|
|
18810
|
+
"operationId": "drive_manifest_get",
|
|
18811
|
+
"tags": [
|
|
18812
|
+
"DriveFiles"
|
|
18813
|
+
],
|
|
18814
|
+
"summary": "Get a drive library manifest",
|
|
18815
|
+
"description": "List file entries for sync using path/id cursor pagination.",
|
|
18816
|
+
"security": [
|
|
18817
|
+
{
|
|
18818
|
+
"bearerAuth": []
|
|
18819
|
+
}
|
|
18820
|
+
],
|
|
18821
|
+
"parameters": [
|
|
18822
|
+
{
|
|
18823
|
+
"name": "x-cb-drive",
|
|
18824
|
+
"in": "header",
|
|
18825
|
+
"required": false,
|
|
18826
|
+
"description": "Optional opaque consistency bookmark returned by a previous drive response. Send it back unchanged to continue read-after-write consistency for drive D1 data.",
|
|
18827
|
+
"schema": {
|
|
18828
|
+
"type": "string"
|
|
18829
|
+
},
|
|
18830
|
+
"example": "opaque-consistency-bookmark"
|
|
18831
|
+
},
|
|
18832
|
+
{
|
|
18833
|
+
"schema": {
|
|
18834
|
+
"type": "string"
|
|
18835
|
+
},
|
|
18836
|
+
"required": true,
|
|
18837
|
+
"name": "id",
|
|
18838
|
+
"in": "path"
|
|
18839
|
+
},
|
|
18840
|
+
{
|
|
18841
|
+
"schema": {
|
|
18842
|
+
"type": "string"
|
|
18843
|
+
},
|
|
18844
|
+
"required": false,
|
|
18845
|
+
"name": "limit",
|
|
18846
|
+
"in": "query"
|
|
18847
|
+
},
|
|
18848
|
+
{
|
|
18849
|
+
"schema": {
|
|
18850
|
+
"type": "string"
|
|
18851
|
+
},
|
|
18852
|
+
"required": false,
|
|
18853
|
+
"name": "cursor",
|
|
18854
|
+
"in": "query"
|
|
18855
|
+
},
|
|
18856
|
+
{
|
|
18857
|
+
"schema": {
|
|
18858
|
+
"type": "string"
|
|
18859
|
+
},
|
|
18860
|
+
"required": false,
|
|
18861
|
+
"name": "include_deleted",
|
|
18862
|
+
"in": "query"
|
|
18863
|
+
}
|
|
18864
|
+
],
|
|
18865
|
+
"x-codeSamples": [
|
|
18866
|
+
{
|
|
18867
|
+
"lang": "shell",
|
|
18868
|
+
"label": "curl",
|
|
18869
|
+
"source": "curl https://api.wspc.ai/drive/libraries/lib_01HW3K4N9V5G6Z8C2Q7B1Y0M3F/manifest -H \"Authorization: Bearer $WSPC_API_KEY\""
|
|
18870
|
+
}
|
|
18871
|
+
],
|
|
18872
|
+
"responses": {
|
|
18873
|
+
"200": {
|
|
18874
|
+
"description": "Manifest",
|
|
18875
|
+
"headers": {
|
|
18876
|
+
"x-cb-drive": {
|
|
18877
|
+
"description": "Opaque consistency bookmark for the latest drive database position observed by this request. Store and send it on the next drive request to continue read-after-write consistency.",
|
|
18878
|
+
"schema": {
|
|
18879
|
+
"type": "string"
|
|
18880
|
+
}
|
|
18881
|
+
}
|
|
18882
|
+
},
|
|
18883
|
+
"content": {
|
|
18884
|
+
"application/json": {
|
|
18885
|
+
"schema": {
|
|
18886
|
+
"$ref": "#/components/schemas/DriveManifestResponse"
|
|
18887
|
+
},
|
|
18888
|
+
"examples": {
|
|
18889
|
+
"manifest": {
|
|
18890
|
+
"value": {
|
|
18891
|
+
"library": {
|
|
18892
|
+
"id": "lib_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
18893
|
+
"org_id": "org_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
18894
|
+
"created_by_user_id": "usr_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
18895
|
+
"name": "Team docs",
|
|
18896
|
+
"version": 1,
|
|
18897
|
+
"file_count": 0,
|
|
18898
|
+
"storage_bytes": 0,
|
|
18899
|
+
"created_at": 1781957145290,
|
|
18900
|
+
"updated_at": 1781957145290
|
|
18901
|
+
},
|
|
18902
|
+
"entries": [
|
|
18903
|
+
{
|
|
18904
|
+
"id": "fil_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
18905
|
+
"path": "notes/today.md",
|
|
18906
|
+
"kind": "file",
|
|
18907
|
+
"entry_version": 1,
|
|
18908
|
+
"current_version_id": "fvr_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
18909
|
+
"content_sha256": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
|
18910
|
+
"size_bytes": 12,
|
|
18911
|
+
"updated_at": "2026-06-20T10:00:00.000Z"
|
|
18912
|
+
}
|
|
18913
|
+
],
|
|
18914
|
+
"next_cursor": null
|
|
18915
|
+
}
|
|
18916
|
+
}
|
|
18917
|
+
}
|
|
18918
|
+
}
|
|
18919
|
+
}
|
|
18920
|
+
},
|
|
18921
|
+
"400": {
|
|
18922
|
+
"description": "Request validation failed. The body, query, or path parameters did not match the operation's schema.",
|
|
18923
|
+
"content": {
|
|
18924
|
+
"application/json": {
|
|
18925
|
+
"schema": {
|
|
18926
|
+
"type": "object",
|
|
18927
|
+
"properties": {
|
|
18928
|
+
"error": {
|
|
18929
|
+
"type": "object",
|
|
18930
|
+
"properties": {
|
|
18931
|
+
"code": {
|
|
18932
|
+
"type": "string"
|
|
18933
|
+
},
|
|
18934
|
+
"message": {
|
|
18935
|
+
"type": "string"
|
|
18936
|
+
}
|
|
18937
|
+
},
|
|
18938
|
+
"required": [
|
|
18939
|
+
"code",
|
|
18940
|
+
"message"
|
|
18941
|
+
]
|
|
18942
|
+
}
|
|
18943
|
+
},
|
|
18944
|
+
"required": [
|
|
18945
|
+
"error"
|
|
18946
|
+
]
|
|
18947
|
+
},
|
|
18948
|
+
"examples": {
|
|
18949
|
+
"validationError": {
|
|
18950
|
+
"summary": "Body failed schema validation",
|
|
18951
|
+
"value": {
|
|
18952
|
+
"error": {
|
|
18953
|
+
"code": "VALIDATION_ERROR",
|
|
18954
|
+
"message": "title must not be empty"
|
|
18955
|
+
}
|
|
18956
|
+
}
|
|
18957
|
+
}
|
|
18958
|
+
}
|
|
18959
|
+
}
|
|
18960
|
+
}
|
|
18961
|
+
},
|
|
18962
|
+
"401": {
|
|
18963
|
+
"description": "Authentication is required but missing or invalid. The Bearer token (API key or OAuth access token) was absent, malformed, or rejected.",
|
|
18964
|
+
"content": {
|
|
18965
|
+
"application/json": {
|
|
18966
|
+
"schema": {
|
|
18967
|
+
"type": "object",
|
|
18968
|
+
"properties": {
|
|
18969
|
+
"error": {
|
|
18970
|
+
"type": "object",
|
|
18971
|
+
"properties": {
|
|
18972
|
+
"code": {
|
|
18973
|
+
"type": "string"
|
|
18974
|
+
},
|
|
18975
|
+
"message": {
|
|
18976
|
+
"type": "string"
|
|
18977
|
+
}
|
|
18978
|
+
},
|
|
18979
|
+
"required": [
|
|
18980
|
+
"code",
|
|
18981
|
+
"message"
|
|
18982
|
+
]
|
|
18983
|
+
}
|
|
18984
|
+
},
|
|
18985
|
+
"required": [
|
|
18986
|
+
"error"
|
|
18987
|
+
]
|
|
18988
|
+
},
|
|
18989
|
+
"examples": {
|
|
18990
|
+
"authRequired": {
|
|
18991
|
+
"summary": "Missing Authorization header",
|
|
18992
|
+
"value": {
|
|
18993
|
+
"error": {
|
|
18994
|
+
"code": "AUTH_REQUIRED",
|
|
18995
|
+
"message": "missing bearer token"
|
|
18996
|
+
}
|
|
18997
|
+
}
|
|
18998
|
+
}
|
|
18999
|
+
}
|
|
19000
|
+
}
|
|
19001
|
+
}
|
|
19002
|
+
},
|
|
19003
|
+
"403": {
|
|
19004
|
+
"description": "The caller is authenticated but not permitted to perform this operation on the target resource.",
|
|
19005
|
+
"content": {
|
|
19006
|
+
"application/json": {
|
|
19007
|
+
"schema": {
|
|
19008
|
+
"type": "object",
|
|
19009
|
+
"properties": {
|
|
19010
|
+
"error": {
|
|
19011
|
+
"type": "object",
|
|
19012
|
+
"properties": {
|
|
19013
|
+
"code": {
|
|
19014
|
+
"type": "string"
|
|
19015
|
+
},
|
|
19016
|
+
"message": {
|
|
19017
|
+
"type": "string"
|
|
19018
|
+
}
|
|
19019
|
+
},
|
|
19020
|
+
"required": [
|
|
19021
|
+
"code",
|
|
19022
|
+
"message"
|
|
19023
|
+
]
|
|
19024
|
+
}
|
|
19025
|
+
},
|
|
19026
|
+
"required": [
|
|
19027
|
+
"error"
|
|
19028
|
+
]
|
|
19029
|
+
},
|
|
19030
|
+
"examples": {
|
|
19031
|
+
"forbidden": {
|
|
19032
|
+
"summary": "Caller does not own the resource",
|
|
19033
|
+
"value": {
|
|
19034
|
+
"error": {
|
|
19035
|
+
"code": "FORBIDDEN",
|
|
19036
|
+
"message": "not allowed"
|
|
19037
|
+
}
|
|
19038
|
+
}
|
|
19039
|
+
}
|
|
19040
|
+
}
|
|
19041
|
+
}
|
|
19042
|
+
}
|
|
19043
|
+
},
|
|
19044
|
+
"404": {
|
|
19045
|
+
"description": "The target resource does not exist or is not visible to the caller. Soft-deleted resources are treated as not found unless an `include_deleted` flag is set.",
|
|
19046
|
+
"content": {
|
|
19047
|
+
"application/json": {
|
|
19048
|
+
"schema": {
|
|
19049
|
+
"type": "object",
|
|
19050
|
+
"properties": {
|
|
19051
|
+
"error": {
|
|
19052
|
+
"type": "object",
|
|
19053
|
+
"properties": {
|
|
19054
|
+
"code": {
|
|
19055
|
+
"type": "string"
|
|
19056
|
+
},
|
|
19057
|
+
"message": {
|
|
19058
|
+
"type": "string"
|
|
19059
|
+
}
|
|
19060
|
+
},
|
|
19061
|
+
"required": [
|
|
19062
|
+
"code",
|
|
19063
|
+
"message"
|
|
19064
|
+
]
|
|
19065
|
+
}
|
|
19066
|
+
},
|
|
19067
|
+
"required": [
|
|
19068
|
+
"error"
|
|
19069
|
+
]
|
|
19070
|
+
},
|
|
19071
|
+
"examples": {
|
|
19072
|
+
"notFound": {
|
|
19073
|
+
"summary": "Resource id is unknown to the service",
|
|
19074
|
+
"value": {
|
|
19075
|
+
"error": {
|
|
19076
|
+
"code": "NOT_FOUND",
|
|
19077
|
+
"message": "todo not found"
|
|
19078
|
+
}
|
|
19079
|
+
}
|
|
19080
|
+
}
|
|
19081
|
+
}
|
|
19082
|
+
}
|
|
19083
|
+
}
|
|
19084
|
+
},
|
|
19085
|
+
"409": {
|
|
19086
|
+
"description": "Optimistic-lock conflict. The supplied `expected_version` does not match the server's current version. Refetch the resource and retry.",
|
|
19087
|
+
"content": {
|
|
19088
|
+
"application/json": {
|
|
19089
|
+
"schema": {
|
|
19090
|
+
"type": "object",
|
|
19091
|
+
"properties": {
|
|
19092
|
+
"error": {
|
|
19093
|
+
"type": "object",
|
|
19094
|
+
"properties": {
|
|
19095
|
+
"code": {
|
|
19096
|
+
"type": "string"
|
|
19097
|
+
},
|
|
19098
|
+
"message": {
|
|
19099
|
+
"type": "string"
|
|
19100
|
+
}
|
|
19101
|
+
},
|
|
19102
|
+
"required": [
|
|
19103
|
+
"code",
|
|
19104
|
+
"message"
|
|
19105
|
+
]
|
|
19106
|
+
}
|
|
19107
|
+
},
|
|
19108
|
+
"required": [
|
|
19109
|
+
"error"
|
|
19110
|
+
]
|
|
19111
|
+
},
|
|
19112
|
+
"examples": {
|
|
19113
|
+
"versionConflict": {
|
|
19114
|
+
"summary": "expected_version does not match server version",
|
|
19115
|
+
"value": {
|
|
19116
|
+
"error": {
|
|
19117
|
+
"code": "VERSION_CONFLICT",
|
|
19118
|
+
"message": "expected_version 3 but current is 4"
|
|
19119
|
+
}
|
|
19120
|
+
}
|
|
19121
|
+
}
|
|
19122
|
+
}
|
|
19123
|
+
}
|
|
19124
|
+
}
|
|
19125
|
+
},
|
|
19126
|
+
"429": {
|
|
19127
|
+
"description": "Rate limit exceeded. Use the HTTP `Retry-After` header for machine-readable retry timing.",
|
|
19128
|
+
"content": {
|
|
19129
|
+
"application/json": {
|
|
19130
|
+
"schema": {
|
|
19131
|
+
"type": "object",
|
|
19132
|
+
"properties": {
|
|
19133
|
+
"error": {
|
|
19134
|
+
"type": "object",
|
|
19135
|
+
"properties": {
|
|
19136
|
+
"code": {
|
|
19137
|
+
"type": "string"
|
|
19138
|
+
},
|
|
19139
|
+
"message": {
|
|
19140
|
+
"type": "string"
|
|
19141
|
+
}
|
|
19142
|
+
},
|
|
19143
|
+
"required": [
|
|
19144
|
+
"code",
|
|
19145
|
+
"message"
|
|
19146
|
+
]
|
|
19147
|
+
}
|
|
19148
|
+
},
|
|
19149
|
+
"required": [
|
|
19150
|
+
"error"
|
|
19151
|
+
]
|
|
19152
|
+
},
|
|
19153
|
+
"examples": {
|
|
19154
|
+
"rateLimited": {
|
|
19155
|
+
"summary": "Per-key rate limit hit",
|
|
19156
|
+
"value": {
|
|
19157
|
+
"error": {
|
|
19158
|
+
"code": "RATE_LIMITED",
|
|
19159
|
+
"message": "Too many requests, please retry after 60 seconds."
|
|
19160
|
+
}
|
|
19161
|
+
}
|
|
19162
|
+
}
|
|
19163
|
+
}
|
|
19164
|
+
}
|
|
19165
|
+
}
|
|
19166
|
+
},
|
|
19167
|
+
"500": {
|
|
19168
|
+
"description": "Unhandled server error. The request was well-formed but the service failed unexpectedly. Safe to retry idempotent operations.",
|
|
19169
|
+
"content": {
|
|
19170
|
+
"application/json": {
|
|
19171
|
+
"schema": {
|
|
19172
|
+
"type": "object",
|
|
19173
|
+
"properties": {
|
|
19174
|
+
"error": {
|
|
19175
|
+
"type": "object",
|
|
19176
|
+
"properties": {
|
|
19177
|
+
"code": {
|
|
19178
|
+
"type": "string"
|
|
19179
|
+
},
|
|
19180
|
+
"message": {
|
|
19181
|
+
"type": "string"
|
|
19182
|
+
}
|
|
19183
|
+
},
|
|
19184
|
+
"required": [
|
|
19185
|
+
"code",
|
|
19186
|
+
"message"
|
|
19187
|
+
]
|
|
19188
|
+
}
|
|
19189
|
+
},
|
|
19190
|
+
"required": [
|
|
19191
|
+
"error"
|
|
19192
|
+
]
|
|
19193
|
+
},
|
|
19194
|
+
"examples": {
|
|
19195
|
+
"internalError": {
|
|
19196
|
+
"summary": "Unhandled exception",
|
|
19197
|
+
"value": {
|
|
19198
|
+
"error": {
|
|
19199
|
+
"code": "INTERNAL_ERROR",
|
|
19200
|
+
"message": "internal error"
|
|
19201
|
+
}
|
|
19202
|
+
}
|
|
19203
|
+
}
|
|
19204
|
+
}
|
|
19205
|
+
}
|
|
19206
|
+
}
|
|
19207
|
+
}
|
|
19208
|
+
}
|
|
19209
|
+
}
|
|
19210
|
+
},
|
|
19211
|
+
"/email/aliases": {
|
|
19212
|
+
"post": {
|
|
19213
|
+
"operationId": "email_alias_create",
|
|
19214
|
+
"tags": [
|
|
19215
|
+
"EmailAliases"
|
|
19216
|
+
],
|
|
19217
|
+
"summary": "Create a receiving alias",
|
|
19218
|
+
"description": "### Overview\nReserves and provisions a new passwordless/disposable receiving email alias address under the configured WSPC domain or a fully verified organization custom domain. All inbound emails received on this alias will be forwarded into the caller's inbox.\n\n### When to Use\n- Use this endpoint to spin up a fresh, dedicated email address (e.g., `alice-shop@wspc.app`) for specific websites, newsletters, or contexts to prevent spam or categorize incoming mail.\n\n### Constraints\n- Requires a valid Bearer token in the `Authorization` header.\n- **Alias Formatting**: The local part must be between 5 and 32 characters, start with an alphanumeric character, and only contain letters, numbers, dots, underscores, and hyphens.\n- **Custom Domains**: If the address uses a non-platform host, that domain must be registered to the caller's organization and have `status = verified`, `sending_status = verified`, and `receiving_status = verified`.\n- **Limit Check**: Each user is allowed a maximum of 10 active email aliases. Soft-deleted aliases do not count against this quota limit.\n\n### Troubleshooting\n- **401 Unauthorized**: Bearer token is missing, invalid, or expired.\n- **400 Bad Request / INVALID_CHARSET / RESERVED**: The alias local part contains invalid characters, is too short/long, or matches a reserved keyword.\n- **400 Bad Request / ALIAS_DOMAIN_NOT_FOUND**: The custom domain is not registered to the caller's organization.\n- **400 Bad Request / UNVERIFIED_DOMAIN**: The custom domain exists but is not verified yet.\n- **400 Bad Request / ALIAS_DOMAIN_NOT_READY**: The custom domain exists but has not completed sending or receiving verification.\n- **409 Conflict / ALIAS_CONFLICT**: An alias with the exact requested email address already exists globally (whether active or soft-deleted by any user).\n- **429 Too Many Requests / ALIAS_LIMIT_EXCEEDED**: The user has reached the active alias cap limit of 10. A previously deleted alias must be cleaned up or wait for quota availability.",
|
|
19219
|
+
"security": [
|
|
19220
|
+
{
|
|
19221
|
+
"bearerAuth": []
|
|
19222
|
+
}
|
|
19223
|
+
],
|
|
19224
|
+
"parameters": [
|
|
19225
|
+
{
|
|
19226
|
+
"name": "x-cb-email",
|
|
19227
|
+
"in": "header",
|
|
19228
|
+
"required": false,
|
|
19229
|
+
"description": "Optional opaque consistency bookmark returned by a previous email response. Send it back unchanged to continue read-after-write consistency for email D1 data.",
|
|
19230
|
+
"schema": {
|
|
19231
|
+
"type": "string"
|
|
19232
|
+
},
|
|
19233
|
+
"example": "opaque-consistency-bookmark"
|
|
19234
|
+
}
|
|
19235
|
+
],
|
|
19236
|
+
"x-cli": {
|
|
19237
|
+
"command": "alias add",
|
|
19238
|
+
"positional": [
|
|
19239
|
+
"email"
|
|
19240
|
+
],
|
|
19241
|
+
"display": {
|
|
19242
|
+
"shape": "object",
|
|
19243
|
+
"format": {
|
|
19244
|
+
"id": "id-short",
|
|
19245
|
+
"user_id": "id-short",
|
|
19246
|
+
"created_at": "relative-time",
|
|
19247
|
+
"deleted_at": "relative-time"
|
|
19248
|
+
}
|
|
19249
|
+
}
|
|
19250
|
+
},
|
|
19251
|
+
"x-codeSamples": [
|
|
19252
|
+
{
|
|
19253
|
+
"lang": "shell",
|
|
19254
|
+
"label": "curl",
|
|
19255
|
+
"source": "curl -X POST https://api.wspc.ai/email/aliases \\\n -H \"Authorization: Bearer $WSPC_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"email\":\"alice-shop@wspc.app\"}'"
|
|
19256
|
+
},
|
|
19257
|
+
{
|
|
19258
|
+
"lang": "bash",
|
|
19259
|
+
"label": "wspc CLI",
|
|
19260
|
+
"source": "wspc email alias create alice-shop@wspc.app"
|
|
19261
|
+
}
|
|
19262
|
+
],
|
|
19263
|
+
"requestBody": {
|
|
19264
|
+
"required": true,
|
|
19265
|
+
"content": {
|
|
19266
|
+
"application/json": {
|
|
19267
|
+
"schema": {
|
|
19268
|
+
"$ref": "#/components/schemas/CreateAliasBody"
|
|
19269
|
+
},
|
|
19270
|
+
"examples": {
|
|
19271
|
+
"minimal": {
|
|
19272
|
+
"summary": "Minimal — full alias email",
|
|
19273
|
+
"value": {
|
|
19274
|
+
"email": "alice-shop@wspc.app"
|
|
19275
|
+
}
|
|
19276
|
+
},
|
|
19277
|
+
"full": {
|
|
19278
|
+
"summary": "Another active alias for a different context",
|
|
19279
|
+
"value": {
|
|
19280
|
+
"email": "alice-bills@wspc.app"
|
|
19281
|
+
}
|
|
19282
|
+
},
|
|
19283
|
+
"customDomain": {
|
|
19284
|
+
"summary": "Fully verified custom domain alias",
|
|
19285
|
+
"value": {
|
|
19286
|
+
"email": "alice-shop@example.com"
|
|
19287
|
+
}
|
|
19288
|
+
}
|
|
19289
|
+
}
|
|
19290
|
+
}
|
|
19291
|
+
}
|
|
19292
|
+
},
|
|
19293
|
+
"responses": {
|
|
19294
|
+
"201": {
|
|
19295
|
+
"description": "Alias created. The requested address is live immediately.",
|
|
19296
|
+
"headers": {
|
|
19297
|
+
"x-cb-email": {
|
|
19298
|
+
"description": "Opaque consistency bookmark for the latest email database position observed by this request. Store and send it on the next email request to continue read-after-write consistency.",
|
|
19299
|
+
"schema": {
|
|
19300
|
+
"type": "string"
|
|
19301
|
+
}
|
|
19302
|
+
}
|
|
19303
|
+
},
|
|
19304
|
+
"content": {
|
|
19305
|
+
"application/json": {
|
|
19306
|
+
"schema": {
|
|
19307
|
+
"$ref": "#/components/schemas/Alias"
|
|
19308
|
+
},
|
|
19309
|
+
"examples": {
|
|
19310
|
+
"happyPath": {
|
|
19311
|
+
"summary": "Newly created alias",
|
|
19312
|
+
"value": {
|
|
19313
|
+
"email": "alice-shop@wspc.app",
|
|
19314
|
+
"org_id": "org_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
19315
|
+
"user_id": "usr_01HW3K4N9V5G6Z8C2Q7B1Y0M3F",
|
|
19316
|
+
"created_at": 1748736000000
|
|
19317
|
+
}
|
|
19318
|
+
}
|
|
19319
|
+
}
|
|
19320
|
+
}
|
|
19321
|
+
}
|
|
19322
|
+
},
|
|
19323
|
+
"400": {
|
|
19324
|
+
"description": "Invalid alias email address, local part, reserved local part, missing custom domain (`ALIAS_DOMAIN_NOT_FOUND`), unverified custom domain, or custom domain that is not ready for both sending and receiving (`ALIAS_DOMAIN_NOT_READY`).",
|
|
15561
19325
|
"content": {
|
|
15562
19326
|
"application/json": {
|
|
15563
19327
|
"schema": {
|
|
@@ -32667,6 +36431,14 @@
|
|
|
32667
36431
|
"name": "Comments",
|
|
32668
36432
|
"description": "Comments endpoints."
|
|
32669
36433
|
},
|
|
36434
|
+
{
|
|
36435
|
+
"name": "DriveFiles",
|
|
36436
|
+
"description": "DriveFiles endpoints."
|
|
36437
|
+
},
|
|
36438
|
+
{
|
|
36439
|
+
"name": "DriveLibraries",
|
|
36440
|
+
"description": "Drive libraries: organization-scoped file library metadata and lifecycle."
|
|
36441
|
+
},
|
|
32670
36442
|
{
|
|
32671
36443
|
"name": "EmailAliases",
|
|
32672
36444
|
"description": "User-managed platform-domain or fully verified custom-domain email aliases that route inbound mail to the user's inbox."
|