@arke-institute/sdk 2.3.11 → 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-14T01:00:30.186Z
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: {
@@ -2599,6 +2848,108 @@ type paths = {
2599
2848
  patch?: never;
2600
2849
  trace?: never;
2601
2850
  };
2851
+ "/entities/{id}/permissions": {
2852
+ parameters: {
2853
+ query?: never;
2854
+ header?: never;
2855
+ path?: never;
2856
+ cookie?: never;
2857
+ };
2858
+ /**
2859
+ * Get your permissions for an entity
2860
+ * @description Returns the list of actions you can perform on this entity.
2861
+ *
2862
+ * The response includes:
2863
+ * - `allowed_actions`: Concrete actions you can perform (no wildcards)
2864
+ * - `resolution`: How permissions were determined
2865
+ *
2866
+ * Resolution methods:
2867
+ * - `collection`: Permissions from your role in the parent collection
2868
+ * - `self`: You are checking your own user entity (self-ownership)
2869
+ * - `open_season`: Entity is not in any collection (publicly accessible)
2870
+ *
2871
+ * Actions are filtered to only those relevant to the entity type:
2872
+ * - For files: entity:* and file:* actions
2873
+ * - For collections: entity:* and collection:* actions
2874
+ * - etc.
2875
+ *
2876
+ * ---
2877
+ * **Permission:** `entity:view`
2878
+ * **Auth:** required
2879
+ */
2880
+ get: {
2881
+ parameters: {
2882
+ query?: never;
2883
+ header?: never;
2884
+ path: {
2885
+ /** @description Entity ID (ULID) */
2886
+ id: string;
2887
+ };
2888
+ cookie?: never;
2889
+ };
2890
+ requestBody?: never;
2891
+ responses: {
2892
+ /** @description Permissions retrieved */
2893
+ 200: {
2894
+ headers: {
2895
+ [name: string]: unknown;
2896
+ };
2897
+ content: {
2898
+ "application/json": components["schemas"]["EntityPermissionsResponse"];
2899
+ };
2900
+ };
2901
+ /** @description Unauthorized - Missing or invalid authentication */
2902
+ 401: {
2903
+ headers: {
2904
+ [name: string]: unknown;
2905
+ };
2906
+ content: {
2907
+ /**
2908
+ * @example {
2909
+ * "error": "Unauthorized: Missing or invalid authentication token"
2910
+ * }
2911
+ */
2912
+ "application/json": components["schemas"]["ErrorResponse"];
2913
+ };
2914
+ };
2915
+ /** @description Forbidden - Insufficient permissions */
2916
+ 403: {
2917
+ headers: {
2918
+ [name: string]: unknown;
2919
+ };
2920
+ content: {
2921
+ /**
2922
+ * @example {
2923
+ * "error": "Forbidden: You do not have permission to perform this action"
2924
+ * }
2925
+ */
2926
+ "application/json": components["schemas"]["ErrorResponse"];
2927
+ };
2928
+ };
2929
+ /** @description Not Found - Resource does not exist */
2930
+ 404: {
2931
+ headers: {
2932
+ [name: string]: unknown;
2933
+ };
2934
+ content: {
2935
+ /**
2936
+ * @example {
2937
+ * "error": "Entity not found"
2938
+ * }
2939
+ */
2940
+ "application/json": components["schemas"]["ErrorResponse"];
2941
+ };
2942
+ };
2943
+ };
2944
+ };
2945
+ put?: never;
2946
+ post?: never;
2947
+ delete?: never;
2948
+ options?: never;
2949
+ head?: never;
2950
+ patch?: never;
2951
+ trace?: never;
2952
+ };
2602
2953
  "/relationships": {
2603
2954
  parameters: {
2604
2955
  query?: never;
@@ -2612,14 +2963,20 @@ type paths = {
2612
2963
  * Add relationship between entities
2613
2964
  * @description Creates a relationship from source to target entity.
2614
2965
  *
2615
- * If `target_predicate` is provided, creates a **bidirectional** relationship:
2616
- * - Adds `source_predicate` relationship on source pointing to target
2617
- * - Adds `target_predicate` relationship on target pointing to source
2618
- * - 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.**
2967
+ *
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
2619
2973
  *
2620
- * If `target_predicate` is omitted, creates a **unidirectional** relationship:
2621
- * - Adds `source_predicate` relationship on source pointing to target
2622
- * - Requires `entity:update` permission on source only
2974
+ * If `target_predicate` is omitted (unidirectional):
2975
+ * - Use `PUT /entities/:id` instead
2976
+ *
2977
+ * ---
2978
+ * **Permission:** `entity:update`
2979
+ * **Auth:** required
2623
2980
  */
2624
2981
  post: {
2625
2982
  parameters: {
@@ -2734,14 +3091,20 @@ type paths = {
2734
3091
  * Remove relationship between entities
2735
3092
  * @description Removes a relationship from source to target entity.
2736
3093
  *
2737
- * If `target_predicate` is provided, removes a **bidirectional** relationship:
2738
- * - Removes `source_predicate` relationship from source
2739
- * - Removes `target_predicate` relationship from target
2740
- * - 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.
3097
+ *
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
2741
3104
  *
2742
- * If `target_predicate` is omitted, removes a **unidirectional** relationship:
2743
- * - Removes `source_predicate` relationship from source
2744
- * - Requires `entity:update` permission on source only
3105
+ * ---
3106
+ * **Permission:** `entity:update`
3107
+ * **Auth:** required
2745
3108
  */
2746
3109
  delete: {
2747
3110
  parameters: {
@@ -2877,6 +3240,10 @@ type paths = {
2877
3240
  *
2878
3241
  * Use this for simple entity linking. For bidirectional relationships or
2879
3242
  * advanced options, use the `/relationships` endpoint.
3243
+ *
3244
+ * ---
3245
+ * **Permission:** `entity:update`
3246
+ * **Auth:** required
2880
3247
  */
2881
3248
  post: {
2882
3249
  parameters: {
@@ -3011,6 +3378,10 @@ type paths = {
3011
3378
  * - Only requires `entity:update` permission on source entity
3012
3379
  *
3013
3380
  * For bidirectional removal, use the `/relationships` endpoint.
3381
+ *
3382
+ * ---
3383
+ * **Permission:** `entity:update`
3384
+ * **Auth:** required
3014
3385
  */
3015
3386
  post: {
3016
3387
  parameters: {
@@ -3149,6 +3520,10 @@ type paths = {
3149
3520
  * ## Key Best Practice
3150
3521
  * Use a unique identifier as the key (e.g., version number, timestamp).
3151
3522
  * The actual CID is computed during upload.
3523
+ *
3524
+ * ---
3525
+ * **Permission:** `file:create`
3526
+ * **Auth:** required
3152
3527
  */
3153
3528
  post: {
3154
3529
  parameters: {
@@ -3261,6 +3636,10 @@ type paths = {
3261
3636
  /**
3262
3637
  * Get file metadata
3263
3638
  * @description Returns file entity metadata. Use /{id}/content to download the file content.
3639
+ *
3640
+ * ---
3641
+ * **Permission:** `file:view`
3642
+ * **Auth:** optional
3264
3643
  */
3265
3644
  get: {
3266
3645
  parameters: {
@@ -3322,6 +3701,10 @@ type paths = {
3322
3701
  * This allows "regressing" to a previous file version.
3323
3702
  *
3324
3703
  * To upload a new file, use POST /{id}/reupload instead.
3704
+ *
3705
+ * ---
3706
+ * **Permission:** `file:update`
3707
+ * **Auth:** required
3325
3708
  */
3326
3709
  put: {
3327
3710
  parameters: {
@@ -3460,6 +3843,10 @@ type paths = {
3460
3843
  *
3461
3844
  * ## Streaming
3462
3845
  * Response is streamed directly from R2 storage.
3846
+ *
3847
+ * ---
3848
+ * **Permission:** `file:download`
3849
+ * **Auth:** optional
3463
3850
  */
3464
3851
  get: {
3465
3852
  parameters: {
@@ -3533,6 +3920,10 @@ type paths = {
3533
3920
  * ## Idempotency
3534
3921
  * Re-uploading content for an already-uploaded file will fail with 409 Conflict.
3535
3922
  * Use POST /{id}/reupload first to create a new version.
3923
+ *
3924
+ * ---
3925
+ * **Permission:** `file:upload`
3926
+ * **Auth:** required
3536
3927
  */
3537
3928
  post: {
3538
3929
  parameters: {
@@ -3693,6 +4084,10 @@ type paths = {
3693
4084
  * ## Key Requirement
3694
4085
  * The new key must NOT already exist in R2 (no overwrites).
3695
4086
  * Previous file versions remain accessible via manifest history.
4087
+ *
4088
+ * ---
4089
+ * **Permission:** `file:reupload`
4090
+ * **Auth:** required
3696
4091
  */
3697
4092
  post: {
3698
4093
  parameters: {
@@ -3828,6 +4223,10 @@ type paths = {
3828
4223
  * If a parent folder is specified, a bidirectional relationship is created:
3829
4224
  * - Parent folder contains this folder
3830
4225
  * - This folder is in parent folder
4226
+ *
4227
+ * ---
4228
+ * **Permission:** `folder:create`
4229
+ * **Auth:** required
3831
4230
  */
3832
4231
  post: {
3833
4232
  parameters: {
@@ -3922,6 +4321,10 @@ type paths = {
3922
4321
  /**
3923
4322
  * Get folder
3924
4323
  * @description Returns folder metadata including children and parent relationships.
4324
+ *
4325
+ * ---
4326
+ * **Permission:** `folder:view`
4327
+ * **Auth:** optional
3925
4328
  */
3926
4329
  get: {
3927
4330
  parameters: {
@@ -3977,6 +4380,10 @@ type paths = {
3977
4380
  /**
3978
4381
  * Update folder
3979
4382
  * @description Updates folder properties (label, description, metadata). Properties are merged.
4383
+ *
4384
+ * ---
4385
+ * **Permission:** `folder:update`
4386
+ * **Auth:** required
3980
4387
  */
3981
4388
  put: {
3982
4389
  parameters: {
@@ -4115,6 +4522,10 @@ type paths = {
4115
4522
  * - Child is in folder
4116
4523
  *
4117
4524
  * **Idempotent**: if relationship already exists, returns current state without error.
4525
+ *
4526
+ * ---
4527
+ * **Permission:** `folder:update`
4528
+ * **Auth:** required
4118
4529
  */
4119
4530
  post: {
4120
4531
  parameters: {
@@ -4247,6 +4658,10 @@ type paths = {
4247
4658
  /**
4248
4659
  * Remove child from folder
4249
4660
  * @description Removes a child entity from this folder (bidirectional).
4661
+ *
4662
+ * ---
4663
+ * **Permission:** `folder:update`
4664
+ * **Auth:** required
4250
4665
  */
4251
4666
  delete: {
4252
4667
  parameters: {
@@ -4389,6 +4804,10 @@ type paths = {
4389
4804
  *
4390
4805
  * **Idempotent**: skips children that already have the relationship.
4391
4806
  * Returns both added and skipped children in the response.
4807
+ *
4808
+ * ---
4809
+ * **Permission:** `folder:update`
4810
+ * **Auth:** required
4392
4811
  */
4393
4812
  post: {
4394
4813
  parameters: {
@@ -4526,6 +4945,10 @@ type paths = {
4526
4945
  * - This folder is in parent
4527
4946
  *
4528
4947
  * **Idempotent**: if relationship already exists, returns current state without error.
4948
+ *
4949
+ * ---
4950
+ * **Permission:** `folder:update`
4951
+ * **Auth:** required
4529
4952
  */
4530
4953
  post: {
4531
4954
  parameters: {
@@ -4658,6 +5081,10 @@ type paths = {
4658
5081
  /**
4659
5082
  * Remove parent from folder
4660
5083
  * @description Removes this folder from a parent folder (bidirectional).
5084
+ *
5085
+ * ---
5086
+ * **Permission:** `folder:update`
5087
+ * **Auth:** required
4661
5088
  */
4662
5089
  delete: {
4663
5090
  parameters: {
@@ -4788,6 +5215,10 @@ type paths = {
4788
5215
  /**
4789
5216
  * List version history
4790
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
4791
5222
  */
4792
5223
  get: {
4793
5224
  parameters: {
@@ -4888,6 +5319,10 @@ type paths = {
4888
5319
  /**
4889
5320
  * Get manifest by CID
4890
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
4891
5326
  */
4892
5327
  get: {
4893
5328
  parameters: {
@@ -4965,6 +5400,10 @@ type paths = {
4965
5400
  * - Validating actions client-side
4966
5401
  *
4967
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
4968
5407
  */
4969
5408
  get: {
4970
5409
  parameters: {
@@ -5006,6 +5445,10 @@ type paths = {
5006
5445
  /**
5007
5446
  * Create an agent
5008
5447
  * @description Creates a new agent entity. Requires agent:create permission in the target collection.
5448
+ *
5449
+ * ---
5450
+ * **Permission:** `agent:create`
5451
+ * **Auth:** required
5009
5452
  */
5010
5453
  post: {
5011
5454
  parameters: {
@@ -5114,6 +5557,10 @@ type paths = {
5114
5557
  /**
5115
5558
  * Get agent by ID
5116
5559
  * @description Returns an agent entity by ID.
5560
+ *
5561
+ * ---
5562
+ * **Permission:** `agent:view`
5563
+ * **Auth:** optional
5117
5564
  */
5118
5565
  get: {
5119
5566
  parameters: {
@@ -5169,6 +5616,16 @@ type paths = {
5169
5616
  /**
5170
5617
  * Update agent
5171
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
5172
5629
  */
5173
5630
  put: {
5174
5631
  parameters: {
@@ -5302,11 +5759,17 @@ type paths = {
5302
5759
  * Invoke an agent
5303
5760
  * @description Invoke an agent to perform work on a target collection.
5304
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
+ *
5305
5764
  * **Two-phase interaction:**
5306
- * 1. First call with `confirm: false` (default) returns a preview of permissions that will be granted
5307
- * 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
5308
5767
  *
5309
5768
  * The agent receives temporal (time-limited) permissions on the target collection.
5769
+ *
5770
+ * ---
5771
+ * **Permission:** `agent:invoke`
5772
+ * **Auth:** required
5310
5773
  */
5311
5774
  post: {
5312
5775
  parameters: {
@@ -5427,6 +5890,10 @@ type paths = {
5427
5890
  /**
5428
5891
  * List API keys for agent
5429
5892
  * @description Lists all active API keys for the agent (without the actual key values).
5893
+ *
5894
+ * ---
5895
+ * **Permission:** `agent:manage`
5896
+ * **Auth:** required
5430
5897
  */
5431
5898
  get: {
5432
5899
  parameters: {
@@ -5497,6 +5964,10 @@ type paths = {
5497
5964
  /**
5498
5965
  * Create API key for agent
5499
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
5500
5971
  */
5501
5972
  post: {
5502
5973
  parameters: {
@@ -5611,6 +6082,10 @@ type paths = {
5611
6082
  /**
5612
6083
  * Revoke API key
5613
6084
  * @description Revokes an API key for the agent.
6085
+ *
6086
+ * ---
6087
+ * **Permission:** `agent:manage`
6088
+ * **Auth:** required
5614
6089
  */
5615
6090
  delete: {
5616
6091
  parameters: {
@@ -5681,24 +6156,237 @@ type paths = {
5681
6156
  patch?: never;
5682
6157
  trace?: never;
5683
6158
  };
5684
- "/events": {
6159
+ "/agents/{id}/verify": {
5685
6160
  parameters: {
5686
6161
  query?: never;
5687
6162
  header?: never;
5688
6163
  path?: never;
5689
6164
  cookie?: never;
5690
6165
  };
6166
+ get?: never;
6167
+ put?: never;
5691
6168
  /**
5692
- * List entity change events
5693
- * @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.
5694
6171
  *
5695
- * **Usage:**
5696
- * - Call without cursor to get newest events
5697
- * - Use returned `cursor` as `?cursor=` to get older events
5698
- * - Poll without cursor periodically to check for 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
5699
6176
  *
5700
- * **Sync flow:**
5701
- * 1. Initial: `GET /events` → get newest, save highest `id` as high-water mark
6177
+ * **Verification endpoint format:**
6178
+ * Your endpoint must return JSON:
6179
+ * ```json
6180
+ * {
6181
+ * "verification_token": "vt_xxx...",
6182
+ * "agent_id": "IIxxx..."
6183
+ * }
6184
+ * ```
6185
+ *
6186
+ * ---
6187
+ * **Permission:** `agent:manage`
6188
+ * **Auth:** required
6189
+ */
6190
+ post: {
6191
+ parameters: {
6192
+ query?: never;
6193
+ header?: never;
6194
+ path: {
6195
+ /** @description Entity ID (ULID) */
6196
+ id: string;
6197
+ };
6198
+ cookie?: never;
6199
+ };
6200
+ requestBody?: {
6201
+ content: {
6202
+ "application/json": components["schemas"]["VerifyAgentRequest"];
6203
+ };
6204
+ };
6205
+ responses: {
6206
+ /** @description Verification token (when confirm is false) or verification result (when confirm is true) */
6207
+ 200: {
6208
+ headers: {
6209
+ [name: string]: unknown;
6210
+ };
6211
+ content: {
6212
+ "application/json": components["schemas"]["VerifyAgentTokenResponse"] | components["schemas"]["VerifyAgentSuccessResponse"] | components["schemas"]["VerifyAgentFailureResponse"];
6213
+ };
6214
+ };
6215
+ /** @description Bad Request - Invalid input */
6216
+ 400: {
6217
+ headers: {
6218
+ [name: string]: unknown;
6219
+ };
6220
+ content: {
6221
+ /**
6222
+ * @example {
6223
+ * "error": "Validation failed",
6224
+ * "details": {
6225
+ * "issues": [
6226
+ * {
6227
+ * "path": [
6228
+ * "properties",
6229
+ * "label"
6230
+ * ],
6231
+ * "message": "Required"
6232
+ * }
6233
+ * ]
6234
+ * }
6235
+ * }
6236
+ */
6237
+ "application/json": components["schemas"]["ValidationErrorResponse"];
6238
+ };
6239
+ };
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
+ };
6297
+ /**
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
5702
6390
  * 2. Paginate: `GET /events?cursor=X` → get older events until `has_more=false`
5703
6391
  * 3. Poll: `GET /events` → if newest `id` > high-water mark, process new events
5704
6392
  *
@@ -5709,6 +6397,10 @@ type paths = {
5709
6397
  * - `ts`: ISO timestamp
5710
6398
  *
5711
6399
  * Events are ephemeral (30-day rolling window) - for full sync, use snapshots.
6400
+ *
6401
+ * ---
6402
+ * **Permission:** `events:list`
6403
+ * **Auth:** none
5712
6404
  */
5713
6405
  get: {
5714
6406
  parameters: {
@@ -5756,7 +6448,13 @@ type paths = {
5756
6448
  put?: never;
5757
6449
  /**
5758
6450
  * Find paths between entities
5759
- * @description Find shortest paths between source and target entity sets using graph traversal.
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
5760
6458
  */
5761
6459
  post: {
5762
6460
  parameters: {
@@ -5823,8 +6521,14 @@ type paths = {
5823
6521
  get?: never;
5824
6522
  put?: never;
5825
6523
  /**
5826
- * Find reachable entities
5827
- * @description Find all entities of a specific type reachable from source entities within N hops.
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
5828
6532
  */
5829
6533
  post: {
5830
6534
  parameters: {
@@ -5890,7 +6594,11 @@ type paths = {
5890
6594
  };
5891
6595
  /**
5892
6596
  * Get entity from graph
5893
- * @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
5894
6602
  */
5895
6603
  get: {
5896
6604
  parameters: {
@@ -5948,7 +6656,17 @@ type paths = {
5948
6656
  put?: never;
5949
6657
  /**
5950
6658
  * Execute Argo query
5951
- * @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.
5952
6670
  *
5953
6671
  * ## Query Syntax
5954
6672
  *
@@ -5997,6 +6715,11 @@ type paths = {
5997
6715
  * @:discover "alice" -[*]{,2}-> type:person # Discover, then traverse
5998
6716
  * @01KE4ZY... -[*]{,2}-> type:person # From exact entity
5999
6717
  * ```
6718
+ *
6719
+ *
6720
+ * ---
6721
+ * **Permission:** `query:execute`
6722
+ * **Auth:** required
6000
6723
  */
6001
6724
  post: {
6002
6725
  parameters: {
@@ -6067,6 +6790,10 @@ type paths = {
6067
6790
  * @description Find collections that are semantically similar to a given collection.
6068
6791
  *
6069
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
6070
6797
  */
6071
6798
  post: {
6072
6799
  parameters: {
@@ -6198,6 +6925,10 @@ type paths = {
6198
6925
  * 1. First finds collections similar to the entity's collection
6199
6926
  * 2. Then searches within each collection for similar items
6200
6927
  * 3. Aggregates and ranks results with diversity weighting
6928
+ *
6929
+ * ---
6930
+ * **Permission:** `search:similar`
6931
+ * **Auth:** required
6201
6932
  */
6202
6933
  post: {
6203
6934
  parameters: {
@@ -6346,6 +7077,10 @@ type paths = {
6346
7077
  * @description Search for collections using semantic text search.
6347
7078
  *
6348
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
6349
7084
  */
6350
7085
  post: {
6351
7086
  parameters: {
@@ -6442,7 +7177,7 @@ type paths = {
6442
7177
  patch?: never;
6443
7178
  trace?: never;
6444
7179
  };
6445
- "/search/entities": {
7180
+ "/search/agents": {
6446
7181
  parameters: {
6447
7182
  query?: never;
6448
7183
  header?: never;
@@ -6452,12 +7187,14 @@ type paths = {
6452
7187
  get?: never;
6453
7188
  put?: never;
6454
7189
  /**
6455
- * Search entities within collection(s)
6456
- * @description Search for entities within one or more collections using semantic text search.
7190
+ * Search agents by text
7191
+ * @description Search for agents using semantic text search.
6457
7192
  *
6458
- * Provide either `collection_pi` for a single collection or `collection_pis` for multiple collections (searched in parallel).
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.
6459
7194
  *
6460
- * Use `per_collection_limit` to ensure result diversity when searching multiple collections.
7195
+ * ---
7196
+ * **Permission:** `search:query`
7197
+ * **Auth:** required
6461
7198
  */
6462
7199
  post: {
6463
7200
  parameters: {
@@ -6469,21 +7206,13 @@ type paths = {
6469
7206
  requestBody?: {
6470
7207
  content: {
6471
7208
  "application/json": {
6472
- /** @description Single collection PI to search within */
6473
- collection_pi?: string;
6474
- /** @description Multiple collection PIs to search (max 20) */
6475
- collection_pis?: string[];
6476
7209
  /** @description Search query text */
6477
7210
  query: string;
6478
7211
  /**
6479
- * @description Maximum total results to return
6480
- * @default 20
7212
+ * @description Maximum results to return
7213
+ * @default 10
6481
7214
  */
6482
7215
  limit?: number;
6483
- /** @description Filter by entity types */
6484
- types?: string[];
6485
- /** @description Max results per collection for diversity */
6486
- per_collection_limit?: number;
6487
7216
  };
6488
7217
  };
6489
7218
  };
@@ -6498,16 +7227,14 @@ type paths = {
6498
7227
  results: {
6499
7228
  pi: string;
6500
7229
  label: string;
6501
- type: string;
6502
7230
  score: number;
6503
- collection_pi: string;
7231
+ collection_pi: string | null;
7232
+ status?: string;
6504
7233
  created_at?: string;
6505
7234
  updated_at?: string;
6506
7235
  }[];
6507
7236
  metadata: {
6508
- collection_pis: string[];
6509
7237
  query: string;
6510
- collections_searched: number;
6511
7238
  result_count: number;
6512
7239
  };
6513
7240
  };
@@ -6563,7 +7290,7 @@ type paths = {
6563
7290
  patch?: never;
6564
7291
  trace?: never;
6565
7292
  };
6566
- "/search/discover": {
7293
+ "/search/entities": {
6567
7294
  parameters: {
6568
7295
  query?: never;
6569
7296
  header?: never;
@@ -6573,15 +7300,16 @@ type paths = {
6573
7300
  get?: never;
6574
7301
  put?: never;
6575
7302
  /**
6576
- * Discover entities across all collections
6577
- * @description Two-step discovery search: first finds relevant collections, then searches within them.
7303
+ * Search entities within collection(s)
7304
+ * @description Search for entities within one or more collections using semantic text search.
6578
7305
  *
6579
- * Use this endpoint when you don't know which collections to search. The system will:
6580
- * 1. Find collections semantically related to your query
6581
- * 2. Search within each collection in parallel
6582
- * 3. Aggregate and rank results across all collections
7306
+ * Provide either `collection_pi` for a single collection or `collection_pis` for multiple collections (searched in parallel).
6583
7307
  *
6584
- * Great for exploration and AI agents navigating the network.
7308
+ * Use `per_collection_limit` to ensure result diversity when searching multiple collections.
7309
+ *
7310
+ * ---
7311
+ * **Permission:** `search:query`
7312
+ * **Auth:** required
6585
7313
  */
6586
7314
  post: {
6587
7315
  parameters: {
@@ -6593,6 +7321,10 @@ type paths = {
6593
7321
  requestBody?: {
6594
7322
  content: {
6595
7323
  "application/json": {
7324
+ /** @description Single collection PI to search within */
7325
+ collection_pi?: string;
7326
+ /** @description Multiple collection PIs to search (max 20) */
7327
+ collection_pis?: string[];
6596
7328
  /** @description Search query text */
6597
7329
  query: string;
6598
7330
  /**
@@ -6602,21 +7334,13 @@ type paths = {
6602
7334
  limit?: number;
6603
7335
  /** @description Filter by entity types */
6604
7336
  types?: string[];
6605
- /**
6606
- * @description Number of collections to search
6607
- * @default 10
6608
- */
6609
- collection_limit?: number;
6610
- /**
6611
- * @description Max results per collection
6612
- * @default 5
6613
- */
7337
+ /** @description Max results per collection for diversity */
6614
7338
  per_collection_limit?: number;
6615
7339
  };
6616
7340
  };
6617
7341
  };
6618
7342
  responses: {
6619
- /** @description Discovery results */
7343
+ /** @description Search results */
6620
7344
  200: {
6621
7345
  headers: {
6622
7346
  [name: string]: unknown;
@@ -6633,6 +7357,7 @@ type paths = {
6633
7357
  updated_at?: string;
6634
7358
  }[];
6635
7359
  metadata: {
7360
+ collection_pis: string[];
6636
7361
  query: string;
6637
7362
  collections_searched: number;
6638
7363
  result_count: number;
@@ -6690,18 +7415,375 @@ type paths = {
6690
7415
  patch?: never;
6691
7416
  trace?: never;
6692
7417
  };
6693
- "/entities/{id}/attestation": {
7418
+ "/search/discover": {
6694
7419
  parameters: {
6695
7420
  query?: never;
6696
7421
  header?: never;
6697
7422
  path?: never;
6698
7423
  cookie?: never;
6699
7424
  };
6700
- /**
7425
+ get?: never;
7426
+ put?: never;
7427
+ /**
7428
+ * Discover entities across all collections
7429
+ * @description Two-step discovery search: first finds relevant collections, then searches within them.
7430
+ *
7431
+ * Use this endpoint when you don't know which collections to search. The system will:
7432
+ * 1. Find collections semantically related to your query
7433
+ * 2. Search within each collection in parallel
7434
+ * 3. Aggregate and rank results across all collections
7435
+ *
7436
+ * Great for exploration and AI agents navigating the network.
7437
+ *
7438
+ * ---
7439
+ * **Permission:** `search:query`
7440
+ * **Auth:** required
7441
+ */
7442
+ post: {
7443
+ parameters: {
7444
+ query?: never;
7445
+ header?: never;
7446
+ path?: never;
7447
+ cookie?: never;
7448
+ };
7449
+ requestBody?: {
7450
+ content: {
7451
+ "application/json": {
7452
+ /** @description Search query text */
7453
+ query: string;
7454
+ /**
7455
+ * @description Maximum total results to return
7456
+ * @default 20
7457
+ */
7458
+ limit?: number;
7459
+ /** @description Filter by entity types */
7460
+ types?: string[];
7461
+ /**
7462
+ * @description Number of collections to search
7463
+ * @default 10
7464
+ */
7465
+ collection_limit?: number;
7466
+ /**
7467
+ * @description Max results per collection
7468
+ * @default 5
7469
+ */
7470
+ per_collection_limit?: number;
7471
+ };
7472
+ };
7473
+ };
7474
+ responses: {
7475
+ /** @description Discovery results */
7476
+ 200: {
7477
+ headers: {
7478
+ [name: string]: unknown;
7479
+ };
7480
+ content: {
7481
+ "application/json": {
7482
+ results: {
7483
+ pi: string;
7484
+ label: string;
7485
+ type: string;
7486
+ score: number;
7487
+ collection_pi: string;
7488
+ created_at?: string;
7489
+ updated_at?: string;
7490
+ }[];
7491
+ metadata: {
7492
+ query: string;
7493
+ collections_searched: number;
7494
+ result_count: number;
7495
+ };
7496
+ };
7497
+ };
7498
+ };
7499
+ /** @description Bad Request - Invalid input */
7500
+ 400: {
7501
+ headers: {
7502
+ [name: string]: unknown;
7503
+ };
7504
+ content: {
7505
+ /**
7506
+ * @example {
7507
+ * "error": "Validation failed",
7508
+ * "details": {
7509
+ * "issues": [
7510
+ * {
7511
+ * "path": [
7512
+ * "properties",
7513
+ * "label"
7514
+ * ],
7515
+ * "message": "Required"
7516
+ * }
7517
+ * ]
7518
+ * }
7519
+ * }
7520
+ */
7521
+ "application/json": components["schemas"]["ValidationErrorResponse"];
7522
+ };
7523
+ };
7524
+ /** @description Service Unavailable - External service not available */
7525
+ 503: {
7526
+ headers: {
7527
+ [name: string]: unknown;
7528
+ };
7529
+ content: {
7530
+ /**
7531
+ * @example {
7532
+ * "error": "Service unavailable",
7533
+ * "details": {
7534
+ * "service": "pinecone"
7535
+ * }
7536
+ * }
7537
+ */
7538
+ "application/json": components["schemas"]["ErrorResponse"];
7539
+ };
7540
+ };
7541
+ };
7542
+ };
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
+ };
7766
+ options?: never;
7767
+ head?: never;
7768
+ patch?: never;
7769
+ trace?: never;
7770
+ };
7771
+ "/entities/{id}/attestation": {
7772
+ parameters: {
7773
+ query?: never;
7774
+ header?: never;
7775
+ path?: never;
7776
+ cookie?: never;
7777
+ };
7778
+ /**
6701
7779
  * Get latest attestation
6702
7780
  * @description Returns the Arweave attestation for the current (latest) version of an entity.
6703
7781
  *
6704
7782
  * Returns 202 Accepted if the attestation upload is still pending.
7783
+ *
7784
+ * ---
7785
+ * **Permission:** `entity:view`
7786
+ * **Auth:** optional
6705
7787
  */
6706
7788
  get: {
6707
7789
  parameters: {
@@ -6779,44 +7861,105 @@ type paths = {
6779
7861
  cookie?: never;
6780
7862
  };
6781
7863
  /**
6782
- * Get version attestation
6783
- * @description Returns the Arweave attestation for a specific version of an entity.
7864
+ * Get version attestation
7865
+ * @description Returns the Arweave attestation for a specific version of an entity.
7866
+ *
7867
+ * ---
7868
+ * **Permission:** `entity:view`
7869
+ * **Auth:** optional
7870
+ */
7871
+ get: {
7872
+ parameters: {
7873
+ query?: never;
7874
+ header?: never;
7875
+ path: {
7876
+ /** @description Entity ID (ULID) */
7877
+ id: string;
7878
+ /** @description Version number */
7879
+ ver: number;
7880
+ };
7881
+ cookie?: never;
7882
+ };
7883
+ requestBody?: never;
7884
+ responses: {
7885
+ /** @description Attestation found */
7886
+ 200: {
7887
+ headers: {
7888
+ [name: string]: unknown;
7889
+ };
7890
+ content: {
7891
+ "application/json": components["schemas"]["AttestationResponse"];
7892
+ };
7893
+ };
7894
+ /** @description Forbidden - Insufficient permissions */
7895
+ 403: {
7896
+ headers: {
7897
+ [name: string]: unknown;
7898
+ };
7899
+ content: {
7900
+ /**
7901
+ * @example {
7902
+ * "error": "Forbidden: You do not have permission to perform this action"
7903
+ * }
7904
+ */
7905
+ "application/json": components["schemas"]["ErrorResponse"];
7906
+ };
7907
+ };
7908
+ /** @description Not Found - Resource does not exist */
7909
+ 404: {
7910
+ headers: {
7911
+ [name: string]: unknown;
7912
+ };
7913
+ content: {
7914
+ /**
7915
+ * @example {
7916
+ * "error": "Entity not found"
7917
+ * }
7918
+ */
7919
+ "application/json": components["schemas"]["ErrorResponse"];
7920
+ };
7921
+ };
7922
+ };
7923
+ };
7924
+ put?: never;
7925
+ post?: never;
7926
+ delete?: never;
7927
+ options?: never;
7928
+ head?: never;
7929
+ patch?: never;
7930
+ trace?: never;
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
6784
7946
  */
6785
7947
  get: {
6786
7948
  parameters: {
6787
7949
  query?: never;
6788
7950
  header?: never;
6789
- path: {
6790
- /** @description Entity ID (ULID) */
6791
- id: string;
6792
- /** @description Version number */
6793
- ver: number;
6794
- };
7951
+ path?: never;
6795
7952
  cookie?: never;
6796
7953
  };
6797
7954
  requestBody?: never;
6798
7955
  responses: {
6799
- /** @description Attestation found */
7956
+ /** @description Chain head */
6800
7957
  200: {
6801
7958
  headers: {
6802
7959
  [name: string]: unknown;
6803
7960
  };
6804
7961
  content: {
6805
- "application/json": components["schemas"]["AttestationResponse"];
6806
- };
6807
- };
6808
- /** @description Forbidden - Insufficient permissions */
6809
- 403: {
6810
- headers: {
6811
- [name: string]: unknown;
6812
- };
6813
- content: {
6814
- /**
6815
- * @example {
6816
- * "error": "Forbidden: You do not have permission to perform this action"
6817
- * }
6818
- */
6819
- "application/json": components["schemas"]["ErrorResponse"];
7962
+ "application/json": components["schemas"]["ChainHeadResponse"];
6820
7963
  };
6821
7964
  };
6822
7965
  /** @description Not Found - Resource does not exist */
@@ -6855,6 +7998,10 @@ type paths = {
6855
7998
  * @description Fetches an attestation from Arweave and verifies the CID matches the manifest content.
6856
7999
  *
6857
8000
  * This is a public endpoint - anyone can verify attestations.
8001
+ *
8002
+ * ---
8003
+ * **Permission:** `attestation:verify`
8004
+ * **Auth:** none
6858
8005
  */
6859
8006
  get: {
6860
8007
  parameters: {
@@ -6993,6 +8140,19 @@ type components = {
6993
8140
  * @example 1735214400000
6994
8141
  */
6995
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
+ };
6996
8156
  /**
6997
8157
  * @description Previous version CID (present on updates)
6998
8158
  * @example bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy
@@ -7045,7 +8205,7 @@ type components = {
7045
8205
  properties?: {
7046
8206
  [key: string]: unknown;
7047
8207
  };
7048
- /** @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. */
7049
8209
  properties_remove?: string[] | {
7050
8210
  [key: string]: unknown;
7051
8211
  };
@@ -7388,7 +8548,7 @@ type components = {
7388
8548
  properties?: {
7389
8549
  [key: string]: unknown;
7390
8550
  };
7391
- /** @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. */
7392
8552
  properties_remove?: string[] | {
7393
8553
  [key: string]: unknown;
7394
8554
  };
@@ -7748,6 +8908,19 @@ type components = {
7748
8908
  * @example 1735214400000
7749
8909
  */
7750
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
+ };
7751
8924
  /**
7752
8925
  * @description Previous version CID (present on updates)
7753
8926
  * @example bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy
@@ -7771,7 +8944,7 @@ type components = {
7771
8944
  */
7772
8945
  type: string;
7773
8946
  /**
7774
- * @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.
7775
8948
  * @example {
7776
8949
  * "label": "Chapter 1: Loomings",
7777
8950
  * "author": "Herman Melville"
@@ -7796,6 +8969,18 @@ type components = {
7796
8969
  */
7797
8970
  collection?: string;
7798
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
+ };
7799
8984
  EntityUpdatedResponse: components["schemas"]["EntityResponse"] & {
7800
8985
  /**
7801
8986
  * @description Previous version CID
@@ -7818,7 +9003,7 @@ type components = {
7818
9003
  properties?: {
7819
9004
  [key: string]: unknown;
7820
9005
  };
7821
- /** @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. */
7822
9007
  properties_remove?: string[] | {
7823
9008
  [key: string]: unknown;
7824
9009
  };
@@ -8105,6 +9290,47 @@ type components = {
8105
9290
  patch: components["schemas"]["PatchOperation"][];
8106
9291
  };
8107
9292
  DiffResponse: components["schemas"]["SemanticDiffResponse"] | components["schemas"]["PatchDiffResponse"];
9293
+ /** @description How permissions were resolved */
9294
+ PermissionResolution: {
9295
+ /**
9296
+ * @description How permissions were resolved
9297
+ * @example collection
9298
+ * @enum {string}
9299
+ */
9300
+ method: "collection" | "self" | "open_season";
9301
+ /**
9302
+ * @description Collection ID if permissions come from a collection role
9303
+ * @example 01KDETYWYWM0MJVKM8DK3AEXPY
9304
+ */
9305
+ collection_id?: string;
9306
+ /**
9307
+ * @description Role name in the collection
9308
+ * @example editor
9309
+ */
9310
+ role?: string;
9311
+ };
9312
+ EntityPermissionsResponse: {
9313
+ /**
9314
+ * @description The entity ID
9315
+ * @example 01KDETYWYWM0MJVKM8DK3AEXPY
9316
+ */
9317
+ entity_id: string;
9318
+ /**
9319
+ * @description The entity type
9320
+ * @example file
9321
+ */
9322
+ entity_type: string;
9323
+ /**
9324
+ * @description Actions the user can perform on this entity
9325
+ * @example [
9326
+ * "entity:view",
9327
+ * "entity:update",
9328
+ * "file:download"
9329
+ * ]
9330
+ */
9331
+ allowed_actions: string[];
9332
+ resolution: components["schemas"]["PermissionResolution"];
9333
+ };
8108
9334
  AddRelationshipResponse: {
8109
9335
  source: components["schemas"]["EntityResponse"] & unknown;
8110
9336
  target?: components["schemas"]["EntityResponse"] & unknown;
@@ -8304,6 +9530,19 @@ type components = {
8304
9530
  * @example 1735214400000
8305
9531
  */
8306
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
+ };
8307
9546
  };
8308
9547
  CreateFileRequest: {
8309
9548
  /**
@@ -8397,7 +9636,7 @@ type components = {
8397
9636
  properties?: {
8398
9637
  [key: string]: unknown;
8399
9638
  };
8400
- /** @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. */
8401
9640
  properties_remove?: string[] | {
8402
9641
  [key: string]: unknown;
8403
9642
  };
@@ -8550,6 +9789,19 @@ type components = {
8550
9789
  * @example 1735214400000
8551
9790
  */
8552
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
+ };
8553
9805
  };
8554
9806
  CreateFolderRequest: {
8555
9807
  /**
@@ -8621,7 +9873,7 @@ type components = {
8621
9873
  properties?: {
8622
9874
  [key: string]: unknown;
8623
9875
  };
8624
- /** @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. */
8625
9877
  properties_remove?: string[] | {
8626
9878
  [key: string]: unknown;
8627
9879
  };
@@ -8985,6 +10237,34 @@ type components = {
8985
10237
  note?: string;
8986
10238
  };
8987
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
+ };
8988
10268
  /** @description Verb wildcard pattern (*:verb) */
8989
10269
  WildcardInfo: {
8990
10270
  /**
@@ -9045,6 +10325,7 @@ type components = {
9045
10325
  implications: {
9046
10326
  [key: string]: string[];
9047
10327
  };
10328
+ type_hierarchy: components["schemas"]["TypeHierarchy"];
9048
10329
  /** @description Wildcard pattern documentation */
9049
10330
  wildcards: {
9050
10331
  verb: components["schemas"]["WildcardInfo"];
@@ -9078,21 +10359,18 @@ type components = {
9078
10359
  AgentResponse: components["schemas"]["EntityResponse"] & {
9079
10360
  /** @enum {string} */
9080
10361
  type?: "agent";
9081
- };
9082
- SubAgentRef: {
9083
- pi: string;
9084
- /** @description Display label for the sub-agent */
9085
- label?: string;
9086
- /** @description Description of the sub-agent role */
9087
- description?: string;
9088
- /**
9089
- * @description Actions this sub-agent requires
9090
- * @example [
9091
- * "entity:view",
9092
- * "entity:update"
9093
- * ]
9094
- */
9095
- 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
+ }[];
9096
10374
  };
9097
10375
  CreateAgentRequest: {
9098
10376
  /**
@@ -9129,8 +10407,15 @@ type components = {
9129
10407
  * @example Extracts text from scanned documents using OCR
9130
10408
  */
9131
10409
  description?: string;
9132
- /** @description Sub-agents used by this orchestrator */
9133
- 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
+ }[];
9134
10419
  /** @description JSON Schema for input validation */
9135
10420
  input_schema?: {
9136
10421
  [key: string]: unknown;
@@ -9176,7 +10461,7 @@ type components = {
9176
10461
  properties?: {
9177
10462
  [key: string]: unknown;
9178
10463
  };
9179
- /** @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. */
9180
10465
  properties_remove?: string[] | {
9181
10466
  [key: string]: unknown;
9182
10467
  };
@@ -9253,8 +10538,15 @@ type components = {
9253
10538
  * @enum {string}
9254
10539
  */
9255
10540
  status?: "development" | "active" | "disabled";
9256
- /** @description Updated sub-agents */
9257
- 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
+ }[];
9258
10550
  /** @description Updated input schema */
9259
10551
  input_schema?: {
9260
10552
  [key: string]: unknown;
@@ -9292,6 +10584,20 @@ type components = {
9292
10584
  can_proceed: boolean;
9293
10585
  /** @description True if some agents need permission grants */
9294
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
+ }[];
9295
10601
  };
9296
10602
  InvokeGrantResult: {
9297
10603
  agent_id: string;
@@ -9337,7 +10643,7 @@ type components = {
9337
10643
  };
9338
10644
  InvokeConfirmedResponse: components["schemas"]["InvokeStartedResponse"] | components["schemas"]["InvokeRejectedResponse"];
9339
10645
  InvokeAgentRequest: {
9340
- /** @description Target collection ID to operate on */
10646
+ /** @description Collection ID to grant the agent access to. All agent permissions are collection-scoped. */
9341
10647
  target: string;
9342
10648
  /** @description Job collection where agent should write logs. If not provided, creates new root collection. */
9343
10649
  job_collection?: string;
@@ -9405,6 +10711,106 @@ type components = {
9405
10711
  ListAgentApiKeysResponse: {
9406
10712
  keys: components["schemas"]["AgentApiKeyInfo"][];
9407
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
+ };
9408
10814
  Event: {
9409
10815
  /**
9410
10816
  * @description Auto-increment event ID (use as cursor)
@@ -9656,13 +11062,13 @@ type components = {
9656
11062
  path: string;
9657
11063
  /**
9658
11064
  * @description Maximum number of results to return
9659
- * @default 10
9660
- * @example 10
11065
+ * @default 25
11066
+ * @example 25
9661
11067
  */
9662
11068
  k: number;
9663
11069
  /**
9664
11070
  * @description Beam width for exploration (default: k * 3)
9665
- * @example 30
11071
+ * @example 75
9666
11072
  */
9667
11073
  k_explore?: number;
9668
11074
  /**
@@ -9671,6 +11077,80 @@ type components = {
9671
11077
  */
9672
11078
  collection?: string;
9673
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
+ };
9674
11154
  AttestationResponse: {
9675
11155
  /**
9676
11156
  * @description Entity ID (ULID format)
@@ -9731,6 +11211,24 @@ type components = {
9731
11211
  */
9732
11212
  message: string;
9733
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
+ };
9734
11232
  VerifyAttestationResponse: {
9735
11233
  arweave_tx: string;
9736
11234
  attestation: {
@@ -9780,7 +11278,12 @@ type components = {
9780
11278
  };
9781
11279
  };
9782
11280
  responses: never;
9783
- parameters: never;
11281
+ parameters: {
11282
+ /** @description Target network. Use `test` for isolated test data with II-prefixed IDs. */
11283
+ "X-Arke-Network": "main" | "test";
11284
+ /** @description User entity ID for service accounts acting on behalf of a user. Only valid with `role: service` authentication. */
11285
+ "X-On-Behalf-Of": string;
11286
+ };
9784
11287
  requestBodies: never;
9785
11288
  headers: never;
9786
11289
  pathItems: never;