@arke-institute/sdk 2.3.12 → 2.3.13

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.
@@ -6,9 +6,66 @@
6
6
  *
7
7
  * Source: Arke v1 API
8
8
  * Version: 1.0.0
9
- * Generated: 2026-01-14T16:34:47.055Z
9
+ * Generated: 2026-01-22T16:50:20.274Z
10
10
  */
11
11
  type paths = {
12
+ "/ops-reference": {
13
+ parameters: {
14
+ query?: never;
15
+ header?: never;
16
+ path?: never;
17
+ cookie?: never;
18
+ };
19
+ /**
20
+ * Get LLM-friendly API reference
21
+ * @description Returns a condensed, plain-text API operations reference optimized for LLM consumption.
22
+ *
23
+ * This endpoint provides the same information as the OpenAPI spec but in a format that:
24
+ * - Uses ~80% fewer tokens than the full OpenAPI JSON
25
+ * - Preserves full endpoint descriptions
26
+ * - Organizes operations by category
27
+ * - Marks required fields with `*` suffix
28
+ * - Includes auth requirements inline
29
+ *
30
+ * **Format example:**
31
+ * ```
32
+ * ## Collections
33
+ * POST /collections [required] - Create a new collection
34
+ * body: {label*:string, description:string}
35
+ *
36
+ * Creates a collection with the authenticated user as owner.
37
+ * ```
38
+ *
39
+ * Use this for injecting API knowledge into LLM system prompts.
40
+ */
41
+ get: {
42
+ parameters: {
43
+ query?: never;
44
+ header?: never;
45
+ path?: never;
46
+ cookie?: never;
47
+ };
48
+ requestBody?: never;
49
+ responses: {
50
+ /** @description Condensed API operations reference */
51
+ 200: {
52
+ headers: {
53
+ [name: string]: unknown;
54
+ };
55
+ content: {
56
+ "text/plain": string;
57
+ };
58
+ };
59
+ };
60
+ };
61
+ put?: never;
62
+ post?: never;
63
+ delete?: never;
64
+ options?: never;
65
+ head?: never;
66
+ patch?: never;
67
+ trace?: never;
68
+ };
12
69
  "/auth/register": {
13
70
  parameters: {
14
71
  query?: never;
@@ -21,6 +78,10 @@ type paths = {
21
78
  /**
22
79
  * Register new user
23
80
  * @description Creates a user entity from JWT claims. Idempotent - returns existing user if already registered.
81
+ *
82
+ * ---
83
+ * **Permission:** `user:create`
84
+ * **Auth:** jwt-only
24
85
  */
25
86
  post: {
26
87
  parameters: {
@@ -95,6 +156,10 @@ type paths = {
95
156
  /**
96
157
  * Get current user
97
158
  * @description Returns the authenticated user's entity.
159
+ *
160
+ * ---
161
+ * **Permission:** `user:view`
162
+ * **Auth:** required
98
163
  */
99
164
  get: {
100
165
  parameters: {
@@ -155,6 +220,10 @@ type paths = {
155
220
  /**
156
221
  * Get user by ID
157
222
  * @description Returns a user entity by ID. May require authentication depending on permissions.
223
+ *
224
+ * ---
225
+ * **Permission:** `user:view`
226
+ * **Auth:** optional
158
227
  */
159
228
  get: {
160
229
  parameters: {
@@ -210,6 +279,10 @@ type paths = {
210
279
  /**
211
280
  * Update user profile
212
281
  * @description Updates a user's profile. Requires user:update permission (typically self-ownership).
282
+ *
283
+ * ---
284
+ * **Permission:** `user:update`
285
+ * **Auth:** required
213
286
  */
214
287
  put: {
215
288
  parameters: {
@@ -340,6 +413,10 @@ type paths = {
340
413
  /**
341
414
  * List API keys
342
415
  * @description Lists all active API keys for the authenticated user. Returns prefixes only, not full keys.
416
+ *
417
+ * ---
418
+ * **Permission:** `user:credentials`
419
+ * **Auth:** required
343
420
  */
344
421
  get: {
345
422
  parameters: {
@@ -379,6 +456,10 @@ type paths = {
379
456
  /**
380
457
  * Create API key
381
458
  * @description Creates a new API key for the authenticated user. The full key is only returned once - store it securely.
459
+ *
460
+ * ---
461
+ * **Permission:** `user:credentials`
462
+ * **Auth:** required
382
463
  */
383
464
  post: {
384
465
  parameters: {
@@ -437,6 +518,10 @@ type paths = {
437
518
  /**
438
519
  * Revoke API key
439
520
  * @description Revokes an API key by prefix. The key will be immediately invalid.
521
+ *
522
+ * ---
523
+ * **Permission:** `user:credentials`
524
+ * **Auth:** required
440
525
  */
441
526
  delete: {
442
527
  parameters: {
@@ -506,6 +591,10 @@ type paths = {
506
591
  * Results include the role predicate so clients know what access the user has to each collection.
507
592
  *
508
593
  * Supports filtering by predicate (role name) and pagination.
594
+ *
595
+ * ---
596
+ * **Permission:** `user:view`
597
+ * **Auth:** optional
509
598
  */
510
599
  get: {
511
600
  parameters: {
@@ -618,6 +707,11 @@ type paths = {
618
707
  * ## Scoring
619
708
  * - Results use cosine similarity scores (0-1)
620
709
  * - Scores are comparable across collections
710
+ *
711
+ *
712
+ * ---
713
+ * **Permission:** `search:execute`
714
+ * **Auth:** required
621
715
  */
622
716
  post: {
623
717
  parameters: {
@@ -707,6 +801,10 @@ type paths = {
707
801
  /**
708
802
  * Create a new collection
709
803
  * @description Creates a collection with the authenticated user as owner.
804
+ *
805
+ * ---
806
+ * **Permission:** `collection:create`
807
+ * **Auth:** required
710
808
  */
711
809
  post: {
712
810
  parameters: {
@@ -801,6 +899,10 @@ type paths = {
801
899
  /**
802
900
  * Get collection by ID
803
901
  * @description Returns a collection entity by ID.
902
+ *
903
+ * ---
904
+ * **Permission:** `collection:view`
905
+ * **Auth:** optional
804
906
  */
805
907
  get: {
806
908
  parameters: {
@@ -856,6 +958,10 @@ type paths = {
856
958
  /**
857
959
  * Update collection properties
858
960
  * @description Updates collection properties. Requires collection:update permission.
961
+ *
962
+ * ---
963
+ * **Permission:** `collection:update`
964
+ * **Auth:** required
859
965
  */
860
966
  put: {
861
967
  parameters: {
@@ -988,6 +1094,10 @@ type paths = {
988
1094
  /**
989
1095
  * Add a new role
990
1096
  * @description Adds a new role to the collection. Requires collection:manage permission.
1097
+ *
1098
+ * ---
1099
+ * **Permission:** `collection:manage`
1100
+ * **Auth:** required
991
1101
  */
992
1102
  post: {
993
1103
  parameters: {
@@ -1100,6 +1210,10 @@ type paths = {
1100
1210
  /**
1101
1211
  * Update role actions
1102
1212
  * @description Updates the actions for an existing role. Requires collection:manage permission.
1213
+ *
1214
+ * ---
1215
+ * **Permission:** `collection:manage`
1216
+ * **Auth:** required
1103
1217
  */
1104
1218
  put: {
1105
1219
  parameters: {
@@ -1201,6 +1315,10 @@ type paths = {
1201
1315
  /**
1202
1316
  * Delete a role
1203
1317
  * @description Deletes a role from the collection. Requires collection:manage permission.
1318
+ *
1319
+ * ---
1320
+ * **Permission:** `collection:manage`
1321
+ * **Auth:** required
1204
1322
  */
1205
1323
  delete: {
1206
1324
  parameters: {
@@ -1284,6 +1402,10 @@ type paths = {
1284
1402
  /**
1285
1403
  * List collection members
1286
1404
  * @description Returns all members of the collection grouped by type. By default, expired memberships are excluded.
1405
+ *
1406
+ * ---
1407
+ * **Permission:** `collection:view`
1408
+ * **Auth:** optional
1287
1409
  */
1288
1410
  get: {
1289
1411
  parameters: {
@@ -1342,6 +1464,10 @@ type paths = {
1342
1464
  /**
1343
1465
  * Assign user to role
1344
1466
  * @description Assigns a user to a role in the collection. Requires collection:manage permission.
1467
+ *
1468
+ * ---
1469
+ * **Permission:** `collection:manage`
1470
+ * **Auth:** required
1345
1471
  */
1346
1472
  post: {
1347
1473
  parameters: {
@@ -1456,6 +1582,10 @@ type paths = {
1456
1582
  /**
1457
1583
  * Remove user from role
1458
1584
  * @description Removes a user from a role in the collection. Requires collection:manage permission.
1585
+ *
1586
+ * ---
1587
+ * **Permission:** `collection:manage`
1588
+ * **Auth:** required
1459
1589
  */
1460
1590
  delete: {
1461
1591
  parameters: {
@@ -1581,6 +1711,10 @@ type paths = {
1581
1711
  * - Collection → Entity (predicate: 'root')
1582
1712
  *
1583
1713
  * Requires collection:update permission on the collection.
1714
+ *
1715
+ * ---
1716
+ * **Permission:** `collection:update`
1717
+ * **Auth:** required
1584
1718
  */
1585
1719
  put: {
1586
1720
  parameters: {
@@ -1713,6 +1847,10 @@ type paths = {
1713
1847
  * @description Returns entities belonging to this collection from the graph database.
1714
1848
  *
1715
1849
  * Supports pagination and optional type filtering. Results are ordered by creation date (newest first).
1850
+ *
1851
+ * ---
1852
+ * **Permission:** `collection:view`
1853
+ * **Auth:** optional
1716
1854
  */
1717
1855
  get: {
1718
1856
  parameters: {
@@ -1796,6 +1934,10 @@ type paths = {
1796
1934
  /**
1797
1935
  * Create a new entity
1798
1936
  * @description Creates a generic entity of any type. For type-specific validation, use type-specific endpoints.
1937
+ *
1938
+ * ---
1939
+ * **Permission:** `entity:create`
1940
+ * **Auth:** required
1799
1941
  */
1800
1942
  post: {
1801
1943
  parameters: {
@@ -1908,6 +2050,10 @@ type paths = {
1908
2050
  /**
1909
2051
  * Get entity by ID
1910
2052
  * @description Returns any entity by ID. Permission check uses parent collection if entity belongs to one.
2053
+ *
2054
+ * ---
2055
+ * **Permission:** `entity:view`
2056
+ * **Auth:** optional
1911
2057
  */
1912
2058
  get: {
1913
2059
  parameters: {
@@ -1962,7 +2108,30 @@ type paths = {
1962
2108
  };
1963
2109
  /**
1964
2110
  * Update entity
1965
- * @description Updates any entity with merge semantics. Properties are deep merged, relationships use upsert semantics. Use properties_remove and relationships_remove for deletions. Note: entity:update on a collection requires collection:update permission.
2111
+ * @description Updates an entity with merge semantics. **This is the recommended way to manage relationships.**
2112
+ *
2113
+ * - `relationships_add`: Upsert relationships (properties are merged if relationship exists)
2114
+ * - `relationships_remove`: Remove by predicate/peer
2115
+ * - `properties`: Deep merged with existing
2116
+ * - `properties_remove`: Remove nested properties using nested object structure
2117
+ *
2118
+ * **properties_remove syntax:**
2119
+ * - Top-level keys: `["field1", "field2"]`
2120
+ * - Nested keys: `{ parent: { child: ["key_to_remove"] } }`
2121
+ * - **Dot notation is NOT supported** - `["parent.child.key"]` will NOT work
2122
+ *
2123
+ * Example to remove `config.options.debug`:
2124
+ * ```json
2125
+ * { "properties_remove": { "config": { "options": ["debug"] } } }
2126
+ * ```
2127
+ *
2128
+ * Use `/relationships` only for bidirectional links updating two entities atomically.
2129
+ *
2130
+ * Note: entity:update on a collection requires collection:update permission.
2131
+ *
2132
+ * ---
2133
+ * **Permission:** `entity:update`
2134
+ * **Auth:** required
1966
2135
  */
1967
2136
  put: {
1968
2137
  parameters: {
@@ -2080,6 +2249,10 @@ type paths = {
2080
2249
  /**
2081
2250
  * Delete entity
2082
2251
  * @description Soft-deletes an entity by creating a tombstone version. The entity can be restored later via POST /entities/:id/restore. Note: entity:delete on a collection requires collection:delete permission.
2252
+ *
2253
+ * ---
2254
+ * **Permission:** `entity:delete`
2255
+ * **Auth:** required
2083
2256
  */
2084
2257
  delete: {
2085
2258
  parameters: {
@@ -2198,6 +2371,66 @@ type paths = {
2198
2371
  patch?: never;
2199
2372
  trace?: never;
2200
2373
  };
2374
+ "/entities/{id}/tip": {
2375
+ parameters: {
2376
+ query?: never;
2377
+ header?: never;
2378
+ path?: never;
2379
+ cookie?: never;
2380
+ };
2381
+ /**
2382
+ * Get entity tip CID
2383
+ * @description Returns only the current manifest CID (tip) for an entity. Lightweight endpoint for CAS operations - single Durable Object lookup, no manifest fetch, no permission check.
2384
+ *
2385
+ * ---
2386
+ * **Permission:** `entity:tip`
2387
+ * **Auth:** none
2388
+ */
2389
+ get: {
2390
+ parameters: {
2391
+ query?: never;
2392
+ header?: never;
2393
+ path: {
2394
+ /** @description Entity ID (ULID) */
2395
+ id: string;
2396
+ };
2397
+ cookie?: never;
2398
+ };
2399
+ requestBody?: never;
2400
+ responses: {
2401
+ /** @description Tip found */
2402
+ 200: {
2403
+ headers: {
2404
+ [name: string]: unknown;
2405
+ };
2406
+ content: {
2407
+ "application/json": components["schemas"]["TipResponse"];
2408
+ };
2409
+ };
2410
+ /** @description Not Found - Resource does not exist */
2411
+ 404: {
2412
+ headers: {
2413
+ [name: string]: unknown;
2414
+ };
2415
+ content: {
2416
+ /**
2417
+ * @example {
2418
+ * "error": "Entity not found"
2419
+ * }
2420
+ */
2421
+ "application/json": components["schemas"]["ErrorResponse"];
2422
+ };
2423
+ };
2424
+ };
2425
+ };
2426
+ put?: never;
2427
+ post?: never;
2428
+ delete?: never;
2429
+ options?: never;
2430
+ head?: never;
2431
+ patch?: never;
2432
+ trace?: never;
2433
+ };
2201
2434
  "/entities/{id}/restore": {
2202
2435
  parameters: {
2203
2436
  query?: never;
@@ -2210,6 +2443,10 @@ type paths = {
2210
2443
  /**
2211
2444
  * Restore deleted entity
2212
2445
  * @description Restores a deleted entity by finding the last non-deleted version and creating a new version from it. Note: entity:restore on a collection requires collection:restore permission.
2446
+ *
2447
+ * ---
2448
+ * **Permission:** `entity:restore`
2449
+ * **Auth:** required
2213
2450
  */
2214
2451
  post: {
2215
2452
  parameters: {
@@ -2339,6 +2576,10 @@ type paths = {
2339
2576
  /**
2340
2577
  * Get entity collection
2341
2578
  * @description Returns the collection ID that this entity belongs to. Returns null if the entity is not in any collection. If the entity IS a collection, returns its own ID.
2579
+ *
2580
+ * ---
2581
+ * **Permission:** `entity:view`
2582
+ * **Auth:** optional
2342
2583
  */
2343
2584
  get: {
2344
2585
  parameters: {
@@ -2419,6 +2660,10 @@ type paths = {
2419
2660
  * - `collection`: Constrain to entities in this collection
2420
2661
  * - `predicates`: Comma-separated predicates to follow (e.g., "contains")
2421
2662
  * - `limit`: Max nodes to return (default 100)
2663
+ *
2664
+ * ---
2665
+ * **Permission:** `entity:view`
2666
+ * **Auth:** optional
2422
2667
  */
2423
2668
  get: {
2424
2669
  parameters: {
@@ -2507,6 +2752,10 @@ type paths = {
2507
2752
  * - Both: Compare any two versions
2508
2753
  *
2509
2754
  * For version 1 entities (no previous version), "from" is null and all content appears as added.
2755
+ *
2756
+ * ---
2757
+ * **Permission:** `entity:view`
2758
+ * **Auth:** optional
2510
2759
  */
2511
2760
  get: {
2512
2761
  parameters: {
@@ -2623,6 +2872,10 @@ type paths = {
2623
2872
  * - For files: entity:* and file:* actions
2624
2873
  * - For collections: entity:* and collection:* actions
2625
2874
  * - etc.
2875
+ *
2876
+ * ---
2877
+ * **Permission:** `entity:view`
2878
+ * **Auth:** required
2626
2879
  */
2627
2880
  get: {
2628
2881
  parameters: {
@@ -2710,14 +2963,20 @@ type paths = {
2710
2963
  * Add relationship between entities
2711
2964
  * @description Creates a relationship from source to target entity.
2712
2965
  *
2713
- * If `target_predicate` is provided, creates a **bidirectional** relationship:
2714
- * - Adds `source_predicate` relationship on source pointing to target
2715
- * - Adds `target_predicate` relationship on target pointing to source
2716
- * - Requires `entity:update` permission on both entities
2966
+ * **⚠️ For single-entity updates, prefer `PUT /entities/:id` with `relationships_add` - simpler API, one CAS guard, can update properties too.**
2717
2967
  *
2718
- * If `target_predicate` is omitted, creates a **unidirectional** relationship:
2719
- * - Adds `source_predicate` relationship on source pointing to target
2720
- * - Requires `entity:update` permission on source only
2968
+ * Use this endpoint only for **bidirectional** relationships requiring atomic updates to TWO entities.
2969
+ *
2970
+ * If `target_predicate` is provided (bidirectional):
2971
+ * - Updates both source and target entities
2972
+ * - Requires `entity:update` on both, plus two CAS guards
2973
+ *
2974
+ * If `target_predicate` is omitted (unidirectional):
2975
+ * - Use `PUT /entities/:id` instead
2976
+ *
2977
+ * ---
2978
+ * **Permission:** `entity:update`
2979
+ * **Auth:** required
2721
2980
  */
2722
2981
  post: {
2723
2982
  parameters: {
@@ -2832,14 +3091,20 @@ type paths = {
2832
3091
  * Remove relationship between entities
2833
3092
  * @description Removes a relationship from source to target entity.
2834
3093
  *
2835
- * If `target_predicate` is provided, removes a **bidirectional** relationship:
2836
- * - Removes `source_predicate` relationship from source
2837
- * - Removes `target_predicate` relationship from target
2838
- * - Requires `entity:update` permission on both entities
3094
+ * **⚠️ For single-entity updates, prefer `PUT /entities/:id` with `relationships_remove` - simpler API, one CAS guard, can update properties too.**
3095
+ *
3096
+ * Use this endpoint only for **bidirectional** relationships requiring atomic updates to TWO entities.
2839
3097
  *
2840
- * If `target_predicate` is omitted, removes a **unidirectional** relationship:
2841
- * - Removes `source_predicate` relationship from source
2842
- * - Requires `entity:update` permission on source only
3098
+ * If `target_predicate` is provided (bidirectional):
3099
+ * - Updates both source and target entities
3100
+ * - Requires `entity:update` on both, plus two CAS guards
3101
+ *
3102
+ * If `target_predicate` is omitted (unidirectional):
3103
+ * - Use `PUT /entities/:id` instead
3104
+ *
3105
+ * ---
3106
+ * **Permission:** `entity:update`
3107
+ * **Auth:** required
2843
3108
  */
2844
3109
  delete: {
2845
3110
  parameters: {
@@ -2975,6 +3240,10 @@ type paths = {
2975
3240
  *
2976
3241
  * Use this for simple entity linking. For bidirectional relationships or
2977
3242
  * advanced options, use the `/relationships` endpoint.
3243
+ *
3244
+ * ---
3245
+ * **Permission:** `entity:update`
3246
+ * **Auth:** required
2978
3247
  */
2979
3248
  post: {
2980
3249
  parameters: {
@@ -3109,6 +3378,10 @@ type paths = {
3109
3378
  * - Only requires `entity:update` permission on source entity
3110
3379
  *
3111
3380
  * For bidirectional removal, use the `/relationships` endpoint.
3381
+ *
3382
+ * ---
3383
+ * **Permission:** `entity:update`
3384
+ * **Auth:** required
3112
3385
  */
3113
3386
  post: {
3114
3387
  parameters: {
@@ -3247,6 +3520,10 @@ type paths = {
3247
3520
  * ## Key Best Practice
3248
3521
  * Use a unique identifier as the key (e.g., version number, timestamp).
3249
3522
  * The actual CID is computed during upload.
3523
+ *
3524
+ * ---
3525
+ * **Permission:** `file:create`
3526
+ * **Auth:** required
3250
3527
  */
3251
3528
  post: {
3252
3529
  parameters: {
@@ -3359,6 +3636,10 @@ type paths = {
3359
3636
  /**
3360
3637
  * Get file metadata
3361
3638
  * @description Returns file entity metadata. Use /{id}/content to download the file content.
3639
+ *
3640
+ * ---
3641
+ * **Permission:** `file:view`
3642
+ * **Auth:** optional
3362
3643
  */
3363
3644
  get: {
3364
3645
  parameters: {
@@ -3420,6 +3701,10 @@ type paths = {
3420
3701
  * This allows "regressing" to a previous file version.
3421
3702
  *
3422
3703
  * To upload a new file, use POST /{id}/reupload instead.
3704
+ *
3705
+ * ---
3706
+ * **Permission:** `file:update`
3707
+ * **Auth:** required
3423
3708
  */
3424
3709
  put: {
3425
3710
  parameters: {
@@ -3558,6 +3843,10 @@ type paths = {
3558
3843
  *
3559
3844
  * ## Streaming
3560
3845
  * Response is streamed directly from R2 storage.
3846
+ *
3847
+ * ---
3848
+ * **Permission:** `file:download`
3849
+ * **Auth:** optional
3561
3850
  */
3562
3851
  get: {
3563
3852
  parameters: {
@@ -3631,6 +3920,10 @@ type paths = {
3631
3920
  * ## Idempotency
3632
3921
  * Re-uploading content for an already-uploaded file will fail with 409 Conflict.
3633
3922
  * Use POST /{id}/reupload first to create a new version.
3923
+ *
3924
+ * ---
3925
+ * **Permission:** `file:upload`
3926
+ * **Auth:** required
3634
3927
  */
3635
3928
  post: {
3636
3929
  parameters: {
@@ -3791,6 +4084,10 @@ type paths = {
3791
4084
  * ## Key Requirement
3792
4085
  * The new key must NOT already exist in R2 (no overwrites).
3793
4086
  * Previous file versions remain accessible via manifest history.
4087
+ *
4088
+ * ---
4089
+ * **Permission:** `file:reupload`
4090
+ * **Auth:** required
3794
4091
  */
3795
4092
  post: {
3796
4093
  parameters: {
@@ -3926,6 +4223,10 @@ type paths = {
3926
4223
  * If a parent folder is specified, a bidirectional relationship is created:
3927
4224
  * - Parent folder contains this folder
3928
4225
  * - This folder is in parent folder
4226
+ *
4227
+ * ---
4228
+ * **Permission:** `folder:create`
4229
+ * **Auth:** required
3929
4230
  */
3930
4231
  post: {
3931
4232
  parameters: {
@@ -4020,6 +4321,10 @@ type paths = {
4020
4321
  /**
4021
4322
  * Get folder
4022
4323
  * @description Returns folder metadata including children and parent relationships.
4324
+ *
4325
+ * ---
4326
+ * **Permission:** `folder:view`
4327
+ * **Auth:** optional
4023
4328
  */
4024
4329
  get: {
4025
4330
  parameters: {
@@ -4075,6 +4380,10 @@ type paths = {
4075
4380
  /**
4076
4381
  * Update folder
4077
4382
  * @description Updates folder properties (label, description, metadata). Properties are merged.
4383
+ *
4384
+ * ---
4385
+ * **Permission:** `folder:update`
4386
+ * **Auth:** required
4078
4387
  */
4079
4388
  put: {
4080
4389
  parameters: {
@@ -4213,6 +4522,10 @@ type paths = {
4213
4522
  * - Child is in folder
4214
4523
  *
4215
4524
  * **Idempotent**: if relationship already exists, returns current state without error.
4525
+ *
4526
+ * ---
4527
+ * **Permission:** `folder:update`
4528
+ * **Auth:** required
4216
4529
  */
4217
4530
  post: {
4218
4531
  parameters: {
@@ -4345,6 +4658,10 @@ type paths = {
4345
4658
  /**
4346
4659
  * Remove child from folder
4347
4660
  * @description Removes a child entity from this folder (bidirectional).
4661
+ *
4662
+ * ---
4663
+ * **Permission:** `folder:update`
4664
+ * **Auth:** required
4348
4665
  */
4349
4666
  delete: {
4350
4667
  parameters: {
@@ -4487,6 +4804,10 @@ type paths = {
4487
4804
  *
4488
4805
  * **Idempotent**: skips children that already have the relationship.
4489
4806
  * Returns both added and skipped children in the response.
4807
+ *
4808
+ * ---
4809
+ * **Permission:** `folder:update`
4810
+ * **Auth:** required
4490
4811
  */
4491
4812
  post: {
4492
4813
  parameters: {
@@ -4624,6 +4945,10 @@ type paths = {
4624
4945
  * - This folder is in parent
4625
4946
  *
4626
4947
  * **Idempotent**: if relationship already exists, returns current state without error.
4948
+ *
4949
+ * ---
4950
+ * **Permission:** `folder:update`
4951
+ * **Auth:** required
4627
4952
  */
4628
4953
  post: {
4629
4954
  parameters: {
@@ -4756,6 +5081,10 @@ type paths = {
4756
5081
  /**
4757
5082
  * Remove parent from folder
4758
5083
  * @description Removes this folder from a parent folder (bidirectional).
5084
+ *
5085
+ * ---
5086
+ * **Permission:** `folder:update`
5087
+ * **Auth:** required
4759
5088
  */
4760
5089
  delete: {
4761
5090
  parameters: {
@@ -4886,6 +5215,10 @@ type paths = {
4886
5215
  /**
4887
5216
  * List version history
4888
5217
  * @description Returns version metadata for an entity (newest first). Use pagination for entities with many versions.
5218
+ *
5219
+ * ---
5220
+ * **Permission:** `entity:view`
5221
+ * **Auth:** optional
4889
5222
  */
4890
5223
  get: {
4891
5224
  parameters: {
@@ -4986,6 +5319,10 @@ type paths = {
4986
5319
  /**
4987
5320
  * Get manifest by CID
4988
5321
  * @description Returns the full manifest for any version by its CID. Permission is checked against the entity ID in the manifest.
5322
+ *
5323
+ * ---
5324
+ * **Permission:** `entity:view`
5325
+ * **Auth:** optional
4989
5326
  */
4990
5327
  get: {
4991
5328
  parameters: {
@@ -5063,6 +5400,10 @@ type paths = {
5063
5400
  * - Validating actions client-side
5064
5401
  *
5065
5402
  * All data is auto-generated from the actual permission system, so it's always in sync with the code.
5403
+ *
5404
+ * ---
5405
+ * **Permission:** `permissions:read`
5406
+ * **Auth:** none
5066
5407
  */
5067
5408
  get: {
5068
5409
  parameters: {
@@ -5104,6 +5445,10 @@ type paths = {
5104
5445
  /**
5105
5446
  * Create an agent
5106
5447
  * @description Creates a new agent entity. Requires agent:create permission in the target collection.
5448
+ *
5449
+ * ---
5450
+ * **Permission:** `agent:create`
5451
+ * **Auth:** required
5107
5452
  */
5108
5453
  post: {
5109
5454
  parameters: {
@@ -5212,6 +5557,10 @@ type paths = {
5212
5557
  /**
5213
5558
  * Get agent by ID
5214
5559
  * @description Returns an agent entity by ID.
5560
+ *
5561
+ * ---
5562
+ * **Permission:** `agent:view`
5563
+ * **Auth:** optional
5215
5564
  */
5216
5565
  get: {
5217
5566
  parameters: {
@@ -5267,6 +5616,16 @@ type paths = {
5267
5616
  /**
5268
5617
  * Update agent
5269
5618
  * @description Updates an agent. Requires agent:update permission.
5619
+ *
5620
+ * **Field placement:** Agent-specific fields (`label`, `endpoint`, `actions_required`, `input_schema`, etc.) must be at the root level, NOT inside `properties`. The `properties` bag is for additional custom data only.
5621
+ *
5622
+ * **properties_remove syntax:** Use nested objects, not dot notation.
5623
+ * - Correct: `{ "input_schema": { "properties": ["field_to_remove"] } }`
5624
+ * - Wrong: `["input_schema.properties.field_to_remove"]`
5625
+ *
5626
+ * ---
5627
+ * **Permission:** `agent:update`
5628
+ * **Auth:** required
5270
5629
  */
5271
5630
  put: {
5272
5631
  parameters: {
@@ -5400,11 +5759,17 @@ type paths = {
5400
5759
  * Invoke an agent
5401
5760
  * @description Invoke an agent to perform work on a target collection.
5402
5761
  *
5762
+ * **Note:** The `target` parameter must be a collection ID. Agents receive permissions scoped to collections, not individual entities. To process a specific entity, pass the collection it belongs to.
5763
+ *
5403
5764
  * **Two-phase interaction:**
5404
- * 1. First call with `confirm: false` (default) returns a preview of permissions that will be granted
5405
- * 2. After user reviews and confirms, call again with `confirm: true` to execute
5765
+ * 1. `confirm: false` (default) - preview permissions that will be granted
5766
+ * 2. `confirm: true` - execute the agent
5406
5767
  *
5407
5768
  * The agent receives temporal (time-limited) permissions on the target collection.
5769
+ *
5770
+ * ---
5771
+ * **Permission:** `agent:invoke`
5772
+ * **Auth:** required
5408
5773
  */
5409
5774
  post: {
5410
5775
  parameters: {
@@ -5525,6 +5890,10 @@ type paths = {
5525
5890
  /**
5526
5891
  * List API keys for agent
5527
5892
  * @description Lists all active API keys for the agent (without the actual key values).
5893
+ *
5894
+ * ---
5895
+ * **Permission:** `agent:manage`
5896
+ * **Auth:** required
5528
5897
  */
5529
5898
  get: {
5530
5899
  parameters: {
@@ -5595,6 +5964,10 @@ type paths = {
5595
5964
  /**
5596
5965
  * Create API key for agent
5597
5966
  * @description Creates an API key for the agent. The full key is only returned once.
5967
+ *
5968
+ * ---
5969
+ * **Permission:** `agent:manage`
5970
+ * **Auth:** required
5598
5971
  */
5599
5972
  post: {
5600
5973
  parameters: {
@@ -5709,6 +6082,10 @@ type paths = {
5709
6082
  /**
5710
6083
  * Revoke API key
5711
6084
  * @description Revokes an API key for the agent.
6085
+ *
6086
+ * ---
6087
+ * **Permission:** `agent:manage`
6088
+ * **Auth:** required
5712
6089
  */
5713
6090
  delete: {
5714
6091
  parameters: {
@@ -5779,103 +6156,60 @@ type paths = {
5779
6156
  patch?: never;
5780
6157
  trace?: never;
5781
6158
  };
5782
- "/events": {
6159
+ "/agents/{id}/verify": {
5783
6160
  parameters: {
5784
6161
  query?: never;
5785
6162
  header?: never;
5786
6163
  path?: never;
5787
6164
  cookie?: never;
5788
6165
  };
6166
+ get?: never;
6167
+ put?: never;
5789
6168
  /**
5790
- * List entity change events
5791
- * @description Returns a cursor-based list of entity change events for client synchronization.
6169
+ * Verify agent endpoint ownership
6170
+ * @description Verify that you control the agent's endpoint URL. This is required before activating an agent.
5792
6171
  *
5793
- * **Usage:**
5794
- * - Call without cursor to get newest events
5795
- * - Use returned `cursor` as `?cursor=` to get older events
5796
- * - Poll without cursor periodically to check for new events
5797
- *
5798
- * **Sync flow:**
5799
- * 1. Initial: `GET /events` → get newest, save highest `id` as high-water mark
5800
- * 2. Paginate: `GET /events?cursor=X` → get older events until `has_more=false`
5801
- * 3. Poll: `GET /events` → if newest `id` > high-water mark, process new events
6172
+ * **Two-phase flow:**
6173
+ * 1. Call without `confirm` to get a verification token
6174
+ * 2. Deploy `/.well-known/arke-verification` endpoint returning the token
6175
+ * 3. Call with `confirm: true` to complete verification
5802
6176
  *
5803
- * **Event data:**
5804
- * - `id`: Auto-increment ID
5805
- * - `pi`: Entity ID that changed
5806
- * - `cid`: New manifest CID
5807
- * - `ts`: ISO timestamp
6177
+ * **Verification endpoint format:**
6178
+ * Your endpoint must return JSON:
6179
+ * ```json
6180
+ * {
6181
+ * "verification_token": "vt_xxx...",
6182
+ * "agent_id": "IIxxx..."
6183
+ * }
6184
+ * ```
5808
6185
  *
5809
- * Events are ephemeral (30-day rolling window) - for full sync, use snapshots.
5810
- */
5811
- get: {
5812
- parameters: {
5813
- query?: {
5814
- /** @description Return events older than this id (from previous response cursor) */
5815
- cursor?: number;
5816
- /** @description Maximum number of events to return (default: 100, max: 1000) */
5817
- limit?: number;
5818
- /** @description Network to query (default: main) */
5819
- network?: "main" | "test";
5820
- };
5821
- header?: never;
5822
- path?: never;
5823
- cookie?: never;
5824
- };
5825
- requestBody?: never;
5826
- responses: {
5827
- /** @description Events list */
5828
- 200: {
5829
- headers: {
5830
- [name: string]: unknown;
5831
- };
5832
- content: {
5833
- "application/json": components["schemas"]["EventsListResponse"];
5834
- };
5835
- };
5836
- };
5837
- };
5838
- put?: never;
5839
- post?: never;
5840
- delete?: never;
5841
- options?: never;
5842
- head?: never;
5843
- patch?: never;
5844
- trace?: never;
5845
- };
5846
- "/graph/paths": {
5847
- parameters: {
5848
- query?: never;
5849
- header?: never;
5850
- path?: never;
5851
- cookie?: never;
5852
- };
5853
- get?: never;
5854
- put?: never;
5855
- /**
5856
- * Find paths between entities
5857
- * @description Find shortest paths between source and target entity sets using graph traversal.
6186
+ * ---
6187
+ * **Permission:** `agent:manage`
6188
+ * **Auth:** required
5858
6189
  */
5859
6190
  post: {
5860
6191
  parameters: {
5861
6192
  query?: never;
5862
6193
  header?: never;
5863
- path?: never;
6194
+ path: {
6195
+ /** @description Entity ID (ULID) */
6196
+ id: string;
6197
+ };
5864
6198
  cookie?: never;
5865
6199
  };
5866
6200
  requestBody?: {
5867
6201
  content: {
5868
- "application/json": components["schemas"]["PathsBetweenRequest"];
6202
+ "application/json": components["schemas"]["VerifyAgentRequest"];
5869
6203
  };
5870
6204
  };
5871
6205
  responses: {
5872
- /** @description Paths found */
6206
+ /** @description Verification token (when confirm is false) or verification result (when confirm is true) */
5873
6207
  200: {
5874
6208
  headers: {
5875
6209
  [name: string]: unknown;
5876
6210
  };
5877
6211
  content: {
5878
- "application/json": components["schemas"]["PathsBetweenResponse"];
6212
+ "application/json": components["schemas"]["VerifyAgentTokenResponse"] | components["schemas"]["VerifyAgentSuccessResponse"] | components["schemas"]["VerifyAgentFailureResponse"];
5879
6213
  };
5880
6214
  };
5881
6215
  /** @description Bad Request - Invalid input */
@@ -5903,26 +6237,298 @@ type paths = {
5903
6237
  "application/json": components["schemas"]["ValidationErrorResponse"];
5904
6238
  };
5905
6239
  };
5906
- };
5907
- };
5908
- delete?: never;
5909
- options?: never;
5910
- head?: never;
5911
- patch?: never;
5912
- trace?: never;
5913
- };
5914
- "/graph/reachable": {
5915
- parameters: {
5916
- query?: never;
5917
- header?: never;
5918
- path?: never;
5919
- cookie?: never;
5920
- };
5921
- get?: never;
5922
- put?: never;
6240
+ /** @description Unauthorized - Missing or invalid authentication */
6241
+ 401: {
6242
+ headers: {
6243
+ [name: string]: unknown;
6244
+ };
6245
+ content: {
6246
+ /**
6247
+ * @example {
6248
+ * "error": "Unauthorized: Missing or invalid authentication token"
6249
+ * }
6250
+ */
6251
+ "application/json": components["schemas"]["ErrorResponse"];
6252
+ };
6253
+ };
6254
+ /** @description Forbidden - Insufficient permissions */
6255
+ 403: {
6256
+ headers: {
6257
+ [name: string]: unknown;
6258
+ };
6259
+ content: {
6260
+ /**
6261
+ * @example {
6262
+ * "error": "Forbidden: You do not have permission to perform this action"
6263
+ * }
6264
+ */
6265
+ "application/json": components["schemas"]["ErrorResponse"];
6266
+ };
6267
+ };
6268
+ /** @description Not Found - Resource does not exist */
6269
+ 404: {
6270
+ headers: {
6271
+ [name: string]: unknown;
6272
+ };
6273
+ content: {
6274
+ /**
6275
+ * @example {
6276
+ * "error": "Entity not found"
6277
+ * }
6278
+ */
6279
+ "application/json": components["schemas"]["ErrorResponse"];
6280
+ };
6281
+ };
6282
+ };
6283
+ };
6284
+ delete?: never;
6285
+ options?: never;
6286
+ head?: never;
6287
+ patch?: never;
6288
+ trace?: never;
6289
+ };
6290
+ "/jobs/{id}": {
6291
+ parameters: {
6292
+ query?: never;
6293
+ header?: never;
6294
+ path?: never;
6295
+ cookie?: never;
6296
+ };
5923
6297
  /**
5924
- * Find reachable entities
5925
- * @description Find all entities of a specific type reachable from source entities within N hops.
6298
+ * Get job status
6299
+ * @description Returns focused job status and summary. Use this endpoint for quick status polling.
6300
+ *
6301
+ * Returns 404 if the entity is not a job collection.
6302
+ *
6303
+ * **Response includes:**
6304
+ * - Current status (running/done/error)
6305
+ * - Timestamps (started_at, completed_at)
6306
+ * - Agent references (agent, main_agent, target)
6307
+ * - Counts (files_count, sub_jobs_count)
6308
+ *
6309
+ * ---
6310
+ * **Permission:** `collection:view`
6311
+ * **Auth:** optional
6312
+ */
6313
+ get: {
6314
+ parameters: {
6315
+ query?: never;
6316
+ header?: never;
6317
+ path: {
6318
+ /** @description Entity ID (ULID) */
6319
+ id: string;
6320
+ };
6321
+ cookie?: never;
6322
+ };
6323
+ requestBody?: never;
6324
+ responses: {
6325
+ /** @description Job status */
6326
+ 200: {
6327
+ headers: {
6328
+ [name: string]: unknown;
6329
+ };
6330
+ content: {
6331
+ "application/json": components["schemas"]["JobStatusResponse"];
6332
+ };
6333
+ };
6334
+ /** @description Forbidden - Insufficient permissions */
6335
+ 403: {
6336
+ headers: {
6337
+ [name: string]: unknown;
6338
+ };
6339
+ content: {
6340
+ /**
6341
+ * @example {
6342
+ * "error": "Forbidden: You do not have permission to perform this action"
6343
+ * }
6344
+ */
6345
+ "application/json": components["schemas"]["ErrorResponse"];
6346
+ };
6347
+ };
6348
+ /** @description Not Found - Resource does not exist */
6349
+ 404: {
6350
+ headers: {
6351
+ [name: string]: unknown;
6352
+ };
6353
+ content: {
6354
+ /**
6355
+ * @example {
6356
+ * "error": "Entity not found"
6357
+ * }
6358
+ */
6359
+ "application/json": components["schemas"]["ErrorResponse"];
6360
+ };
6361
+ };
6362
+ };
6363
+ };
6364
+ put?: never;
6365
+ post?: never;
6366
+ delete?: never;
6367
+ options?: never;
6368
+ head?: never;
6369
+ patch?: never;
6370
+ trace?: never;
6371
+ };
6372
+ "/events": {
6373
+ parameters: {
6374
+ query?: never;
6375
+ header?: never;
6376
+ path?: never;
6377
+ cookie?: never;
6378
+ };
6379
+ /**
6380
+ * List entity change events
6381
+ * @description Returns a cursor-based list of entity change events for client synchronization.
6382
+ *
6383
+ * **Usage:**
6384
+ * - Call without cursor to get newest events
6385
+ * - Use returned `cursor` as `?cursor=` to get older events
6386
+ * - Poll without cursor periodically to check for new events
6387
+ *
6388
+ * **Sync flow:**
6389
+ * 1. Initial: `GET /events` → get newest, save highest `id` as high-water mark
6390
+ * 2. Paginate: `GET /events?cursor=X` → get older events until `has_more=false`
6391
+ * 3. Poll: `GET /events` → if newest `id` > high-water mark, process new events
6392
+ *
6393
+ * **Event data:**
6394
+ * - `id`: Auto-increment ID
6395
+ * - `pi`: Entity ID that changed
6396
+ * - `cid`: New manifest CID
6397
+ * - `ts`: ISO timestamp
6398
+ *
6399
+ * Events are ephemeral (30-day rolling window) - for full sync, use snapshots.
6400
+ *
6401
+ * ---
6402
+ * **Permission:** `events:list`
6403
+ * **Auth:** none
6404
+ */
6405
+ get: {
6406
+ parameters: {
6407
+ query?: {
6408
+ /** @description Return events older than this id (from previous response cursor) */
6409
+ cursor?: number;
6410
+ /** @description Maximum number of events to return (default: 100, max: 1000) */
6411
+ limit?: number;
6412
+ /** @description Network to query (default: main) */
6413
+ network?: "main" | "test";
6414
+ };
6415
+ header?: never;
6416
+ path?: never;
6417
+ cookie?: never;
6418
+ };
6419
+ requestBody?: never;
6420
+ responses: {
6421
+ /** @description Events list */
6422
+ 200: {
6423
+ headers: {
6424
+ [name: string]: unknown;
6425
+ };
6426
+ content: {
6427
+ "application/json": components["schemas"]["EventsListResponse"];
6428
+ };
6429
+ };
6430
+ };
6431
+ };
6432
+ put?: never;
6433
+ post?: never;
6434
+ delete?: never;
6435
+ options?: never;
6436
+ head?: never;
6437
+ patch?: never;
6438
+ trace?: never;
6439
+ };
6440
+ "/graph/paths": {
6441
+ parameters: {
6442
+ query?: never;
6443
+ header?: never;
6444
+ path?: never;
6445
+ cookie?: never;
6446
+ };
6447
+ get?: never;
6448
+ put?: never;
6449
+ /**
6450
+ * Find paths between entities
6451
+ * @description Find shortest paths between source and target entity sets. Returns all paths up to the limit (default 100).
6452
+ *
6453
+ * Use this when you know both endpoints and want to discover how they connect - for example, finding the chain of relationships between a person and a document.
6454
+ *
6455
+ * ---
6456
+ * **Permission:** `graph:query`
6457
+ * **Auth:** required
6458
+ */
6459
+ post: {
6460
+ parameters: {
6461
+ query?: never;
6462
+ header?: never;
6463
+ path?: never;
6464
+ cookie?: never;
6465
+ };
6466
+ requestBody?: {
6467
+ content: {
6468
+ "application/json": components["schemas"]["PathsBetweenRequest"];
6469
+ };
6470
+ };
6471
+ responses: {
6472
+ /** @description Paths found */
6473
+ 200: {
6474
+ headers: {
6475
+ [name: string]: unknown;
6476
+ };
6477
+ content: {
6478
+ "application/json": components["schemas"]["PathsBetweenResponse"];
6479
+ };
6480
+ };
6481
+ /** @description Bad Request - Invalid input */
6482
+ 400: {
6483
+ headers: {
6484
+ [name: string]: unknown;
6485
+ };
6486
+ content: {
6487
+ /**
6488
+ * @example {
6489
+ * "error": "Validation failed",
6490
+ * "details": {
6491
+ * "issues": [
6492
+ * {
6493
+ * "path": [
6494
+ * "properties",
6495
+ * "label"
6496
+ * ],
6497
+ * "message": "Required"
6498
+ * }
6499
+ * ]
6500
+ * }
6501
+ * }
6502
+ */
6503
+ "application/json": components["schemas"]["ValidationErrorResponse"];
6504
+ };
6505
+ };
6506
+ };
6507
+ };
6508
+ delete?: never;
6509
+ options?: never;
6510
+ head?: never;
6511
+ patch?: never;
6512
+ trace?: never;
6513
+ };
6514
+ "/graph/reachable": {
6515
+ parameters: {
6516
+ query?: never;
6517
+ header?: never;
6518
+ path?: never;
6519
+ cookie?: never;
6520
+ };
6521
+ get?: never;
6522
+ put?: never;
6523
+ /**
6524
+ * Find reachable entities (exhaustive)
6525
+ * @description Find all entities of a specific type reachable from source entities within N hops. Returns up to 100 results by default.
6526
+ *
6527
+ * **When to use this vs POST /query:** This endpoint returns exhaustive, unranked results - all reachable entities up to the limit. Use `POST /query` when you want relevance-ranked results combining semantic similarity with graph structure. Use this endpoint when you need comprehensive graph exploration from known entity IDs.
6528
+ *
6529
+ * ---
6530
+ * **Permission:** `graph:query`
6531
+ * **Auth:** required
5926
6532
  */
5927
6533
  post: {
5928
6534
  parameters: {
@@ -5988,7 +6594,11 @@ type paths = {
5988
6594
  };
5989
6595
  /**
5990
6596
  * Get entity from graph
5991
- * @description Get entity details with all relationships from the graph database.
6597
+ * @description Get entity details with all relationships from the graph database. Unlike the entity manifest, this includes both outgoing and incoming relationships - showing not just what this entity links to, but also what links to it.
6598
+ *
6599
+ * ---
6600
+ * **Permission:** `graph:query`
6601
+ * **Auth:** required
5992
6602
  */
5993
6603
  get: {
5994
6604
  parameters: {
@@ -6046,7 +6656,17 @@ type paths = {
6046
6656
  put?: never;
6047
6657
  /**
6048
6658
  * Execute Argo query
6049
- * @description Execute an Argo DSL query for path-based graph traversal.
6659
+ * @description Execute an Argo DSL query for path-based graph traversal with relevance ranking.
6660
+ *
6661
+ * ## When to Use This Endpoint
6662
+ *
6663
+ * | Endpoint | Use Case |
6664
+ * |----------|----------|
6665
+ * | `POST /query` | Semantic search + graph traversal with **relevance-ranked** results (default k=25) |
6666
+ * | `POST /graph/reachable` | **Exhaustive** graph exploration from known entities (default limit=100) |
6667
+ * | `POST /graph/paths` | Find all shortest paths between two entity sets |
6668
+ *
6669
+ * This endpoint combines semantic similarity scores with path length to rank results. For exhaustive graph traversal without ranking, use the `/graph/*` endpoints directly.
6050
6670
  *
6051
6671
  * ## Query Syntax
6052
6672
  *
@@ -6095,6 +6715,11 @@ type paths = {
6095
6715
  * @:discover "alice" -[*]{,2}-> type:person # Discover, then traverse
6096
6716
  * @01KE4ZY... -[*]{,2}-> type:person # From exact entity
6097
6717
  * ```
6718
+ *
6719
+ *
6720
+ * ---
6721
+ * **Permission:** `query:execute`
6722
+ * **Auth:** required
6098
6723
  */
6099
6724
  post: {
6100
6725
  parameters: {
@@ -6165,6 +6790,10 @@ type paths = {
6165
6790
  * @description Find collections that are semantically similar to a given collection.
6166
6791
  *
6167
6792
  * Uses the collection's weighted centroid vector (combination of description and entity embeddings) to find related collections.
6793
+ *
6794
+ * ---
6795
+ * **Permission:** `search:similar`
6796
+ * **Auth:** required
6168
6797
  */
6169
6798
  post: {
6170
6799
  parameters: {
@@ -6296,6 +6925,162 @@ type paths = {
6296
6925
  * 1. First finds collections similar to the entity's collection
6297
6926
  * 2. Then searches within each collection for similar items
6298
6927
  * 3. Aggregates and ranks results with diversity weighting
6928
+ *
6929
+ * ---
6930
+ * **Permission:** `search:similar`
6931
+ * **Auth:** required
6932
+ */
6933
+ post: {
6934
+ parameters: {
6935
+ query?: never;
6936
+ header?: never;
6937
+ path?: never;
6938
+ cookie?: never;
6939
+ };
6940
+ requestBody?: {
6941
+ content: {
6942
+ "application/json": {
6943
+ /** @description Entity PI to find similar items for */
6944
+ pi: string;
6945
+ /** @description Entity's collection PI */
6946
+ collection_pi: string;
6947
+ /**
6948
+ * @description Maximum results to return
6949
+ * @default 20
6950
+ */
6951
+ limit?: number;
6952
+ /**
6953
+ * @description Number of similar collections to search
6954
+ * @default 10
6955
+ */
6956
+ tier1_limit?: number;
6957
+ /**
6958
+ * @description Items to fetch per collection
6959
+ * @default 5
6960
+ */
6961
+ tier2_limit?: number;
6962
+ /**
6963
+ * @description Include results from the same collection
6964
+ * @default true
6965
+ */
6966
+ include_same_collection?: boolean;
6967
+ /**
6968
+ * @description Force fresh query, bypassing cache
6969
+ * @default false
6970
+ */
6971
+ refresh?: boolean;
6972
+ };
6973
+ };
6974
+ };
6975
+ responses: {
6976
+ /** @description Similar items found */
6977
+ 200: {
6978
+ headers: {
6979
+ [name: string]: unknown;
6980
+ };
6981
+ content: {
6982
+ "application/json": {
6983
+ results: {
6984
+ pi: string;
6985
+ type: string;
6986
+ label: string;
6987
+ collection_pi: string | null;
6988
+ score: number;
6989
+ created_at?: string;
6990
+ updated_at?: string;
6991
+ }[];
6992
+ metadata: {
6993
+ source_pi: string;
6994
+ collections_searched: number;
6995
+ result_count: number;
6996
+ cached?: boolean;
6997
+ cached_at?: string;
6998
+ };
6999
+ };
7000
+ };
7001
+ };
7002
+ /** @description Bad Request - Invalid input */
7003
+ 400: {
7004
+ headers: {
7005
+ [name: string]: unknown;
7006
+ };
7007
+ content: {
7008
+ /**
7009
+ * @example {
7010
+ * "error": "Validation failed",
7011
+ * "details": {
7012
+ * "issues": [
7013
+ * {
7014
+ * "path": [
7015
+ * "properties",
7016
+ * "label"
7017
+ * ],
7018
+ * "message": "Required"
7019
+ * }
7020
+ * ]
7021
+ * }
7022
+ * }
7023
+ */
7024
+ "application/json": components["schemas"]["ValidationErrorResponse"];
7025
+ };
7026
+ };
7027
+ /** @description Not Found - Resource does not exist */
7028
+ 404: {
7029
+ headers: {
7030
+ [name: string]: unknown;
7031
+ };
7032
+ content: {
7033
+ /**
7034
+ * @example {
7035
+ * "error": "Entity not found"
7036
+ * }
7037
+ */
7038
+ "application/json": components["schemas"]["ErrorResponse"];
7039
+ };
7040
+ };
7041
+ /** @description Service Unavailable - External service not available */
7042
+ 503: {
7043
+ headers: {
7044
+ [name: string]: unknown;
7045
+ };
7046
+ content: {
7047
+ /**
7048
+ * @example {
7049
+ * "error": "Service unavailable",
7050
+ * "details": {
7051
+ * "service": "pinecone"
7052
+ * }
7053
+ * }
7054
+ */
7055
+ "application/json": components["schemas"]["ErrorResponse"];
7056
+ };
7057
+ };
7058
+ };
7059
+ };
7060
+ delete?: never;
7061
+ options?: never;
7062
+ head?: never;
7063
+ patch?: never;
7064
+ trace?: never;
7065
+ };
7066
+ "/search/collections": {
7067
+ parameters: {
7068
+ query?: never;
7069
+ header?: never;
7070
+ path?: never;
7071
+ cookie?: never;
7072
+ };
7073
+ get?: never;
7074
+ put?: never;
7075
+ /**
7076
+ * Search collections by text
7077
+ * @description Search for collections using semantic text search.
7078
+ *
7079
+ * Use this endpoint to discover collections about a topic. Results are ranked by semantic similarity to your query.
7080
+ *
7081
+ * ---
7082
+ * **Permission:** `search:query`
7083
+ * **Auth:** required
6299
7084
  */
6300
7085
  post: {
6301
7086
  parameters: {
@@ -6307,40 +7092,20 @@ type paths = {
6307
7092
  requestBody?: {
6308
7093
  content: {
6309
7094
  "application/json": {
6310
- /** @description Entity PI to find similar items for */
6311
- pi: string;
6312
- /** @description Entity's collection PI */
6313
- collection_pi: string;
7095
+ /** @description Search query text */
7096
+ query: string;
6314
7097
  /**
6315
7098
  * @description Maximum results to return
6316
- * @default 20
6317
- */
6318
- limit?: number;
6319
- /**
6320
- * @description Number of similar collections to search
6321
7099
  * @default 10
6322
7100
  */
6323
- tier1_limit?: number;
6324
- /**
6325
- * @description Items to fetch per collection
6326
- * @default 5
6327
- */
6328
- tier2_limit?: number;
6329
- /**
6330
- * @description Include results from the same collection
6331
- * @default true
6332
- */
6333
- include_same_collection?: boolean;
6334
- /**
6335
- * @description Force fresh query, bypassing cache
6336
- * @default false
6337
- */
6338
- refresh?: boolean;
7101
+ limit?: number;
7102
+ /** @description Filter by collection types */
7103
+ types?: string[];
6339
7104
  };
6340
7105
  };
6341
7106
  };
6342
7107
  responses: {
6343
- /** @description Similar items found */
7108
+ /** @description Search results */
6344
7109
  200: {
6345
7110
  headers: {
6346
7111
  [name: string]: unknown;
@@ -6349,19 +7114,15 @@ type paths = {
6349
7114
  "application/json": {
6350
7115
  results: {
6351
7116
  pi: string;
6352
- type: string;
6353
7117
  label: string;
6354
- collection_pi: string | null;
7118
+ type: string;
6355
7119
  score: number;
6356
7120
  created_at?: string;
6357
7121
  updated_at?: string;
6358
7122
  }[];
6359
7123
  metadata: {
6360
- source_pi: string;
6361
- collections_searched: number;
7124
+ query: string;
6362
7125
  result_count: number;
6363
- cached?: boolean;
6364
- cached_at?: string;
6365
7126
  };
6366
7127
  };
6367
7128
  };
@@ -6391,20 +7152,6 @@ type paths = {
6391
7152
  "application/json": components["schemas"]["ValidationErrorResponse"];
6392
7153
  };
6393
7154
  };
6394
- /** @description Not Found - Resource does not exist */
6395
- 404: {
6396
- headers: {
6397
- [name: string]: unknown;
6398
- };
6399
- content: {
6400
- /**
6401
- * @example {
6402
- * "error": "Entity not found"
6403
- * }
6404
- */
6405
- "application/json": components["schemas"]["ErrorResponse"];
6406
- };
6407
- };
6408
7155
  /** @description Service Unavailable - External service not available */
6409
7156
  503: {
6410
7157
  headers: {
@@ -6430,7 +7177,7 @@ type paths = {
6430
7177
  patch?: never;
6431
7178
  trace?: never;
6432
7179
  };
6433
- "/search/collections": {
7180
+ "/search/agents": {
6434
7181
  parameters: {
6435
7182
  query?: never;
6436
7183
  header?: never;
@@ -6440,10 +7187,14 @@ type paths = {
6440
7187
  get?: never;
6441
7188
  put?: never;
6442
7189
  /**
6443
- * Search collections by text
6444
- * @description Search for collections using semantic text search.
7190
+ * Search agents by text
7191
+ * @description Search for agents using semantic text search.
6445
7192
  *
6446
- * Use this endpoint to discover collections about a topic. Results are ranked by semantic similarity to your query.
7193
+ * Use this endpoint to discover agents across the network. Only active agents are returned. Results are ranked by semantic similarity to your query based on agent descriptions and capabilities.
7194
+ *
7195
+ * ---
7196
+ * **Permission:** `search:query`
7197
+ * **Auth:** required
6447
7198
  */
6448
7199
  post: {
6449
7200
  parameters: {
@@ -6462,8 +7213,6 @@ type paths = {
6462
7213
  * @default 10
6463
7214
  */
6464
7215
  limit?: number;
6465
- /** @description Filter by collection types */
6466
- types?: string[];
6467
7216
  };
6468
7217
  };
6469
7218
  };
@@ -6478,8 +7227,9 @@ type paths = {
6478
7227
  results: {
6479
7228
  pi: string;
6480
7229
  label: string;
6481
- type: string;
6482
7230
  score: number;
7231
+ collection_pi: string | null;
7232
+ status?: string;
6483
7233
  created_at?: string;
6484
7234
  updated_at?: string;
6485
7235
  }[];
@@ -6556,6 +7306,10 @@ type paths = {
6556
7306
  * Provide either `collection_pi` for a single collection or `collection_pis` for multiple collections (searched in parallel).
6557
7307
  *
6558
7308
  * Use `per_collection_limit` to ensure result diversity when searching multiple collections.
7309
+ *
7310
+ * ---
7311
+ * **Permission:** `search:query`
7312
+ * **Auth:** required
6559
7313
  */
6560
7314
  post: {
6561
7315
  parameters: {
@@ -6680,6 +7434,10 @@ type paths = {
6680
7434
  * 3. Aggregate and rank results across all collections
6681
7435
  *
6682
7436
  * Great for exploration and AI agents navigating the network.
7437
+ *
7438
+ * ---
7439
+ * **Permission:** `search:query`
7440
+ * **Auth:** required
6683
7441
  */
6684
7442
  post: {
6685
7443
  parameters: {
@@ -6782,7 +7540,229 @@ type paths = {
6782
7540
  };
6783
7541
  };
6784
7542
  };
6785
- delete?: never;
7543
+ delete?: never;
7544
+ options?: never;
7545
+ head?: never;
7546
+ patch?: never;
7547
+ trace?: never;
7548
+ };
7549
+ "/chat": {
7550
+ parameters: {
7551
+ query?: never;
7552
+ header?: never;
7553
+ path?: never;
7554
+ cookie?: never;
7555
+ };
7556
+ get?: never;
7557
+ put?: never;
7558
+ /**
7559
+ * Send chat message
7560
+ * @description Send a message to the Arke chat agent and receive a streaming response.
7561
+ *
7562
+ * The agent can execute Arke API operations on your behalf using the authenticated user's permissions.
7563
+ *
7564
+ * ## Headers
7565
+ *
7566
+ * - `X-Chat-ID`: Optional. Specify to continue an existing chat session. If omitted, a new session is created.
7567
+ *
7568
+ * ## Response Format
7569
+ *
7570
+ * The response is a Server-Sent Events (SSE) stream in AI SDK v5 UIMessage format.
7571
+ * Stream chunks include text deltas, tool calls, and usage information.
7572
+ *
7573
+ * ## Token Usage Tracking
7574
+ *
7575
+ * Usage information is included at the end of the stream in the format:
7576
+ * ```json
7577
+ * {"type":"message_delta","delta":{"usage":{"input_tokens":123,"output_tokens":456}}}
7578
+ * ```
7579
+ *
7580
+ *
7581
+ * ---
7582
+ * **Permission:** `chat:send`
7583
+ * **Auth:** required
7584
+ */
7585
+ post: {
7586
+ parameters: {
7587
+ query?: never;
7588
+ header?: never;
7589
+ path?: never;
7590
+ cookie?: never;
7591
+ };
7592
+ requestBody?: {
7593
+ content: {
7594
+ "application/json": components["schemas"]["SendChatRequest"];
7595
+ };
7596
+ };
7597
+ responses: {
7598
+ /** @description Streaming SSE response */
7599
+ 200: {
7600
+ headers: {
7601
+ [name: string]: unknown;
7602
+ };
7603
+ content: {
7604
+ "text/event-stream": string;
7605
+ };
7606
+ };
7607
+ /** @description Unauthorized - Missing or invalid authentication */
7608
+ 401: {
7609
+ headers: {
7610
+ [name: string]: unknown;
7611
+ };
7612
+ content: {
7613
+ /**
7614
+ * @example {
7615
+ * "error": "Unauthorized: Missing or invalid authentication token"
7616
+ * }
7617
+ */
7618
+ "application/json": components["schemas"]["ErrorResponse"];
7619
+ };
7620
+ };
7621
+ /** @description Forbidden - Insufficient permissions */
7622
+ 403: {
7623
+ headers: {
7624
+ [name: string]: unknown;
7625
+ };
7626
+ content: {
7627
+ /**
7628
+ * @example {
7629
+ * "error": "Forbidden: You do not have permission to perform this action"
7630
+ * }
7631
+ */
7632
+ "application/json": components["schemas"]["ErrorResponse"];
7633
+ };
7634
+ };
7635
+ };
7636
+ };
7637
+ delete?: never;
7638
+ options?: never;
7639
+ head?: never;
7640
+ patch?: never;
7641
+ trace?: never;
7642
+ };
7643
+ "/chat/sessions/{id}": {
7644
+ parameters: {
7645
+ query?: never;
7646
+ header?: never;
7647
+ path?: never;
7648
+ cookie?: never;
7649
+ };
7650
+ /**
7651
+ * Get chat session
7652
+ * @description Get information about a chat session including message history.
7653
+ *
7654
+ * Sessions are publicly viewable for sharing purposes. Only the owner can send messages or delete the session.
7655
+ *
7656
+ * ---
7657
+ * **Permission:** `chat:view`
7658
+ * **Auth:** optional
7659
+ */
7660
+ get: {
7661
+ parameters: {
7662
+ query?: never;
7663
+ header?: never;
7664
+ path?: never;
7665
+ cookie?: never;
7666
+ };
7667
+ requestBody?: never;
7668
+ responses: {
7669
+ /** @description Chat session info */
7670
+ 200: {
7671
+ headers: {
7672
+ [name: string]: unknown;
7673
+ };
7674
+ content: {
7675
+ "application/json": components["schemas"]["ChatSession"];
7676
+ };
7677
+ };
7678
+ /** @description Not Found - Resource does not exist */
7679
+ 404: {
7680
+ headers: {
7681
+ [name: string]: unknown;
7682
+ };
7683
+ content: {
7684
+ /**
7685
+ * @example {
7686
+ * "error": "Entity not found"
7687
+ * }
7688
+ */
7689
+ "application/json": components["schemas"]["ErrorResponse"];
7690
+ };
7691
+ };
7692
+ };
7693
+ };
7694
+ put?: never;
7695
+ post?: never;
7696
+ /**
7697
+ * Delete chat session
7698
+ * @description Delete a chat session. Only the session owner can delete it.
7699
+ *
7700
+ * ---
7701
+ * **Permission:** `chat:delete`
7702
+ * **Auth:** required
7703
+ */
7704
+ delete: {
7705
+ parameters: {
7706
+ query?: never;
7707
+ header?: never;
7708
+ path?: never;
7709
+ cookie?: never;
7710
+ };
7711
+ requestBody?: never;
7712
+ responses: {
7713
+ /** @description Session deleted */
7714
+ 200: {
7715
+ headers: {
7716
+ [name: string]: unknown;
7717
+ };
7718
+ content: {
7719
+ "application/json": components["schemas"]["ChatSessionDeleteResponse"];
7720
+ };
7721
+ };
7722
+ /** @description Unauthorized - Missing or invalid authentication */
7723
+ 401: {
7724
+ headers: {
7725
+ [name: string]: unknown;
7726
+ };
7727
+ content: {
7728
+ /**
7729
+ * @example {
7730
+ * "error": "Unauthorized: Missing or invalid authentication token"
7731
+ * }
7732
+ */
7733
+ "application/json": components["schemas"]["ErrorResponse"];
7734
+ };
7735
+ };
7736
+ /** @description Forbidden - Insufficient permissions */
7737
+ 403: {
7738
+ headers: {
7739
+ [name: string]: unknown;
7740
+ };
7741
+ content: {
7742
+ /**
7743
+ * @example {
7744
+ * "error": "Forbidden: You do not have permission to perform this action"
7745
+ * }
7746
+ */
7747
+ "application/json": components["schemas"]["ErrorResponse"];
7748
+ };
7749
+ };
7750
+ /** @description Not Found - Resource does not exist */
7751
+ 404: {
7752
+ headers: {
7753
+ [name: string]: unknown;
7754
+ };
7755
+ content: {
7756
+ /**
7757
+ * @example {
7758
+ * "error": "Entity not found"
7759
+ * }
7760
+ */
7761
+ "application/json": components["schemas"]["ErrorResponse"];
7762
+ };
7763
+ };
7764
+ };
7765
+ };
6786
7766
  options?: never;
6787
7767
  head?: never;
6788
7768
  patch?: never;
@@ -6800,6 +7780,10 @@ type paths = {
6800
7780
  * @description Returns the Arweave attestation for the current (latest) version of an entity.
6801
7781
  *
6802
7782
  * Returns 202 Accepted if the attestation upload is still pending.
7783
+ *
7784
+ * ---
7785
+ * **Permission:** `entity:view`
7786
+ * **Auth:** optional
6803
7787
  */
6804
7788
  get: {
6805
7789
  parameters: {
@@ -6879,6 +7863,10 @@ type paths = {
6879
7863
  /**
6880
7864
  * Get version attestation
6881
7865
  * @description Returns the Arweave attestation for a specific version of an entity.
7866
+ *
7867
+ * ---
7868
+ * **Permission:** `entity:view`
7869
+ * **Auth:** optional
6882
7870
  */
6883
7871
  get: {
6884
7872
  parameters: {
@@ -6941,6 +7929,63 @@ type paths = {
6941
7929
  patch?: never;
6942
7930
  trace?: never;
6943
7931
  };
7932
+ "/attestations/head": {
7933
+ parameters: {
7934
+ query?: never;
7935
+ header?: never;
7936
+ path?: never;
7937
+ cookie?: never;
7938
+ };
7939
+ /**
7940
+ * Get chain head
7941
+ * @description Returns the latest Arweave attestation transaction ID (network head).
7942
+ *
7943
+ * ---
7944
+ * **Permission:** `attestation:view`
7945
+ * **Auth:** none
7946
+ */
7947
+ get: {
7948
+ parameters: {
7949
+ query?: never;
7950
+ header?: never;
7951
+ path?: never;
7952
+ cookie?: never;
7953
+ };
7954
+ requestBody?: never;
7955
+ responses: {
7956
+ /** @description Chain head */
7957
+ 200: {
7958
+ headers: {
7959
+ [name: string]: unknown;
7960
+ };
7961
+ content: {
7962
+ "application/json": components["schemas"]["ChainHeadResponse"];
7963
+ };
7964
+ };
7965
+ /** @description Not Found - Resource does not exist */
7966
+ 404: {
7967
+ headers: {
7968
+ [name: string]: unknown;
7969
+ };
7970
+ content: {
7971
+ /**
7972
+ * @example {
7973
+ * "error": "Entity not found"
7974
+ * }
7975
+ */
7976
+ "application/json": components["schemas"]["ErrorResponse"];
7977
+ };
7978
+ };
7979
+ };
7980
+ };
7981
+ put?: never;
7982
+ post?: never;
7983
+ delete?: never;
7984
+ options?: never;
7985
+ head?: never;
7986
+ patch?: never;
7987
+ trace?: never;
7988
+ };
6944
7989
  "/attestations/verify/{tx}": {
6945
7990
  parameters: {
6946
7991
  query?: never;
@@ -6953,6 +7998,10 @@ type paths = {
6953
7998
  * @description Fetches an attestation from Arweave and verifies the CID matches the manifest content.
6954
7999
  *
6955
8000
  * This is a public endpoint - anyone can verify attestations.
8001
+ *
8002
+ * ---
8003
+ * **Permission:** `attestation:verify`
8004
+ * **Auth:** none
6956
8005
  */
6957
8006
  get: {
6958
8007
  parameters: {
@@ -7091,6 +8140,19 @@ type components = {
7091
8140
  * @example 1735214400000
7092
8141
  */
7093
8142
  ts: number;
8143
+ /**
8144
+ * @description Audit trail for edits
8145
+ * @example {
8146
+ * "user_id": "01JCAPTAINAHAB000000000000",
8147
+ * "method": "manual"
8148
+ * }
8149
+ */
8150
+ edited_by: {
8151
+ user_id: string;
8152
+ /** @enum {string} */
8153
+ method: "manual" | "ai_generated" | "system" | "import";
8154
+ on_behalf_of?: string;
8155
+ };
7094
8156
  /**
7095
8157
  * @description Previous version CID (present on updates)
7096
8158
  * @example bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy
@@ -7143,7 +8205,7 @@ type components = {
7143
8205
  properties?: {
7144
8206
  [key: string]: unknown;
7145
8207
  };
7146
- /** @description Properties to remove */
8208
+ /** @description Properties to remove. Use string[] for top-level keys (e.g., ["old_field"]), or nested objects for deep removal (e.g., { config: { options: ["debug"] } }). Dot notation like "config.options.debug" is NOT supported. */
7147
8209
  properties_remove?: string[] | {
7148
8210
  [key: string]: unknown;
7149
8211
  };
@@ -7486,7 +8548,7 @@ type components = {
7486
8548
  properties?: {
7487
8549
  [key: string]: unknown;
7488
8550
  };
7489
- /** @description Properties to remove */
8551
+ /** @description Properties to remove. Use string[] for top-level keys (e.g., ["old_field"]), or nested objects for deep removal (e.g., { config: { options: ["debug"] } }). Dot notation like "config.options.debug" is NOT supported. */
7490
8552
  properties_remove?: string[] | {
7491
8553
  [key: string]: unknown;
7492
8554
  };
@@ -7846,6 +8908,19 @@ type components = {
7846
8908
  * @example 1735214400000
7847
8909
  */
7848
8910
  ts: number;
8911
+ /**
8912
+ * @description Audit trail for edits
8913
+ * @example {
8914
+ * "user_id": "01JCAPTAINAHAB000000000000",
8915
+ * "method": "manual"
8916
+ * }
8917
+ */
8918
+ edited_by: {
8919
+ user_id: string;
8920
+ /** @enum {string} */
8921
+ method: "manual" | "ai_generated" | "system" | "import";
8922
+ on_behalf_of?: string;
8923
+ };
7849
8924
  /**
7850
8925
  * @description Previous version CID (present on updates)
7851
8926
  * @example bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy
@@ -7869,7 +8944,7 @@ type components = {
7869
8944
  */
7870
8945
  type: string;
7871
8946
  /**
7872
- * @description Entity properties (type-specific)
8947
+ * @description Entity properties (type-specific). Text properties may contain inline entity references using the arke: URI scheme (e.g., [Label](arke:01JENTITY123...)) for domain-agnostic linking.
7873
8948
  * @example {
7874
8949
  * "label": "Chapter 1: Loomings",
7875
8950
  * "author": "Herman Melville"
@@ -7894,6 +8969,18 @@ type components = {
7894
8969
  */
7895
8970
  collection?: string;
7896
8971
  };
8972
+ TipResponse: {
8973
+ /**
8974
+ * @description Entity ID (ULID format)
8975
+ * @example 01KDETYWYWM0MJVKM8DK3AEXPY
8976
+ */
8977
+ id: string;
8978
+ /**
8979
+ * @description Content Identifier (CID) - content-addressed hash
8980
+ * @example bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy
8981
+ */
8982
+ cid: string;
8983
+ };
7897
8984
  EntityUpdatedResponse: components["schemas"]["EntityResponse"] & {
7898
8985
  /**
7899
8986
  * @description Previous version CID
@@ -7916,7 +9003,7 @@ type components = {
7916
9003
  properties?: {
7917
9004
  [key: string]: unknown;
7918
9005
  };
7919
- /** @description Properties to remove */
9006
+ /** @description Properties to remove. Use string[] for top-level keys (e.g., ["old_field"]), or nested objects for deep removal (e.g., { config: { options: ["debug"] } }). Dot notation like "config.options.debug" is NOT supported. */
7920
9007
  properties_remove?: string[] | {
7921
9008
  [key: string]: unknown;
7922
9009
  };
@@ -8443,6 +9530,19 @@ type components = {
8443
9530
  * @example 1735214400000
8444
9531
  */
8445
9532
  ts: number;
9533
+ /**
9534
+ * @description Audit trail for edits
9535
+ * @example {
9536
+ * "user_id": "01JCAPTAINAHAB000000000000",
9537
+ * "method": "manual"
9538
+ * }
9539
+ */
9540
+ edited_by: {
9541
+ user_id: string;
9542
+ /** @enum {string} */
9543
+ method: "manual" | "ai_generated" | "system" | "import";
9544
+ on_behalf_of?: string;
9545
+ };
8446
9546
  };
8447
9547
  CreateFileRequest: {
8448
9548
  /**
@@ -8536,7 +9636,7 @@ type components = {
8536
9636
  properties?: {
8537
9637
  [key: string]: unknown;
8538
9638
  };
8539
- /** @description Properties to remove */
9639
+ /** @description Properties to remove. Use string[] for top-level keys (e.g., ["old_field"]), or nested objects for deep removal (e.g., { config: { options: ["debug"] } }). Dot notation like "config.options.debug" is NOT supported. */
8540
9640
  properties_remove?: string[] | {
8541
9641
  [key: string]: unknown;
8542
9642
  };
@@ -8689,6 +9789,19 @@ type components = {
8689
9789
  * @example 1735214400000
8690
9790
  */
8691
9791
  ts: number;
9792
+ /**
9793
+ * @description Audit trail for edits
9794
+ * @example {
9795
+ * "user_id": "01JCAPTAINAHAB000000000000",
9796
+ * "method": "manual"
9797
+ * }
9798
+ */
9799
+ edited_by: {
9800
+ user_id: string;
9801
+ /** @enum {string} */
9802
+ method: "manual" | "ai_generated" | "system" | "import";
9803
+ on_behalf_of?: string;
9804
+ };
8692
9805
  };
8693
9806
  CreateFolderRequest: {
8694
9807
  /**
@@ -8760,7 +9873,7 @@ type components = {
8760
9873
  properties?: {
8761
9874
  [key: string]: unknown;
8762
9875
  };
8763
- /** @description Properties to remove */
9876
+ /** @description Properties to remove. Use string[] for top-level keys (e.g., ["old_field"]), or nested objects for deep removal (e.g., { config: { options: ["debug"] } }). Dot notation like "config.options.debug" is NOT supported. */
8764
9877
  properties_remove?: string[] | {
8765
9878
  [key: string]: unknown;
8766
9879
  };
@@ -9124,6 +10237,34 @@ type components = {
9124
10237
  note?: string;
9125
10238
  };
9126
10239
  };
10240
+ TypeRestriction: {
10241
+ /**
10242
+ * @description The type with restricted implications
10243
+ * @example collection
10244
+ */
10245
+ type: string;
10246
+ /**
10247
+ * @description Verbs for which the base type DOES imply this type
10248
+ * @example [
10249
+ * "view"
10250
+ * ]
10251
+ */
10252
+ allowed_verbs: string[];
10253
+ /** @description Explanation of the restriction */
10254
+ description: string;
10255
+ };
10256
+ /** @description Type hierarchy. The base type implies all other types, with restrictions for certain types. */
10257
+ TypeHierarchy: {
10258
+ /**
10259
+ * @description The base type that implies all other types
10260
+ * @example entity
10261
+ */
10262
+ base_type: string;
10263
+ /** @description Explanation of type hierarchy behavior */
10264
+ description: string;
10265
+ /** @description Types with restricted implication rules */
10266
+ restrictions: components["schemas"]["TypeRestriction"][];
10267
+ };
9127
10268
  /** @description Verb wildcard pattern (*:verb) */
9128
10269
  WildcardInfo: {
9129
10270
  /**
@@ -9184,6 +10325,7 @@ type components = {
9184
10325
  implications: {
9185
10326
  [key: string]: string[];
9186
10327
  };
10328
+ type_hierarchy: components["schemas"]["TypeHierarchy"];
9187
10329
  /** @description Wildcard pattern documentation */
9188
10330
  wildcards: {
9189
10331
  verb: components["schemas"]["WildcardInfo"];
@@ -9217,21 +10359,18 @@ type components = {
9217
10359
  AgentResponse: components["schemas"]["EntityResponse"] & {
9218
10360
  /** @enum {string} */
9219
10361
  type?: "agent";
9220
- };
9221
- SubAgentRef: {
9222
- pi: string;
9223
- /** @description Display label for the sub-agent */
9224
- label?: string;
9225
- /** @description Description of the sub-agent role */
9226
- description?: string;
9227
- /**
9228
- * @description Actions this sub-agent requires
9229
- * @example [
9230
- * "entity:view",
9231
- * "entity:update"
9232
- * ]
9233
- */
9234
- actions_required: string[];
10362
+ /** @description Warnings about sub-agent references that could not be validated. Present only when uses_agents contains references to non-existent, non-agent, or disabled entities. */
10363
+ warnings?: {
10364
+ /** @description The sub-agent ID that has an issue */
10365
+ sub_agent_id: string;
10366
+ /**
10367
+ * @description Why this is a warning: not_found (entity does not exist), not_an_agent (entity exists but is not an agent), or disabled (agent is disabled)
10368
+ * @enum {string}
10369
+ */
10370
+ reason: "not_found" | "not_an_agent" | "disabled";
10371
+ /** @description Human-readable explanation */
10372
+ message: string;
10373
+ }[];
9235
10374
  };
9236
10375
  CreateAgentRequest: {
9237
10376
  /**
@@ -9268,8 +10407,15 @@ type components = {
9268
10407
  * @example Extracts text from scanned documents using OCR
9269
10408
  */
9270
10409
  description?: string;
9271
- /** @description Sub-agents used by this orchestrator */
9272
- uses_agents?: components["schemas"]["SubAgentRef"][];
10410
+ /** @description Sub-agents this orchestrator delegates work to. Only provide the sub-agent ID (pi) - their permissions are fetched dynamically at invocation time. Warnings are returned if any referenced sub-agents do not exist or are disabled. */
10411
+ uses_agents?: {
10412
+ /** @description Sub-agent entity ID. The sub-agent's actions_required will be fetched dynamically at invocation time. */
10413
+ pi: string;
10414
+ /** @description Optional display label override (defaults to sub-agent's own label) */
10415
+ label?: string;
10416
+ /** @description Optional description of the sub-agent's role in this orchestrator's workflow */
10417
+ description?: string;
10418
+ }[];
9273
10419
  /** @description JSON Schema for input validation */
9274
10420
  input_schema?: {
9275
10421
  [key: string]: unknown;
@@ -9315,7 +10461,7 @@ type components = {
9315
10461
  properties?: {
9316
10462
  [key: string]: unknown;
9317
10463
  };
9318
- /** @description Properties to remove */
10464
+ /** @description Properties to remove. Use string[] for top-level keys (e.g., ["old_field"]), or nested objects for deep removal (e.g., { config: { options: ["debug"] } }). Dot notation like "config.options.debug" is NOT supported. */
9319
10465
  properties_remove?: string[] | {
9320
10466
  [key: string]: unknown;
9321
10467
  };
@@ -9392,8 +10538,15 @@ type components = {
9392
10538
  * @enum {string}
9393
10539
  */
9394
10540
  status?: "development" | "active" | "disabled";
9395
- /** @description Updated sub-agents */
9396
- uses_agents?: components["schemas"]["SubAgentRef"][];
10541
+ /** @description Updated sub-agent references. Only provide sub-agent IDs (pi) - their permissions are fetched dynamically at invocation time. */
10542
+ uses_agents?: {
10543
+ /** @description Sub-agent entity ID. The sub-agent's actions_required will be fetched dynamically at invocation time. */
10544
+ pi: string;
10545
+ /** @description Optional display label override (defaults to sub-agent's own label) */
10546
+ label?: string;
10547
+ /** @description Optional description of the sub-agent's role in this orchestrator's workflow */
10548
+ description?: string;
10549
+ }[];
9397
10550
  /** @description Updated input schema */
9398
10551
  input_schema?: {
9399
10552
  [key: string]: unknown;
@@ -9431,6 +10584,20 @@ type components = {
9431
10584
  can_proceed: boolean;
9432
10585
  /** @description True if some agents need permission grants */
9433
10586
  grants_needed: boolean;
10587
+ /** @description Warnings about sub-agents that were skipped */
10588
+ warnings?: {
10589
+ /** @description The sub-agent ID that could not be resolved */
10590
+ sub_agent_id: string;
10591
+ /** @description The orchestrator or parent agent that declared this sub-agent reference */
10592
+ parent_agent_id: string;
10593
+ /**
10594
+ * @description Why the sub-agent was skipped: not_found (entity does not exist) or disabled (agent status is disabled)
10595
+ * @enum {string}
10596
+ */
10597
+ reason: "not_found" | "disabled";
10598
+ /** @description Human-readable explanation of the warning */
10599
+ message: string;
10600
+ }[];
9434
10601
  };
9435
10602
  InvokeGrantResult: {
9436
10603
  agent_id: string;
@@ -9476,7 +10643,7 @@ type components = {
9476
10643
  };
9477
10644
  InvokeConfirmedResponse: components["schemas"]["InvokeStartedResponse"] | components["schemas"]["InvokeRejectedResponse"];
9478
10645
  InvokeAgentRequest: {
9479
- /** @description Target collection ID to operate on */
10646
+ /** @description Collection ID to grant the agent access to. All agent permissions are collection-scoped. */
9480
10647
  target: string;
9481
10648
  /** @description Job collection where agent should write logs. If not provided, creates new root collection. */
9482
10649
  job_collection?: string;
@@ -9544,6 +10711,106 @@ type components = {
9544
10711
  ListAgentApiKeysResponse: {
9545
10712
  keys: components["schemas"]["AgentApiKeyInfo"][];
9546
10713
  };
10714
+ VerifyAgentTokenResponse: {
10715
+ /**
10716
+ * @description Token to deploy at your endpoint
10717
+ * @example vt_abc123def456...
10718
+ */
10719
+ verification_token: string;
10720
+ /** @description Agent ID to include in verification response */
10721
+ agent_id: string;
10722
+ /**
10723
+ * Format: uri
10724
+ * @description Your agent endpoint URL
10725
+ */
10726
+ endpoint: string;
10727
+ /** @description How to complete verification */
10728
+ instructions: string;
10729
+ /**
10730
+ * Format: date-time
10731
+ * @description Token expiration time
10732
+ */
10733
+ expires_at: string;
10734
+ };
10735
+ VerifyAgentSuccessResponse: {
10736
+ /** @enum {boolean} */
10737
+ verified: true;
10738
+ /**
10739
+ * Format: date-time
10740
+ * @description When the endpoint was verified
10741
+ */
10742
+ verified_at: string;
10743
+ };
10744
+ VerifyAgentFailureResponse: {
10745
+ /** @enum {boolean} */
10746
+ verified: false;
10747
+ /**
10748
+ * @description Verification error code
10749
+ * @enum {string}
10750
+ */
10751
+ error: "no_token" | "token_expired" | "fetch_failed" | "invalid_response" | "token_mismatch" | "agent_id_mismatch";
10752
+ /** @description Human-readable error description */
10753
+ message: string;
10754
+ };
10755
+ VerifyAgentRequest: {
10756
+ /**
10757
+ * @description Set to true to perform verification. Omit or false to generate/get verification token.
10758
+ * @example true
10759
+ */
10760
+ confirm?: boolean;
10761
+ };
10762
+ EntityRef: {
10763
+ /**
10764
+ * @description Entity ID (ULID format)
10765
+ * @example 01KDETYWYWM0MJVKM8DK3AEXPY
10766
+ */
10767
+ pi: string;
10768
+ type?: string;
10769
+ label?: string;
10770
+ };
10771
+ JobStatusResponse: {
10772
+ /**
10773
+ * @description Entity ID (ULID format)
10774
+ * @example 01KDETYWYWM0MJVKM8DK3AEXPY
10775
+ */
10776
+ id: string;
10777
+ /**
10778
+ * @description Content Identifier (CID) - content-addressed hash
10779
+ * @example bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy
10780
+ */
10781
+ cid: string;
10782
+ /**
10783
+ * @description Job collection status
10784
+ * @example running
10785
+ * @enum {string}
10786
+ */
10787
+ status: "running" | "done" | "error";
10788
+ /**
10789
+ * Format: date-time
10790
+ * @description ISO 8601 datetime
10791
+ * @example 2025-12-26T12:00:00.000Z
10792
+ */
10793
+ started_at: string;
10794
+ /**
10795
+ * Format: date-time
10796
+ * @description ISO 8601 datetime
10797
+ * @example 2025-12-26T12:00:00.000Z
10798
+ */
10799
+ completed_at: string | null;
10800
+ agent: components["schemas"]["EntityRef"];
10801
+ target?: components["schemas"]["EntityRef"];
10802
+ main_agent?: components["schemas"]["EntityRef"];
10803
+ /**
10804
+ * @description Number of files contained in this job collection
10805
+ * @example 5
10806
+ */
10807
+ files_count: number;
10808
+ /**
10809
+ * @description Number of sub-job collections
10810
+ * @example 2
10811
+ */
10812
+ sub_jobs_count: number;
10813
+ };
9547
10814
  Event: {
9548
10815
  /**
9549
10816
  * @description Auto-increment event ID (use as cursor)
@@ -9795,13 +11062,13 @@ type components = {
9795
11062
  path: string;
9796
11063
  /**
9797
11064
  * @description Maximum number of results to return
9798
- * @default 10
9799
- * @example 10
11065
+ * @default 25
11066
+ * @example 25
9800
11067
  */
9801
11068
  k: number;
9802
11069
  /**
9803
11070
  * @description Beam width for exploration (default: k * 3)
9804
- * @example 30
11071
+ * @example 75
9805
11072
  */
9806
11073
  k_explore?: number;
9807
11074
  /**
@@ -9810,6 +11077,80 @@ type components = {
9810
11077
  */
9811
11078
  collection?: string;
9812
11079
  };
11080
+ TextPart: {
11081
+ /** @enum {string} */
11082
+ type: "text";
11083
+ text: string;
11084
+ };
11085
+ ToolPart: {
11086
+ type: string;
11087
+ toolCallId?: string;
11088
+ toolName?: string;
11089
+ args?: {
11090
+ [key: string]: unknown;
11091
+ };
11092
+ output?: unknown;
11093
+ /** @enum {string} */
11094
+ state?: "partial-call" | "call" | "output-available";
11095
+ };
11096
+ MessagePart: components["schemas"]["TextPart"] | components["schemas"]["ToolPart"] | {
11097
+ type: string;
11098
+ };
11099
+ ChatMessage: {
11100
+ id: string;
11101
+ /** @enum {string} */
11102
+ role: "user" | "assistant" | "system" | "tool";
11103
+ parts?: components["schemas"]["MessagePart"][];
11104
+ content?: string;
11105
+ };
11106
+ SendChatRequest: {
11107
+ /** @description Array of chat messages in AI SDK v5 UIMessage format */
11108
+ messages: components["schemas"]["ChatMessage"][];
11109
+ };
11110
+ ChatSession: {
11111
+ /**
11112
+ * @description Chat session ID
11113
+ * @example chat_abc123
11114
+ */
11115
+ id: string;
11116
+ /**
11117
+ * @description ISO 8601 creation timestamp
11118
+ * @example 2025-01-14T12:00:00.000Z
11119
+ */
11120
+ createdAt: string;
11121
+ /**
11122
+ * @description ISO 8601 last update timestamp
11123
+ * @example 2025-01-14T12:30:00.000Z
11124
+ */
11125
+ updatedAt: string;
11126
+ /** @description Owner user ID (Arke PI or Supabase ID) */
11127
+ ownerId: string | null;
11128
+ /**
11129
+ * @description Auto-generated chat title from first message
11130
+ * @example Help me understand the codebase...
11131
+ */
11132
+ title: string | null;
11133
+ /** @description Full message history (only included in session detail) */
11134
+ messages?: {
11135
+ id: string;
11136
+ /** @enum {string} */
11137
+ role: "user" | "assistant" | "system" | "tool";
11138
+ content: string;
11139
+ createdAt: string;
11140
+ toolInvocations?: {
11141
+ toolCallId: string;
11142
+ toolName: string;
11143
+ args?: {
11144
+ [key: string]: unknown;
11145
+ };
11146
+ result?: unknown;
11147
+ state: string;
11148
+ }[];
11149
+ }[];
11150
+ };
11151
+ ChatSessionDeleteResponse: {
11152
+ success: boolean;
11153
+ };
9813
11154
  AttestationResponse: {
9814
11155
  /**
9815
11156
  * @description Entity ID (ULID format)
@@ -9870,6 +11211,24 @@ type components = {
9870
11211
  */
9871
11212
  message: string;
9872
11213
  };
11214
+ ChainHeadResponse: {
11215
+ /**
11216
+ * @description Sequence number of the latest attestation
11217
+ * @example 784
11218
+ */
11219
+ seq: number;
11220
+ /**
11221
+ * @description Arweave transaction ID
11222
+ * @example Rxv_BpobNBUr0x5DstsAEUVxCO12hKxv7cnHnGLYp2c
11223
+ */
11224
+ tx: string;
11225
+ /**
11226
+ * Format: uri
11227
+ * @description Arweave gateway URL for direct access
11228
+ * @example https://arweave.net/Rxv_BpobNBUr0x5DstsAEUVxCO12hKxv7cnHnGLYp2c
11229
+ */
11230
+ arweave_url: string;
11231
+ };
9873
11232
  VerifyAttestationResponse: {
9874
11233
  arweave_tx: string;
9875
11234
  attestation: {