|
1219 | 1219 | } |
1220 | 1220 | ] |
1221 | 1221 | }, |
| 1222 | + "/groups/{groupId}/artifacts/{artifactId}/versions/{versionExpression}/references/graph": { |
| 1223 | + "summary": "Get a graph representation of artifact references.", |
| 1224 | + "get": { |
| 1225 | + "tags": [ |
| 1226 | + "Versions" |
| 1227 | + ], |
| 1228 | + "responses": { |
| 1229 | + "200": { |
| 1230 | + "content": { |
| 1231 | + "application/json": { |
| 1232 | + "schema": { |
| 1233 | + "$ref": "#/components/schemas/ReferenceGraph" |
| 1234 | + } |
| 1235 | + } |
| 1236 | + }, |
| 1237 | + "description": "A graph representation of all artifact references." |
| 1238 | + }, |
| 1239 | + "400": { |
| 1240 | + "$ref": "#/components/responses/BadRequest" |
| 1241 | + }, |
| 1242 | + "404": { |
| 1243 | + "$ref": "#/components/responses/NotFound" |
| 1244 | + }, |
| 1245 | + "500": { |
| 1246 | + "$ref": "#/components/responses/ServerError" |
| 1247 | + } |
| 1248 | + }, |
| 1249 | + "operationId": "getArtifactVersionReferencesGraph", |
| 1250 | + "summary": "Get artifact version references as a graph", |
| 1251 | + "description": "Retrieves a graph representation of all references for a single version of an artifact. The graph includes nodes representing artifacts, edges representing references between them, and metadata about the graph structure including cycle detection.\n\nThis operation can fail for the following reasons:\n\n* No artifact with this `artifactId` exists (HTTP error `404`)\n* No version with this `version` exists (HTTP error `404`)\n* A server error occurred (HTTP error `500`)\n" |
| 1252 | + }, |
| 1253 | + "parameters": [ |
| 1254 | + { |
| 1255 | + "name": "groupId", |
| 1256 | + "description": "The artifact group ID. Must be a string provided by the client, representing the name of the grouping of artifacts. Must follow the \".{1,512}\" pattern.", |
| 1257 | + "schema": { |
| 1258 | + "$ref": "#/components/schemas/GroupId" |
| 1259 | + }, |
| 1260 | + "in": "path", |
| 1261 | + "required": true |
| 1262 | + }, |
| 1263 | + { |
| 1264 | + "name": "artifactId", |
| 1265 | + "description": "The artifact ID. Can be a string (client-provided) or UUID (server-generated), representing the unique artifact identifier. Must follow the \".{1,512}\" pattern.", |
| 1266 | + "schema": { |
| 1267 | + "$ref": "#/components/schemas/ArtifactId" |
| 1268 | + }, |
| 1269 | + "in": "path", |
| 1270 | + "required": true |
| 1271 | + }, |
| 1272 | + { |
| 1273 | + "name": "versionExpression", |
| 1274 | + "description": "An expression resolvable to a specific version ID within the given group and artifact.", |
| 1275 | + "schema": { |
| 1276 | + "type": "string" |
| 1277 | + }, |
| 1278 | + "in": "path", |
| 1279 | + "required": true |
| 1280 | + }, |
| 1281 | + { |
| 1282 | + "name": "direction", |
| 1283 | + "description": "The direction of references to include in the graph. Can be OUTBOUND (artifacts this version references), INBOUND (artifacts that reference this version), or BOTH. Defaults to OUTBOUND.", |
| 1284 | + "schema": { |
| 1285 | + "$ref": "#/components/schemas/ReferenceGraphDirection" |
| 1286 | + }, |
| 1287 | + "in": "query", |
| 1288 | + "required": false |
| 1289 | + }, |
| 1290 | + { |
| 1291 | + "name": "depth", |
| 1292 | + "description": "The maximum depth of the reference graph to traverse. Can be 1, 2, 3, or 0 for unlimited. Defaults to 3.", |
| 1293 | + "schema": { |
| 1294 | + "type": "integer", |
| 1295 | + "minimum": 0, |
| 1296 | + "maximum": 10, |
| 1297 | + "default": 3 |
| 1298 | + }, |
| 1299 | + "in": "query", |
| 1300 | + "required": false |
| 1301 | + } |
| 1302 | + ] |
| 1303 | + }, |
1222 | 1304 | "/admin/config/properties": { |
1223 | 1305 | "summary": "Manage configuration properties.", |
1224 | 1306 | "get": { |
|
5272 | 5354 | "example": { |
5273 | 5355 | "state": "ENABLED" |
5274 | 5356 | } |
| 5357 | + }, |
| 5358 | + "ReferenceGraphDirection": { |
| 5359 | + "description": "The direction of references to include in the graph.", |
| 5360 | + "enum": [ |
| 5361 | + "OUTBOUND", |
| 5362 | + "INBOUND", |
| 5363 | + "BOTH" |
| 5364 | + ], |
| 5365 | + "type": "string", |
| 5366 | + "example": "\"OUTBOUND\"", |
| 5367 | + "x-codegen-package": "io.apicurio.registry.types" |
| 5368 | + }, |
| 5369 | + "ReferenceGraphNode": { |
| 5370 | + "title": "Root Type for ReferenceGraphNode", |
| 5371 | + "description": "A node in the reference graph representing an artifact version.", |
| 5372 | + "required": [ |
| 5373 | + "id", |
| 5374 | + "groupId", |
| 5375 | + "artifactId", |
| 5376 | + "version" |
| 5377 | + ], |
| 5378 | + "type": "object", |
| 5379 | + "properties": { |
| 5380 | + "id": { |
| 5381 | + "description": "A unique identifier for this node within the graph.", |
| 5382 | + "type": "string" |
| 5383 | + }, |
| 5384 | + "groupId": { |
| 5385 | + "description": "The group ID of the artifact.", |
| 5386 | + "type": "string" |
| 5387 | + }, |
| 5388 | + "artifactId": { |
| 5389 | + "description": "The artifact ID.", |
| 5390 | + "type": "string" |
| 5391 | + }, |
| 5392 | + "version": { |
| 5393 | + "description": "The version of the artifact.", |
| 5394 | + "type": "string" |
| 5395 | + }, |
| 5396 | + "artifactType": { |
| 5397 | + "description": "The type of the artifact.", |
| 5398 | + "type": "string" |
| 5399 | + }, |
| 5400 | + "name": { |
| 5401 | + "description": "The name of the artifact version.", |
| 5402 | + "type": "string" |
| 5403 | + }, |
| 5404 | + "isRoot": { |
| 5405 | + "description": "Whether this node is the root node of the graph.", |
| 5406 | + "type": "boolean" |
| 5407 | + }, |
| 5408 | + "isCycleNode": { |
| 5409 | + "description": "Whether this node is part of a circular reference.", |
| 5410 | + "type": "boolean" |
| 5411 | + } |
| 5412 | + }, |
| 5413 | + "example": { |
| 5414 | + "id": "node-1", |
| 5415 | + "groupId": "mygroup", |
| 5416 | + "artifactId": "my-artifact", |
| 5417 | + "version": "1.0", |
| 5418 | + "artifactType": "PROTOBUF", |
| 5419 | + "name": "My Artifact", |
| 5420 | + "isRoot": false, |
| 5421 | + "isCycleNode": false |
| 5422 | + } |
| 5423 | + }, |
| 5424 | + "ReferenceGraphEdge": { |
| 5425 | + "title": "Root Type for ReferenceGraphEdge", |
| 5426 | + "description": "An edge in the reference graph representing a reference from one artifact to another.", |
| 5427 | + "required": [ |
| 5428 | + "sourceNodeId", |
| 5429 | + "targetNodeId" |
| 5430 | + ], |
| 5431 | + "type": "object", |
| 5432 | + "properties": { |
| 5433 | + "sourceNodeId": { |
| 5434 | + "description": "The ID of the source node (the artifact that has the reference).", |
| 5435 | + "type": "string" |
| 5436 | + }, |
| 5437 | + "targetNodeId": { |
| 5438 | + "description": "The ID of the target node (the artifact being referenced).", |
| 5439 | + "type": "string" |
| 5440 | + }, |
| 5441 | + "name": { |
| 5442 | + "description": "The name of the reference as defined in the source artifact.", |
| 5443 | + "type": "string" |
| 5444 | + } |
| 5445 | + }, |
| 5446 | + "example": { |
| 5447 | + "sourceNodeId": "node-1", |
| 5448 | + "targetNodeId": "node-2", |
| 5449 | + "name": "sample.proto" |
| 5450 | + } |
| 5451 | + }, |
| 5452 | + "ReferenceGraphMetadata": { |
| 5453 | + "title": "Root Type for ReferenceGraphMetadata", |
| 5454 | + "description": "Metadata about the reference graph.", |
| 5455 | + "type": "object", |
| 5456 | + "properties": { |
| 5457 | + "totalNodes": { |
| 5458 | + "description": "The total number of nodes in the graph.", |
| 5459 | + "type": "integer" |
| 5460 | + }, |
| 5461 | + "totalEdges": { |
| 5462 | + "description": "The total number of edges in the graph.", |
| 5463 | + "type": "integer" |
| 5464 | + }, |
| 5465 | + "maxDepth": { |
| 5466 | + "description": "The maximum depth reached in the graph.", |
| 5467 | + "type": "integer" |
| 5468 | + }, |
| 5469 | + "hasCycles": { |
| 5470 | + "description": "Whether the graph contains circular references.", |
| 5471 | + "type": "boolean" |
| 5472 | + } |
| 5473 | + }, |
| 5474 | + "example": { |
| 5475 | + "totalNodes": 5, |
| 5476 | + "totalEdges": 4, |
| 5477 | + "maxDepth": 3, |
| 5478 | + "hasCycles": false |
| 5479 | + } |
| 5480 | + }, |
| 5481 | + "ReferenceGraph": { |
| 5482 | + "title": "Root Type for ReferenceGraph", |
| 5483 | + "description": "A graph representation of artifact references.", |
| 5484 | + "required": [ |
| 5485 | + "root", |
| 5486 | + "nodes", |
| 5487 | + "edges", |
| 5488 | + "metadata" |
| 5489 | + ], |
| 5490 | + "type": "object", |
| 5491 | + "properties": { |
| 5492 | + "root": { |
| 5493 | + "description": "The root node of the graph (the artifact for which references were requested).", |
| 5494 | + "$ref": "#/components/schemas/ReferenceGraphNode" |
| 5495 | + }, |
| 5496 | + "nodes": { |
| 5497 | + "description": "All nodes in the graph, including the root.", |
| 5498 | + "type": "array", |
| 5499 | + "items": { |
| 5500 | + "$ref": "#/components/schemas/ReferenceGraphNode" |
| 5501 | + } |
| 5502 | + }, |
| 5503 | + "edges": { |
| 5504 | + "description": "All edges (references) in the graph.", |
| 5505 | + "type": "array", |
| 5506 | + "items": { |
| 5507 | + "$ref": "#/components/schemas/ReferenceGraphEdge" |
| 5508 | + } |
| 5509 | + }, |
| 5510 | + "metadata": { |
| 5511 | + "description": "Metadata about the graph structure.", |
| 5512 | + "$ref": "#/components/schemas/ReferenceGraphMetadata" |
| 5513 | + } |
| 5514 | + }, |
| 5515 | + "example": { |
| 5516 | + "root": { |
| 5517 | + "id": "root", |
| 5518 | + "groupId": "mygroup", |
| 5519 | + "artifactId": "my-artifact", |
| 5520 | + "version": "1.0", |
| 5521 | + "isRoot": true |
| 5522 | + }, |
| 5523 | + "nodes": [ |
| 5524 | + { |
| 5525 | + "id": "root", |
| 5526 | + "groupId": "mygroup", |
| 5527 | + "artifactId": "my-artifact", |
| 5528 | + "version": "1.0", |
| 5529 | + "isRoot": true |
| 5530 | + }, |
| 5531 | + { |
| 5532 | + "id": "node-1", |
| 5533 | + "groupId": "mygroup", |
| 5534 | + "artifactId": "referenced-artifact", |
| 5535 | + "version": "2.0", |
| 5536 | + "isRoot": false |
| 5537 | + } |
| 5538 | + ], |
| 5539 | + "edges": [ |
| 5540 | + { |
| 5541 | + "sourceNodeId": "root", |
| 5542 | + "targetNodeId": "node-1", |
| 5543 | + "name": "common.proto" |
| 5544 | + } |
| 5545 | + ], |
| 5546 | + "metadata": { |
| 5547 | + "totalNodes": 2, |
| 5548 | + "totalEdges": 1, |
| 5549 | + "maxDepth": 1, |
| 5550 | + "hasCycles": false |
| 5551 | + } |
| 5552 | + } |
5275 | 5553 | } |
5276 | 5554 | }, |
5277 | 5555 | "responses": { |
|
0 commit comments