@arke-institute/sdk 2.3.6 → 2.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/openapi/spec.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "info": {
4
4
  "title": "Arke v1 API",
5
5
  "version": "1.0.0",
6
- "description": "IPFS-backed entity management API with versioning and permissions."
6
+ "description": "Entity management API with content-addressed versioning and permissions."
7
7
  },
8
8
  "servers": [
9
9
  {
@@ -82,7 +82,7 @@
82
82
  "cid": {
83
83
  "type": "string",
84
84
  "minLength": 1,
85
- "description": "IPFS Content Identifier (CID)",
85
+ "description": "Content Identifier (CID) - content-addressed hash",
86
86
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
87
87
  },
88
88
  "properties": {
@@ -159,7 +159,7 @@
159
159
  "cid": {
160
160
  "type": "string",
161
161
  "minLength": 1,
162
- "description": "IPFS Content Identifier (CID)",
162
+ "description": "Content Identifier (CID) - content-addressed hash",
163
163
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
164
164
  },
165
165
  "type": {
@@ -615,6 +615,87 @@
615
615
  "keys"
616
616
  ]
617
617
  },
618
+ "UserCollectionItem": {
619
+ "type": "object",
620
+ "properties": {
621
+ "pi": {
622
+ "type": "string",
623
+ "description": "Collection persistent identifier",
624
+ "example": "01JCOLLECTION123456789AB"
625
+ },
626
+ "label": {
627
+ "type": "string",
628
+ "description": "Collection label/name",
629
+ "example": "My Research Collection"
630
+ },
631
+ "predicate": {
632
+ "type": "string",
633
+ "description": "Role predicate indicating user's relationship to collection",
634
+ "example": "owner"
635
+ },
636
+ "created_at": {
637
+ "type": "string",
638
+ "description": "When the collection was created",
639
+ "example": "2026-01-12T00:00:00.000Z"
640
+ }
641
+ },
642
+ "required": [
643
+ "pi",
644
+ "label",
645
+ "predicate",
646
+ "created_at"
647
+ ]
648
+ },
649
+ "UserCollectionsResponse": {
650
+ "type": "object",
651
+ "properties": {
652
+ "user_id": {
653
+ "type": "string",
654
+ "description": "User persistent identifier",
655
+ "example": "01JUSER123456789ABCDEFGH"
656
+ },
657
+ "collections": {
658
+ "type": "array",
659
+ "items": {
660
+ "$ref": "#/components/schemas/UserCollectionItem"
661
+ },
662
+ "description": "Collections the user has access to"
663
+ },
664
+ "pagination": {
665
+ "type": "object",
666
+ "properties": {
667
+ "offset": {
668
+ "type": "number",
669
+ "description": "Current offset"
670
+ },
671
+ "limit": {
672
+ "type": "number",
673
+ "description": "Results per page"
674
+ },
675
+ "count": {
676
+ "type": "number",
677
+ "description": "Number of results returned"
678
+ },
679
+ "has_more": {
680
+ "type": "boolean",
681
+ "description": "Whether more results exist"
682
+ }
683
+ },
684
+ "required": [
685
+ "offset",
686
+ "limit",
687
+ "count",
688
+ "has_more"
689
+ ],
690
+ "description": "Pagination metadata"
691
+ }
692
+ },
693
+ "required": [
694
+ "user_id",
695
+ "collections",
696
+ "pagination"
697
+ ]
698
+ },
618
699
  "CollectionResponse": {
619
700
  "allOf": [
620
701
  {
@@ -931,13 +1012,13 @@
931
1012
  "cid": {
932
1013
  "type": "string",
933
1014
  "minLength": 1,
934
- "description": "IPFS Content Identifier (CID)",
1015
+ "description": "Content Identifier (CID) - content-addressed hash",
935
1016
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
936
1017
  },
937
1018
  "prev_cid": {
938
1019
  "type": "string",
939
1020
  "minLength": 1,
940
- "description": "IPFS Content Identifier (CID)",
1021
+ "description": "Content Identifier (CID) - content-addressed hash",
941
1022
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
942
1023
  },
943
1024
  "ver": {
@@ -1154,13 +1235,13 @@
1154
1235
  "cid": {
1155
1236
  "type": "string",
1156
1237
  "minLength": 1,
1157
- "description": "IPFS Content Identifier (CID)",
1238
+ "description": "Content Identifier (CID) - content-addressed hash",
1158
1239
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
1159
1240
  },
1160
1241
  "prev_cid": {
1161
1242
  "type": "string",
1162
1243
  "minLength": 1,
1163
- "description": "IPFS Content Identifier (CID)",
1244
+ "description": "Content Identifier (CID) - content-addressed hash",
1164
1245
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
1165
1246
  },
1166
1247
  "ver": {
@@ -1255,13 +1336,13 @@
1255
1336
  "cid": {
1256
1337
  "type": "string",
1257
1338
  "minLength": 1,
1258
- "description": "IPFS Content Identifier (CID)",
1339
+ "description": "Content Identifier (CID) - content-addressed hash",
1259
1340
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
1260
1341
  },
1261
1342
  "prev_cid": {
1262
1343
  "type": "string",
1263
1344
  "minLength": 1,
1264
- "description": "IPFS Content Identifier (CID)",
1345
+ "description": "Content Identifier (CID) - content-addressed hash",
1265
1346
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
1266
1347
  },
1267
1348
  "ver": {
@@ -1436,7 +1517,7 @@
1436
1517
  "cid": {
1437
1518
  "type": "string",
1438
1519
  "minLength": 1,
1439
- "description": "IPFS Content Identifier (CID)",
1520
+ "description": "Content Identifier (CID) - content-addressed hash",
1440
1521
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
1441
1522
  },
1442
1523
  "type": {
@@ -1780,7 +1861,7 @@
1780
1861
  "cid": {
1781
1862
  "type": "string",
1782
1863
  "minLength": 1,
1783
- "description": "IPFS Content Identifier (CID)",
1864
+ "description": "Content Identifier (CID) - content-addressed hash",
1784
1865
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
1785
1866
  },
1786
1867
  "deleted_at": {
@@ -1798,7 +1879,7 @@
1798
1879
  "prev_cid": {
1799
1880
  "type": "string",
1800
1881
  "minLength": 1,
1801
- "description": "IPFS Content Identifier (CID)",
1882
+ "description": "Content Identifier (CID) - content-addressed hash",
1802
1883
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
1803
1884
  }
1804
1885
  },
@@ -2079,6 +2160,136 @@
2079
2160
  "expect_source_tip"
2080
2161
  ]
2081
2162
  },
2163
+ "ConnectResponse": {
2164
+ "type": "object",
2165
+ "properties": {
2166
+ "source": {
2167
+ "allOf": [
2168
+ {
2169
+ "$ref": "#/components/schemas/EntityResponse"
2170
+ },
2171
+ {
2172
+ "description": "Updated source entity with the new connection"
2173
+ }
2174
+ ]
2175
+ }
2176
+ },
2177
+ "required": [
2178
+ "source"
2179
+ ]
2180
+ },
2181
+ "ConnectRequest": {
2182
+ "type": "object",
2183
+ "properties": {
2184
+ "note": {
2185
+ "type": "string",
2186
+ "description": "Optional note describing this change",
2187
+ "example": "Added Chapter 42: The Whiteness of the Whale"
2188
+ },
2189
+ "source_id": {
2190
+ "type": "string",
2191
+ "pattern": "^(?:II[0-9A-HJKMNP-TV-Z]{24}|[FC][0-9A-HJKMNP-TV-Z]{25}|[0-9A-HJKMNP-TV-Z]{26})$",
2192
+ "description": "Source entity ID (the entity you're connecting FROM)",
2193
+ "example": "01JFKY3XQWM0MJVKM8DK3AEXPY"
2194
+ },
2195
+ "target_id": {
2196
+ "type": "string",
2197
+ "pattern": "^(?:II[0-9A-HJKMNP-TV-Z]{24}|[FC][0-9A-HJKMNP-TV-Z]{25}|[0-9A-HJKMNP-TV-Z]{26})$",
2198
+ "description": "Target entity ID (the entity you're connecting TO)",
2199
+ "example": "01JFKY3XQWM0MJVKM8DK3AEXQZ"
2200
+ },
2201
+ "expect_tip": {
2202
+ "type": "string",
2203
+ "minLength": 1,
2204
+ "description": "Expected current tip CID of source entity",
2205
+ "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
2206
+ },
2207
+ "predicate": {
2208
+ "type": "string",
2209
+ "minLength": 1,
2210
+ "maxLength": 50,
2211
+ "pattern": "^[a-z][a-z0-9_]*$",
2212
+ "description": "Relationship predicate. Defaults to \"connects_to\".",
2213
+ "example": "connects_to"
2214
+ },
2215
+ "label": {
2216
+ "type": "string",
2217
+ "maxLength": 200,
2218
+ "description": "Optional display label for this connection",
2219
+ "example": "Related document"
2220
+ },
2221
+ "description": {
2222
+ "type": "string",
2223
+ "maxLength": 2000,
2224
+ "description": "Optional description explaining why this connection exists",
2225
+ "example": "Links to the supporting research paper"
2226
+ }
2227
+ },
2228
+ "required": [
2229
+ "source_id",
2230
+ "target_id",
2231
+ "expect_tip"
2232
+ ]
2233
+ },
2234
+ "DisconnectResponse": {
2235
+ "type": "object",
2236
+ "properties": {
2237
+ "source": {
2238
+ "allOf": [
2239
+ {
2240
+ "$ref": "#/components/schemas/EntityResponse"
2241
+ },
2242
+ {
2243
+ "description": "Updated source entity with the connection removed"
2244
+ }
2245
+ ]
2246
+ }
2247
+ },
2248
+ "required": [
2249
+ "source"
2250
+ ]
2251
+ },
2252
+ "DisconnectRequest": {
2253
+ "type": "object",
2254
+ "properties": {
2255
+ "note": {
2256
+ "type": "string",
2257
+ "description": "Optional note describing this change",
2258
+ "example": "Added Chapter 42: The Whiteness of the Whale"
2259
+ },
2260
+ "source_id": {
2261
+ "type": "string",
2262
+ "pattern": "^(?:II[0-9A-HJKMNP-TV-Z]{24}|[FC][0-9A-HJKMNP-TV-Z]{25}|[0-9A-HJKMNP-TV-Z]{26})$",
2263
+ "description": "Source entity ID",
2264
+ "example": "01JFKY3XQWM0MJVKM8DK3AEXPY"
2265
+ },
2266
+ "target_id": {
2267
+ "type": "string",
2268
+ "pattern": "^(?:II[0-9A-HJKMNP-TV-Z]{24}|[FC][0-9A-HJKMNP-TV-Z]{25}|[0-9A-HJKMNP-TV-Z]{26})$",
2269
+ "description": "Target entity ID (peer of the connection to remove)",
2270
+ "example": "01JFKY3XQWM0MJVKM8DK3AEXQZ"
2271
+ },
2272
+ "expect_tip": {
2273
+ "type": "string",
2274
+ "minLength": 1,
2275
+ "description": "Expected current tip CID of source entity",
2276
+ "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
2277
+ },
2278
+ "predicate": {
2279
+ "type": "string",
2280
+ "minLength": 1,
2281
+ "maxLength": 50,
2282
+ "pattern": "^[a-z][a-z0-9_]*$",
2283
+ "description": "Relationship predicate to remove. Defaults to \"connects_to\".",
2284
+ "example": "connects_to"
2285
+ }
2286
+ },
2287
+ "required": [
2288
+ "source_id",
2289
+ "target_id",
2290
+ "expect_tip"
2291
+ ]
2292
+ },
2082
2293
  "CreateFileResponse": {
2083
2294
  "type": "object",
2084
2295
  "properties": {
@@ -2091,7 +2302,7 @@
2091
2302
  "cid": {
2092
2303
  "type": "string",
2093
2304
  "minLength": 1,
2094
- "description": "IPFS Content Identifier (CID)",
2305
+ "description": "Content Identifier (CID) - content-addressed hash",
2095
2306
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
2096
2307
  },
2097
2308
  "type": {
@@ -2584,7 +2795,7 @@
2584
2795
  "cid": {
2585
2796
  "type": "string",
2586
2797
  "minLength": 1,
2587
- "description": "IPFS Content Identifier (CID)",
2798
+ "description": "Content Identifier (CID) - content-addressed hash",
2588
2799
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
2589
2800
  },
2590
2801
  "type": {
@@ -2985,7 +3196,7 @@
2985
3196
  "cid": {
2986
3197
  "type": "string",
2987
3198
  "minLength": 1,
2988
- "description": "IPFS Content Identifier (CID)",
3199
+ "description": "Content Identifier (CID) - content-addressed hash",
2989
3200
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
2990
3201
  }
2991
3202
  },
@@ -3058,7 +3269,7 @@
3058
3269
  "cid": {
3059
3270
  "type": "string",
3060
3271
  "minLength": 1,
3061
- "description": "IPFS Content Identifier (CID)",
3272
+ "description": "Content Identifier (CID) - content-addressed hash",
3062
3273
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
3063
3274
  }
3064
3275
  },
@@ -3127,7 +3338,7 @@
3127
3338
  "cid": {
3128
3339
  "type": "string",
3129
3340
  "minLength": 1,
3130
- "description": "IPFS Content Identifier (CID)",
3341
+ "description": "Content Identifier (CID) - content-addressed hash",
3131
3342
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
3132
3343
  }
3133
3344
  },
@@ -3336,7 +3547,7 @@
3336
3547
  "cid": {
3337
3548
  "type": "string",
3338
3549
  "minLength": 1,
3339
- "description": "IPFS Content Identifier (CID)",
3550
+ "description": "Content Identifier (CID) - content-addressed hash",
3340
3551
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
3341
3552
  },
3342
3553
  "ts": {
@@ -3439,7 +3650,7 @@
3439
3650
  "cid": {
3440
3651
  "type": "string",
3441
3652
  "minLength": 1,
3442
- "description": "IPFS Content Identifier (CID)",
3653
+ "description": "Content Identifier (CID) - content-addressed hash",
3443
3654
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
3444
3655
  },
3445
3656
  "manifest": {
@@ -4174,6 +4385,9 @@
4174
4385
  "expired": {
4175
4386
  "type": "boolean"
4176
4387
  },
4388
+ "missing_actions": {
4389
+ "type": "boolean"
4390
+ },
4177
4391
  "current_expires_at": {
4178
4392
  "type": "string",
4179
4393
  "format": "date-time"
@@ -4296,7 +4510,7 @@
4296
4510
  "target_cid": {
4297
4511
  "type": "string",
4298
4512
  "minLength": 1,
4299
- "description": "IPFS Content Identifier (CID)",
4513
+ "description": "Content Identifier (CID) - content-addressed hash",
4300
4514
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
4301
4515
  },
4302
4516
  "expires_at": {
@@ -4339,7 +4553,7 @@
4339
4553
  "target_cid": {
4340
4554
  "type": "string",
4341
4555
  "minLength": 1,
4342
- "description": "IPFS Content Identifier (CID)",
4556
+ "description": "Content Identifier (CID) - content-addressed hash",
4343
4557
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
4344
4558
  },
4345
4559
  "expires_at": {
@@ -5157,7 +5371,7 @@
5157
5371
  "cid": {
5158
5372
  "type": "string",
5159
5373
  "minLength": 1,
5160
- "description": "IPFS Content Identifier (CID)",
5374
+ "description": "Content Identifier (CID) - content-addressed hash",
5161
5375
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
5162
5376
  },
5163
5377
  "arweave_tx": {
@@ -5205,7 +5419,7 @@
5205
5419
  "cid": {
5206
5420
  "type": "string",
5207
5421
  "minLength": 1,
5208
- "description": "IPFS Content Identifier (CID)",
5422
+ "description": "Content Identifier (CID) - content-addressed hash",
5209
5423
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
5210
5424
  },
5211
5425
  "attestation_status": {
@@ -5254,7 +5468,7 @@
5254
5468
  "cid": {
5255
5469
  "type": "string",
5256
5470
  "minLength": 1,
5257
- "description": "IPFS Content Identifier (CID)",
5471
+ "description": "Content Identifier (CID) - content-addressed hash",
5258
5472
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
5259
5473
  },
5260
5474
  "op": {
@@ -5786,6 +6000,116 @@
5786
6000
  }
5787
6001
  }
5788
6002
  },
6003
+ "/users/{id}/collections": {
6004
+ "get": {
6005
+ "tags": [
6006
+ "Users"
6007
+ ],
6008
+ "summary": "List collections user has access to",
6009
+ "description": "Returns all collections where the user has a role relationship (owner, editor, viewer, etc.).\n\nQueries GraphDB for collections with relationships pointing to this user where peer_type is 'user'.\nResults include the role predicate so clients know what access the user has to each collection.\n\nSupports filtering by predicate (role name) and pagination.",
6010
+ "x-arke-action": "user:view",
6011
+ "x-arke-auth": "optional",
6012
+ "x-arke-tier": "external",
6013
+ "parameters": [
6014
+ {
6015
+ "schema": {
6016
+ "type": "string",
6017
+ "pattern": "^(?:II[0-9A-HJKMNP-TV-Z]{24}|[FC][0-9A-HJKMNP-TV-Z]{25}|[0-9A-HJKMNP-TV-Z]{26})$",
6018
+ "description": "Entity ID (ULID format)",
6019
+ "example": "01KDETYWYWM0MJVKM8DK3AEXPY"
6020
+ },
6021
+ "required": true,
6022
+ "description": "Entity ID (ULID)",
6023
+ "name": "id",
6024
+ "in": "path"
6025
+ },
6026
+ {
6027
+ "schema": {
6028
+ "type": "string",
6029
+ "description": "Filter by role predicate (e.g., owner, editor)",
6030
+ "example": "owner"
6031
+ },
6032
+ "required": false,
6033
+ "name": "predicate",
6034
+ "in": "query"
6035
+ },
6036
+ {
6037
+ "schema": {
6038
+ "type": "string",
6039
+ "description": "Maximum number of results (default: 100, max: 1000)",
6040
+ "example": "100"
6041
+ },
6042
+ "required": false,
6043
+ "name": "limit",
6044
+ "in": "query"
6045
+ },
6046
+ {
6047
+ "schema": {
6048
+ "type": "string",
6049
+ "description": "Pagination offset",
6050
+ "example": "0"
6051
+ },
6052
+ "required": false,
6053
+ "name": "offset",
6054
+ "in": "query"
6055
+ }
6056
+ ],
6057
+ "responses": {
6058
+ "200": {
6059
+ "description": "List of collections",
6060
+ "content": {
6061
+ "application/json": {
6062
+ "schema": {
6063
+ "$ref": "#/components/schemas/UserCollectionsResponse"
6064
+ }
6065
+ }
6066
+ }
6067
+ },
6068
+ "401": {
6069
+ "description": "Unauthorized - Missing or invalid authentication",
6070
+ "content": {
6071
+ "application/json": {
6072
+ "schema": {
6073
+ "$ref": "#/components/schemas/ErrorResponse"
6074
+ },
6075
+ "example": {
6076
+ "error": "Unauthorized: Missing or invalid authentication token"
6077
+ }
6078
+ }
6079
+ }
6080
+ },
6081
+ "403": {
6082
+ "description": "Forbidden - Insufficient permissions",
6083
+ "content": {
6084
+ "application/json": {
6085
+ "schema": {
6086
+ "$ref": "#/components/schemas/ErrorResponse"
6087
+ },
6088
+ "example": {
6089
+ "error": "Forbidden: You do not have permission to perform this action"
6090
+ }
6091
+ }
6092
+ }
6093
+ },
6094
+ "404": {
6095
+ "description": "Not Found - Resource does not exist",
6096
+ "content": {
6097
+ "application/json": {
6098
+ "schema": {
6099
+ "$ref": "#/components/schemas/ErrorResponse"
6100
+ },
6101
+ "example": {
6102
+ "error": "Entity not found"
6103
+ }
6104
+ }
6105
+ }
6106
+ },
6107
+ "503": {
6108
+ "description": "GraphDB service unavailable"
6109
+ }
6110
+ }
6111
+ }
6112
+ },
5789
6113
  "/collections": {
5790
6114
  "post": {
5791
6115
  "tags": [
@@ -7816,6 +8140,242 @@
7816
8140
  }
7817
8141
  }
7818
8142
  },
8143
+ "/connect": {
8144
+ "post": {
8145
+ "tags": [
8146
+ "Connect"
8147
+ ],
8148
+ "summary": "Connect two entities",
8149
+ "description": "Creates a unidirectional relationship from source to target entity.\n\nThis is a shorthand for adding a relationship with sensible defaults:\n- Default predicate: `connects_to` (customizable)\n- Optional label and description stored in relationship properties\n- Only requires `entity:update` permission on source entity\n\nUse this for simple entity linking. For bidirectional relationships or\nadvanced options, use the `/relationships` endpoint.",
8150
+ "x-arke-action": "entity:update",
8151
+ "x-arke-auth": "required",
8152
+ "x-arke-tier": "standard",
8153
+ "security": [
8154
+ {
8155
+ "bearerAuth": []
8156
+ }
8157
+ ],
8158
+ "requestBody": {
8159
+ "content": {
8160
+ "application/json": {
8161
+ "schema": {
8162
+ "$ref": "#/components/schemas/ConnectRequest"
8163
+ }
8164
+ }
8165
+ }
8166
+ },
8167
+ "responses": {
8168
+ "201": {
8169
+ "description": "Connection created",
8170
+ "content": {
8171
+ "application/json": {
8172
+ "schema": {
8173
+ "$ref": "#/components/schemas/ConnectResponse"
8174
+ }
8175
+ }
8176
+ }
8177
+ },
8178
+ "400": {
8179
+ "description": "Bad Request - Invalid input",
8180
+ "content": {
8181
+ "application/json": {
8182
+ "schema": {
8183
+ "$ref": "#/components/schemas/ValidationErrorResponse"
8184
+ },
8185
+ "example": {
8186
+ "error": "Validation failed",
8187
+ "details": {
8188
+ "issues": [
8189
+ {
8190
+ "path": [
8191
+ "properties",
8192
+ "label"
8193
+ ],
8194
+ "message": "Required"
8195
+ }
8196
+ ]
8197
+ }
8198
+ }
8199
+ }
8200
+ }
8201
+ },
8202
+ "401": {
8203
+ "description": "Unauthorized - Missing or invalid authentication",
8204
+ "content": {
8205
+ "application/json": {
8206
+ "schema": {
8207
+ "$ref": "#/components/schemas/ErrorResponse"
8208
+ },
8209
+ "example": {
8210
+ "error": "Unauthorized: Missing or invalid authentication token"
8211
+ }
8212
+ }
8213
+ }
8214
+ },
8215
+ "403": {
8216
+ "description": "Forbidden - Insufficient permissions",
8217
+ "content": {
8218
+ "application/json": {
8219
+ "schema": {
8220
+ "$ref": "#/components/schemas/ErrorResponse"
8221
+ },
8222
+ "example": {
8223
+ "error": "Forbidden: You do not have permission to perform this action"
8224
+ }
8225
+ }
8226
+ }
8227
+ },
8228
+ "404": {
8229
+ "description": "Not Found - Resource does not exist",
8230
+ "content": {
8231
+ "application/json": {
8232
+ "schema": {
8233
+ "$ref": "#/components/schemas/ErrorResponse"
8234
+ },
8235
+ "example": {
8236
+ "error": "Entity not found"
8237
+ }
8238
+ }
8239
+ }
8240
+ },
8241
+ "409": {
8242
+ "description": "Conflict - CAS validation failed (entity was modified)",
8243
+ "content": {
8244
+ "application/json": {
8245
+ "schema": {
8246
+ "$ref": "#/components/schemas/CASErrorResponse"
8247
+ },
8248
+ "example": {
8249
+ "error": "Conflict: entity was modified",
8250
+ "details": {
8251
+ "expected": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy",
8252
+ "actual": "bafyreinewabc123456789defghijklmnopqrstuvwxyz"
8253
+ }
8254
+ }
8255
+ }
8256
+ }
8257
+ }
8258
+ }
8259
+ }
8260
+ },
8261
+ "/connect/disconnect": {
8262
+ "post": {
8263
+ "tags": [
8264
+ "Connect"
8265
+ ],
8266
+ "summary": "Disconnect two entities",
8267
+ "description": "Removes a unidirectional relationship from source to target entity.\n\nThis is a shorthand for removing a relationship:\n- Default predicate: `connects_to` (customizable)\n- Only requires `entity:update` permission on source entity\n\nFor bidirectional removal, use the `/relationships` endpoint.",
8268
+ "x-arke-action": "entity:update",
8269
+ "x-arke-auth": "required",
8270
+ "x-arke-tier": "standard",
8271
+ "security": [
8272
+ {
8273
+ "bearerAuth": []
8274
+ }
8275
+ ],
8276
+ "requestBody": {
8277
+ "content": {
8278
+ "application/json": {
8279
+ "schema": {
8280
+ "$ref": "#/components/schemas/DisconnectRequest"
8281
+ }
8282
+ }
8283
+ }
8284
+ },
8285
+ "responses": {
8286
+ "200": {
8287
+ "description": "Connection removed",
8288
+ "content": {
8289
+ "application/json": {
8290
+ "schema": {
8291
+ "$ref": "#/components/schemas/DisconnectResponse"
8292
+ }
8293
+ }
8294
+ }
8295
+ },
8296
+ "400": {
8297
+ "description": "Bad Request - Invalid input",
8298
+ "content": {
8299
+ "application/json": {
8300
+ "schema": {
8301
+ "$ref": "#/components/schemas/ValidationErrorResponse"
8302
+ },
8303
+ "example": {
8304
+ "error": "Validation failed",
8305
+ "details": {
8306
+ "issues": [
8307
+ {
8308
+ "path": [
8309
+ "properties",
8310
+ "label"
8311
+ ],
8312
+ "message": "Required"
8313
+ }
8314
+ ]
8315
+ }
8316
+ }
8317
+ }
8318
+ }
8319
+ },
8320
+ "401": {
8321
+ "description": "Unauthorized - Missing or invalid authentication",
8322
+ "content": {
8323
+ "application/json": {
8324
+ "schema": {
8325
+ "$ref": "#/components/schemas/ErrorResponse"
8326
+ },
8327
+ "example": {
8328
+ "error": "Unauthorized: Missing or invalid authentication token"
8329
+ }
8330
+ }
8331
+ }
8332
+ },
8333
+ "403": {
8334
+ "description": "Forbidden - Insufficient permissions",
8335
+ "content": {
8336
+ "application/json": {
8337
+ "schema": {
8338
+ "$ref": "#/components/schemas/ErrorResponse"
8339
+ },
8340
+ "example": {
8341
+ "error": "Forbidden: You do not have permission to perform this action"
8342
+ }
8343
+ }
8344
+ }
8345
+ },
8346
+ "404": {
8347
+ "description": "Not Found - Resource does not exist",
8348
+ "content": {
8349
+ "application/json": {
8350
+ "schema": {
8351
+ "$ref": "#/components/schemas/ErrorResponse"
8352
+ },
8353
+ "example": {
8354
+ "error": "Entity not found"
8355
+ }
8356
+ }
8357
+ }
8358
+ },
8359
+ "409": {
8360
+ "description": "Conflict - CAS validation failed (entity was modified)",
8361
+ "content": {
8362
+ "application/json": {
8363
+ "schema": {
8364
+ "$ref": "#/components/schemas/CASErrorResponse"
8365
+ },
8366
+ "example": {
8367
+ "error": "Conflict: entity was modified",
8368
+ "details": {
8369
+ "expected": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy",
8370
+ "actual": "bafyreinewabc123456789defghijklmnopqrstuvwxyz"
8371
+ }
8372
+ }
8373
+ }
8374
+ }
8375
+ }
8376
+ }
8377
+ }
8378
+ },
7819
8379
  "/files": {
7820
8380
  "post": {
7821
8381
  "tags": [
@@ -9462,7 +10022,7 @@
9462
10022
  "schema": {
9463
10023
  "type": "string",
9464
10024
  "minLength": 1,
9465
- "description": "IPFS Content Identifier (CID)",
10025
+ "description": "Content Identifier (CID) - content-addressed hash",
9466
10026
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
9467
10027
  },
9468
10028
  "required": false,
@@ -9550,7 +10110,7 @@
9550
10110
  "schema": {
9551
10111
  "type": "string",
9552
10112
  "minLength": 1,
9553
- "description": "IPFS Content Identifier (CID)",
10113
+ "description": "Content Identifier (CID) - content-addressed hash",
9554
10114
  "example": "bafyreibug443cnd4endcwinwttw3c3dzmcl2ikht64xzn5qg56bix3usfy"
9555
10115
  },
9556
10116
  "required": true,