diff --git a/doc/tea_consumer_flow.excalidraw b/doc/tea_consumer_flow.excalidraw new file mode 100644 index 0000000..221943a --- /dev/null +++ b/doc/tea_consumer_flow.excalidraw @@ -0,0 +1,1092 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "version": 2, + "versionNonce": 623532812, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 313667311, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "text", + "id": "t_seq", + "x": 300, + "y": 850, + "text": "TEA Consumer & Discovery Flow", + "fontSize": 28, + "strokeColor": "#1e1e1e", + "width": 446.6, + "height": 35, + "baseline": 31, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top" + }, + { + "version": 2, + "versionNonce": 288208189, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 508448315, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "uHead2_text", + "type": "text" + } + ], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "rectangle", + "id": "uHead2", + "x": 50, + "y": 950, + "width": 120, + "height": 40, + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "roundness": { + "type": 3 + }, + "strokeColor": "#4a9eed", + "strokeWidth": 2 + }, + { + "type": "text", + "id": "uHead2_text", + "x": 66, + "y": 960, + "width": 88, + "height": 20, + "text": "TEA Client", + "fontSize": 16, + "fontFamily": 1, + "containerId": "uHead2", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 709554373, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 442489299, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "baseline": 16 + }, + { + "version": 2, + "versionNonce": 166791788, + "isDeleted": false, + "strokeStyle": "dashed", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 326732043, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "arrow", + "id": "uLine2", + "x": 110, + "y": 990, + "width": 0, + "height": 550, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 550 + ] + ], + "strokeColor": "#b0b0b0", + "strokeWidth": 1, + "endArrowhead": "arrow", + "startArrowhead": null + }, + { + "version": 2, + "versionNonce": 442817095, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 45220990, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "ellipse", + "id": "uh2", + "x": 100, + "y": 900, + "width": 20, + "height": 20, + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeColor": "#4a9eed", + "strokeWidth": 2 + }, + { + "version": 2, + "versionNonce": 479732483, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 329452988, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "rectangle", + "id": "ub2", + "x": 100, + "y": 922, + "width": 20, + "height": 20, + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "roundness": { + "type": 3 + }, + "strokeColor": "#4a9eed", + "strokeWidth": 2 + }, + { + "version": 2, + "versionNonce": 367400102, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 499749119, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "dHead_text", + "type": "text" + } + ], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "rectangle", + "id": "dHead", + "x": 300, + "y": 950, + "width": 160, + "height": 40, + "backgroundColor": "#fff3bf", + "fillStyle": "solid", + "roundness": { + "type": 3 + }, + "strokeColor": "#f59e0b", + "strokeWidth": 2 + }, + { + "type": "text", + "id": "dHead_text", + "x": 291.45, + "y": 961.25, + "width": 177.10000000000002, + "height": 17.5, + "text": "Discovery (.well-known)", + "fontSize": 14, + "fontFamily": 1, + "containerId": "dHead", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 836560960, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 268053522, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "baseline": 13.5 + }, + { + "version": 2, + "versionNonce": 165355887, + "isDeleted": false, + "strokeStyle": "dashed", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 225359599, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "arrow", + "id": "dLine", + "x": 380, + "y": 990, + "width": 0, + "height": 550, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 550 + ] + ], + "strokeColor": "#b0b0b0", + "strokeWidth": 1, + "endArrowhead": "arrow", + "startArrowhead": null + }, + { + "version": 2, + "versionNonce": 434646783, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 963980987, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "prHead_text", + "type": "text" + } + ], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "rectangle", + "id": "prHead", + "x": 550, + "y": 950, + "width": 160, + "height": 40, + "backgroundColor": "#b2f2bb", + "fillStyle": "solid", + "roundness": { + "type": 3 + }, + "strokeColor": "#22c55e", + "strokeWidth": 2 + }, + { + "type": "text", + "id": "prHead_text", + "x": 556.85, + "y": 961.25, + "width": 146.3, + "height": 17.5, + "text": "TEA Product Release", + "fontSize": 14, + "fontFamily": 1, + "containerId": "prHead", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 532673844, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 416354069, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "baseline": 13.5 + }, + { + "version": 2, + "versionNonce": 546612311, + "isDeleted": false, + "strokeStyle": "dashed", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 12876854, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "arrow", + "id": "prLine", + "x": 630, + "y": 990, + "width": 0, + "height": 550, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 550 + ] + ], + "strokeColor": "#b0b0b0", + "strokeWidth": 1, + "endArrowhead": "arrow", + "startArrowhead": null + }, + { + "version": 2, + "versionNonce": 986414963, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 60246222, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "crHead_text", + "type": "text" + } + ], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "rectangle", + "id": "crHead", + "x": 800, + "y": 950, + "width": 180, + "height": 40, + "backgroundColor": "#d0bfff", + "fillStyle": "solid", + "roundness": { + "type": 3 + }, + "strokeColor": "#8b5cf6", + "strokeWidth": 2 + }, + { + "type": "text", + "id": "crHead_text", + "x": 809.15, + "y": 961.25, + "width": 161.70000000000002, + "height": 17.5, + "text": "TEA Component Release", + "fontSize": 14, + "fontFamily": 1, + "containerId": "crHead", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 678700252, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 159387056, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "baseline": 13.5 + }, + { + "version": 2, + "versionNonce": 628557341, + "isDeleted": false, + "strokeStyle": "dashed", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 604831108, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "arrow", + "id": "crLine", + "x": 890, + "y": 990, + "width": 0, + "height": 550, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 550 + ] + ], + "strokeColor": "#b0b0b0", + "strokeWidth": 1, + "endArrowhead": "arrow", + "startArrowhead": null + }, + { + "version": 2, + "versionNonce": 30546574, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 135177463, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "seq1_text", + "type": "text" + } + ], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "arrow", + "id": "seq1", + "x": 110, + "y": 1020, + "width": 270, + "height": 0, + "points": [ + [ + 0, + 0 + ], + [ + 270, + 0 + ] + ], + "strokeColor": "#f59e0b", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startArrowhead": null + }, + { + "type": "text", + "id": "seq1_text", + "x": 156.45, + "y": 1011.25, + "width": 177.10000000000002, + "height": 17.5, + "text": "1. GET /.well-known/tea", + "fontSize": 14, + "fontFamily": 1, + "containerId": "seq1", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 349482594, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 789890610, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "baseline": 13.5 + }, + { + "version": 2, + "versionNonce": 847461378, + "isDeleted": false, + "strokeStyle": "dashed", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 173622756, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "seq2_text", + "type": "text" + } + ], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "arrow", + "id": "seq2", + "x": 380, + "y": 1060, + "width": -270, + "height": 0, + "points": [ + [ + 0, + 0 + ], + [ + -270, + 0 + ] + ], + "strokeColor": "#f59e0b", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startArrowhead": null + }, + { + "type": "text", + "id": "seq2_text", + "x": 152.6, + "y": 1051.25, + "width": 184.8, + "height": 17.5, + "text": "2. Returns API endpoints", + "fontSize": 14, + "fontFamily": 1, + "containerId": "seq2", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 110092748, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 31118657, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "baseline": 13.5 + }, + { + "version": 2, + "versionNonce": 255758566, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 900025800, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "seq3_text", + "type": "text" + } + ], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "arrow", + "id": "seq3", + "x": 110, + "y": 1110, + "width": 270, + "height": 0, + "points": [ + [ + 0, + 0 + ], + [ + 270, + 0 + ] + ], + "strokeColor": "#f59e0b", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startArrowhead": null + }, + { + "type": "text", + "id": "seq3_text", + "x": 152.6, + "y": 1101.25, + "width": 184.8, + "height": 17.5, + "text": "3. Call Discovery w/ TEI", + "fontSize": 14, + "fontFamily": 1, + "containerId": "seq3", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 329326862, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 811770140, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "baseline": 13.5 + }, + { + "version": 2, + "versionNonce": 26311709, + "isDeleted": false, + "strokeStyle": "dashed", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 127687205, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "seq4_text", + "type": "text" + } + ], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "arrow", + "id": "seq4", + "x": 380, + "y": 1150, + "width": -270, + "height": 0, + "points": [ + [ + 0, + 0 + ], + [ + -270, + 0 + ] + ], + "strokeColor": "#f59e0b", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startArrowhead": null + }, + { + "type": "text", + "id": "seq4_text", + "x": 137.2, + "y": 1141.25, + "width": 215.60000000000002, + "height": 17.5, + "text": "4. Return Product Release(s)", + "fontSize": 14, + "fontFamily": 1, + "containerId": "seq4", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 158861047, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 536938846, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "baseline": 13.5 + }, + { + "version": 2, + "versionNonce": 625818849, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 962926849, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "seq5_text", + "type": "text" + } + ], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "arrow", + "id": "seq5", + "x": 110, + "y": 1200, + "width": 520, + "height": 0, + "points": [ + [ + 0, + 0 + ], + [ + 520, + 0 + ] + ], + "strokeColor": "#22c55e", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startArrowhead": null + }, + { + "type": "text", + "id": "seq5_text", + "x": 281.45, + "y": 1191.25, + "width": 177.10000000000002, + "height": 17.5, + "text": "5. Resolve Prod Release", + "fontSize": 14, + "fontFamily": 1, + "containerId": "seq5", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 437731164, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 921428612, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "baseline": 13.5 + }, + { + "version": 2, + "versionNonce": 870790990, + "isDeleted": false, + "strokeStyle": "dashed", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 93929788, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "seq6_text", + "type": "text" + } + ], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "arrow", + "id": "seq6", + "x": 630, + "y": 1240, + "width": -520, + "height": 0, + "points": [ + [ + 0, + 0 + ], + [ + -520, + 0 + ] + ], + "strokeColor": "#22c55e", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startArrowhead": null + }, + { + "type": "text", + "id": "seq6_text", + "x": 262.2, + "y": 1231.25, + "width": 215.60000000000002, + "height": 17.5, + "text": "6. Return Component Releases", + "fontSize": 14, + "fontFamily": 1, + "containerId": "seq6", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 613806409, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 71366738, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "baseline": 13.5 + }, + { + "version": 2, + "versionNonce": 63362911, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 126503006, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "seq7_text", + "type": "text" + } + ], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "arrow", + "id": "seq7", + "x": 110, + "y": 1290, + "width": 780, + "height": 0, + "points": [ + [ + 0, + 0 + ], + [ + 780, + 0 + ] + ], + "strokeColor": "#8b5cf6", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startArrowhead": null + }, + { + "type": "text", + "id": "seq7_text", + "x": 311.35, + "y": 1281.25, + "width": 377.3, + "height": 17.5, + "text": "7. For each Component Release, obtain collections", + "fontSize": 14, + "fontFamily": 1, + "containerId": "seq7", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 338008809, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 781177126, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "baseline": 13.5 + }, + { + "version": 2, + "versionNonce": 108508532, + "isDeleted": false, + "strokeStyle": "dashed", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 215234389, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "seq8_text", + "type": "text" + } + ], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "arrow", + "id": "seq8", + "x": 890, + "y": 1330, + "width": -780, + "height": 0, + "points": [ + [ + 0, + 0 + ], + [ + -780, + 0 + ] + ], + "strokeColor": "#8b5cf6", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startArrowhead": null + }, + { + "type": "text", + "id": "seq8_text", + "x": 411.45, + "y": 1321.25, + "width": 177.10000000000002, + "height": 17.5, + "text": "8. Return TEA Artifacts", + "fontSize": 14, + "fontFamily": 1, + "containerId": "seq8", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 78058391, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 889122579, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "baseline": 13.5 + } + ], + "appState": { + "viewBackgroundColor": "#ffffff", + "currentItemStrokeColor": "#1e1e1e", + "currentItemBackgroundColor": "transparent", + "currentItemFillStyle": "solid", + "currentItemStrokeWidth": 2, + "currentItemStrokeStyle": "solid", + "currentItemRoughness": 1, + "currentItemOpacity": 100, + "currentItemFontFamily": 1, + "currentItemFontSize": 20, + "currentItemTextAlign": "left", + "currentItemStrokeSharpness": "round" + } +} \ No newline at end of file diff --git a/doc/tea_data_model.excalidraw b/doc/tea_data_model.excalidraw new file mode 100644 index 0000000..bb60eae --- /dev/null +++ b/doc/tea_data_model.excalidraw @@ -0,0 +1,1015 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "version": 2, + "versionNonce": 167281445, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 866940117, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797567, + "link": null, + "locked": false, + "type": "text", + "id": "title", + "x": 300, + "y": 20, + "text": "Transparency Exchange API (TEA) Data Model", + "fontSize": 28, + "strokeColor": "#1e1e1e", + "width": 646.8000000000001, + "height": 35, + "baseline": 31, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top" + }, + { + "version": 2, + "versionNonce": 290557472, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 785009667, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "tei_text", + "type": "text" + } + ], + "updated": 1771600797567, + "link": null, + "locked": false, + "type": "rectangle", + "id": "tei", + "x": 50, + "y": 200, + "width": 220, + "height": 80, + "backgroundColor": "#fff3bf", + "fillStyle": "solid", + "roundness": { + "type": 3 + }, + "strokeColor": "#f59e0b" + }, + { + "type": "text", + "id": "tei_text", + "x": 76.39999999999999, + "y": 220, + "width": 167.20000000000002, + "height": 40, + "text": "Discovery (TEI)\nResolves to Release", + "fontSize": 16, + "fontFamily": 1, + "containerId": "tei", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 238103836, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 276140534, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797567, + "link": null, + "locked": false, + "baseline": 36 + }, + { + "version": 2, + "versionNonce": 345925228, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 178738737, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "product_text", + "type": "text" + } + ], + "updated": 1771600797567, + "link": null, + "locked": false, + "type": "rectangle", + "id": "product", + "x": 400, + "y": 100, + "width": 200, + "height": 80, + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "roundness": { + "type": 3 + }, + "strokeColor": "#4a9eed" + }, + { + "type": "text", + "id": "product_text", + "x": 438.4, + "y": 120, + "width": 123.20000000000002, + "height": 40, + "text": "TEA Product\n(Product Line)", + "fontSize": 16, + "fontFamily": 1, + "containerId": "product", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 318599718, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 576954118, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797567, + "link": null, + "locked": false, + "baseline": 36 + }, + { + "version": 2, + "versionNonce": 717272336, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 12733120, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "prod_rel_text", + "type": "text" + } + ], + "updated": 1771600797567, + "link": null, + "locked": false, + "type": "rectangle", + "id": "prod_rel", + "x": 400, + "y": 300, + "width": 200, + "height": 80, + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "roundness": { + "type": 3 + }, + "strokeColor": "#4a9eed" + }, + { + "type": "text", + "id": "prod_rel_text", + "x": 416.4, + "y": 320, + "width": 167.20000000000002, + "height": 40, + "text": "TEA Product Release\n(Primary Entry)", + "fontSize": 16, + "fontFamily": 1, + "containerId": "prod_rel", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 559444216, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 645638008, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797567, + "link": null, + "locked": false, + "baseline": 36 + }, + { + "version": 2, + "versionNonce": 235904703, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 734388130, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "a_tei_strel_text", + "type": "text" + } + ], + "updated": 1771600797567, + "link": null, + "locked": false, + "type": "arrow", + "id": "a_tei_strel", + "x": 270, + "y": 240, + "width": 130, + "height": 60, + "points": [ + [ + 0, + 0 + ], + [ + 130, + 60 + ] + ], + "strokeColor": "#f59e0b", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startBinding": { + "elementId": "tei", + "fixedPoint": [ + 1, + 0.5 + ] + }, + "endBinding": { + "elementId": "prod_rel", + "fixedPoint": [ + 0, + 0.5 + ] + }, + "startArrowhead": null + }, + { + "type": "text", + "id": "a_tei_strel_text", + "x": 292.65, + "y": 261.25, + "width": 84.7, + "height": 17.5, + "text": "resolves to", + "fontSize": 14, + "fontFamily": 1, + "containerId": "a_tei_strel", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 751043349, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 227857383, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797567, + "link": null, + "locked": false, + "baseline": 13.5 + }, + { + "version": 2, + "versionNonce": 697299633, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 710202603, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "a_prod_rel_text", + "type": "text" + } + ], + "updated": 1771600797567, + "link": null, + "locked": false, + "type": "arrow", + "id": "a_prod_rel", + "x": 500, + "y": 180, + "width": 0, + "height": 120, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 120 + ] + ], + "strokeColor": "#4a9eed", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startBinding": { + "elementId": "product", + "fixedPoint": [ + 0.5, + 1 + ] + }, + "endBinding": { + "elementId": "prod_rel", + "fixedPoint": [ + 0.5, + 0 + ] + }, + "startArrowhead": null + }, + { + "type": "text", + "id": "a_prod_rel_text", + "x": 453.8, + "y": 231.25, + "width": 92.4, + "height": 17.5, + "text": "has releases", + "fontSize": 14, + "fontFamily": 1, + "containerId": "a_prod_rel", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 122921120, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 554857509, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797567, + "link": null, + "locked": false, + "baseline": 13.5 + }, + { + "version": 2, + "versionNonce": 232196529, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 449554058, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "component_text", + "type": "text" + } + ], + "updated": 1771600797567, + "link": null, + "locked": false, + "type": "rectangle", + "id": "component", + "x": 800, + "y": 100, + "width": 200, + "height": 80, + "backgroundColor": "#d0bfff", + "fillStyle": "solid", + "roundness": { + "type": 3 + }, + "strokeColor": "#8b5cf6" + }, + { + "type": "text", + "id": "component_text", + "x": 842.8, + "y": 120, + "width": 114.4, + "height": 40, + "text": "TEA Component\n(Lineage)", + "fontSize": 16, + "fontFamily": 1, + "containerId": "component", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 674237119, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 422435724, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797567, + "link": null, + "locked": false, + "baseline": 36 + }, + { + "version": 2, + "versionNonce": 931136153, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 147374708, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "comp_rel_text", + "type": "text" + } + ], + "updated": 1771600797567, + "link": null, + "locked": false, + "type": "rectangle", + "id": "comp_rel", + "x": 800, + "y": 300, + "width": 240, + "height": 80, + "backgroundColor": "#d0bfff", + "fillStyle": "solid", + "roundness": { + "type": 3 + }, + "strokeColor": "#8b5cf6" + }, + { + "type": "text", + "id": "comp_rel_text", + "x": 812.2, + "y": 322.5, + "width": 215.60000000000002, + "height": 35, + "text": "TEA Component Release\n(/component/{uuid}/releases)", + "fontSize": 14, + "fontFamily": 1, + "containerId": "comp_rel", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 878891488, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 23290723, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797567, + "link": null, + "locked": false, + "baseline": 31 + }, + { + "version": 2, + "versionNonce": 370736448, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 401196270, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "a_comp_rel_text", + "type": "text" + } + ], + "updated": 1771600797567, + "link": null, + "locked": false, + "type": "arrow", + "id": "a_comp_rel", + "x": 900, + "y": 180, + "width": 0, + "height": 120, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 120 + ] + ], + "strokeColor": "#8b5cf6", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startBinding": { + "elementId": "component", + "fixedPoint": [ + 0.5, + 1 + ] + }, + "endBinding": { + "elementId": "comp_rel", + "fixedPoint": [ + 0.5, + 0 + ] + }, + "startArrowhead": null + }, + { + "type": "text", + "id": "a_comp_rel_text", + "x": 853.8, + "y": 231.25, + "width": 92.4, + "height": 17.5, + "text": "has releases", + "fontSize": 14, + "fontFamily": 1, + "containerId": "a_comp_rel", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 598949984, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 312229238, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797567, + "link": null, + "locked": false, + "baseline": 13.5 + }, + { + "version": 2, + "versionNonce": 113491510, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 429136782, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "collection_text", + "type": "text" + } + ], + "updated": 1771600797567, + "link": null, + "locked": false, + "type": "rectangle", + "id": "collection", + "x": 600, + "y": 500, + "width": 220, + "height": 80, + "backgroundColor": "#b2f2bb", + "fillStyle": "solid", + "roundness": { + "type": 3 + }, + "strokeColor": "#22c55e" + }, + { + "type": "text", + "id": "collection_text", + "x": 639.6, + "y": 520, + "width": 140.8, + "height": 40, + "text": "TEA Collection\n(Versioned list)", + "fontSize": 16, + "fontFamily": 1, + "containerId": "collection", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 584982859, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 587906769, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797567, + "link": null, + "locked": false, + "baseline": 36 + }, + { + "version": 2, + "versionNonce": 499529419, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 761705895, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "a_prel_coll_text", + "type": "text" + } + ], + "updated": 1771600797567, + "link": null, + "locked": false, + "type": "arrow", + "id": "a_prel_coll", + "x": 500, + "y": 380, + "width": 100, + "height": 160, + "points": [ + [ + 0, + 0 + ], + [ + 100, + 160 + ] + ], + "strokeColor": "#1e1e1e", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startBinding": { + "elementId": "prod_rel", + "fixedPoint": [ + 0.5, + 1 + ] + }, + "endBinding": { + "elementId": "collection", + "fixedPoint": [ + 0, + 0.5 + ] + }, + "startArrowhead": null + }, + { + "type": "text", + "id": "a_prel_coll_text", + "x": 538.45, + "y": 451.25, + "width": 23.1, + "height": 17.5, + "text": "has", + "fontSize": 14, + "fontFamily": 1, + "containerId": "a_prel_coll", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 338494172, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 166154473, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797567, + "link": null, + "locked": false, + "baseline": 13.5 + }, + { + "version": 2, + "versionNonce": 835357745, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 947892553, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "a_crel_coll_text", + "type": "text" + } + ], + "updated": 1771600797567, + "link": null, + "locked": false, + "type": "arrow", + "id": "a_crel_coll", + "x": 900, + "y": 380, + "width": -80, + "height": 160, + "points": [ + [ + 0, + 0 + ], + [ + -80, + 160 + ] + ], + "strokeColor": "#1e1e1e", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startBinding": { + "elementId": "comp_rel", + "fixedPoint": [ + 0.5, + 1 + ] + }, + "endBinding": { + "elementId": "collection", + "fixedPoint": [ + 1, + 0.5 + ] + }, + "startArrowhead": null + }, + { + "type": "text", + "id": "a_crel_coll_text", + "x": 848.45, + "y": 451.25, + "width": 23.1, + "height": 17.5, + "text": "has", + "fontSize": 14, + "fontFamily": 1, + "containerId": "a_crel_coll", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 625958386, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 497177979, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797567, + "link": null, + "locked": false, + "baseline": 13.5 + }, + { + "version": 2, + "versionNonce": 441589794, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 464410241, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "artifact_text", + "type": "text" + } + ], + "updated": 1771600797567, + "link": null, + "locked": false, + "type": "rectangle", + "id": "artifact", + "x": 600, + "y": 700, + "width": 220, + "height": 80, + "backgroundColor": "#eebefa", + "fillStyle": "solid", + "roundness": { + "type": 3 + }, + "strokeColor": "#ec4899" + }, + { + "type": "text", + "id": "artifact_text", + "x": 613.2, + "y": 720, + "width": 193.60000000000002, + "height": 40, + "text": "TEA Artifact\n(xBOM, VEX, CDXA, CLE)", + "fontSize": 16, + "fontFamily": 1, + "containerId": "artifact", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 3658297, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 886159966, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797567, + "link": null, + "locked": false, + "baseline": 36 + }, + { + "version": 2, + "versionNonce": 64546817, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 412898613, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "a_coll_art_text", + "type": "text" + } + ], + "updated": 1771600797567, + "link": null, + "locked": false, + "type": "arrow", + "id": "a_coll_art", + "x": 710, + "y": 580, + "width": 0, + "height": 120, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 120 + ] + ], + "strokeColor": "#22c55e", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startBinding": { + "elementId": "collection", + "fixedPoint": [ + 0.5, + 1 + ] + }, + "endBinding": { + "elementId": "artifact", + "fixedPoint": [ + 0.5, + 0 + ] + }, + "startArrowhead": null + }, + { + "type": "text", + "id": "a_coll_art_text", + "x": 679.2, + "y": 631.25, + "width": 61.60000000000001, + "height": 17.5, + "text": "contains", + "fontSize": 14, + "fontFamily": 1, + "containerId": "a_coll_art", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 107192323, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 817296938, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797567, + "link": null, + "locked": false, + "baseline": 13.5 + } + ], + "appState": { + "viewBackgroundColor": "#ffffff", + "currentItemStrokeColor": "#1e1e1e", + "currentItemBackgroundColor": "transparent", + "currentItemFillStyle": "solid", + "currentItemStrokeWidth": 2, + "currentItemStrokeStyle": "solid", + "currentItemRoughness": 1, + "currentItemOpacity": 100, + "currentItemFontFamily": 1, + "currentItemFontSize": 20, + "currentItemTextAlign": "left", + "currentItemStrokeSharpness": "round" + } +} \ No newline at end of file diff --git a/doc/tea_discovery_security.excalidraw b/doc/tea_discovery_security.excalidraw new file mode 100644 index 0000000..c45f23b --- /dev/null +++ b/doc/tea_discovery_security.excalidraw @@ -0,0 +1,1103 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://marketplace.visualstudio.com/items?itemName=pomdtr.excalidraw-editor", + "elements": [ + { + "version": 3, + "versionNonce": 835041064, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 737075209, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771601377884, + "link": null, + "locked": false, + "type": "text", + "id": "t_disc_title", + "x": 300, + "y": 20, + "text": "TEA Discovery & Security Architecture", + "fontSize": 28, + "strokeColor": "#1e1e1e", + "width": 569.8000000000001, + "height": 35, + "baseline": 31, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "index": "a0", + "fillStyle": "solid", + "strokeWidth": 2, + "backgroundColor": "transparent", + "roundness": { + "type": 2 + }, + "containerId": null, + "originalText": "TEA Discovery & Security Architecture", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "version": 149, + "versionNonce": 786606632, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 105464567, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "tei_struct_text", + "type": "text" + } + ], + "updated": 1771601605550, + "link": null, + "locked": false, + "type": "rectangle", + "id": "tei_struct", + "x": 49.9765625, + "y": 100, + "width": 450.0234375, + "height": 300.3515625, + "backgroundColor": "#fff3bf", + "fillStyle": "solid", + "roundness": { + "type": 3 + }, + "strokeColor": "#f59e0b", + "index": "a1", + "strokeWidth": 2 + }, + { + "type": "text", + "id": "tei_struct_text", + "x": 94.70040893554688, + "y": 230.17578125, + "width": 360.57574462890625, + "height": 40, + "text": "Transparency Exchange Identifier (TEI)\nurn:tei:::", + "fontSize": 16, + "fontFamily": 1, + "containerId": "tei_struct", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 150, + "versionNonce": 73082152, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 744852632, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771601605550, + "link": null, + "locked": false, + "baseline": 36, + "index": "a2", + "fillStyle": "solid", + "strokeWidth": 2, + "backgroundColor": "transparent", + "roundness": null, + "originalText": "Transparency Exchange Identifier (TEI)\nurn:tei:::", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "version": 376, + "versionNonce": 896843096, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 819988572, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771601611430, + "link": null, + "locked": false, + "type": "text", + "id": "t_types", + "x": 62.16796875, + "y": 139.89453125, + "text": "Supported Types: PURL, SWID, HASH,\nUUID, EAN/UPC, GTIN, ASIN, UDI", + "fontSize": 22.564062499999995, + "strokeColor": "#1e1e1e", + "width": 421.94796875000003, + "height": 56.41015625, + "baseline": 36, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "index": "a3", + "fillStyle": "solid", + "strokeWidth": 2, + "backgroundColor": "transparent", + "roundness": { + "type": 2 + }, + "containerId": null, + "originalText": "Supported Types: PURL, SWID, HASH,\nUUID, EAN/UPC, GTIN, ASIN, UDI", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "version": 3, + "versionNonce": 810552616, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 707153589, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "dns_res_text", + "type": "text" + } + ], + "updated": 1771601377884, + "link": null, + "locked": false, + "type": "rectangle", + "id": "dns_res", + "x": 650, + "y": 100, + "width": 200, + "height": 80, + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "roundness": { + "type": 3 + }, + "strokeColor": "#4a9eed", + "index": "a4", + "strokeWidth": 2 + }, + { + "type": "text", + "id": "dns_res_text", + "x": 670.8, + "y": 120, + "width": 158.4, + "height": 40, + "text": "DNS Resolution\n(from domain-name)", + "fontSize": 16, + "fontFamily": 1, + "containerId": "dns_res", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 3, + "versionNonce": 1180744024, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 225575650, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771601377884, + "link": null, + "locked": false, + "baseline": 36, + "index": "a5", + "fillStyle": "solid", + "strokeWidth": 2, + "backgroundColor": "transparent", + "roundness": null, + "originalText": "DNS Resolution\n(from domain-name)", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "version": 3, + "versionNonce": 1478764584, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 793267654, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771601377884, + "link": null, + "locked": false, + "type": "arrow", + "id": "a_tei_dns", + "x": 500, + "y": 140, + "width": 150, + "height": 0, + "points": [ + [ + 0, + 0 + ], + [ + 150, + 0 + ] + ], + "strokeColor": "#f59e0b", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startBinding": { + "elementId": "tei_struct", + "fixedPoint": [ + 1, + 0.5 + ], + "focus": 0 + }, + "endBinding": { + "elementId": "dns_res", + "fixedPoint": [ + 0, + 0.5 + ], + "focus": 0 + }, + "startArrowhead": null, + "lastCommittedPoint": null, + "index": "a6", + "fillStyle": "solid", + "backgroundColor": "transparent", + "roundness": { + "type": 2 + } + }, + { + "version": 3, + "versionNonce": 1236258392, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 277235211, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "well_known_text", + "type": "text" + } + ], + "updated": 1771601377884, + "link": null, + "locked": false, + "type": "rectangle", + "id": "well_known", + "x": 600, + "y": 300, + "width": 300, + "height": 100, + "backgroundColor": "#b2f2bb", + "fillStyle": "solid", + "roundness": { + "type": 3 + }, + "strokeColor": "#22c55e", + "index": "a7", + "strokeWidth": 2 + }, + { + "type": "text", + "id": "well_known_text", + "x": 609.2, + "y": 330, + "width": 281.6, + "height": 40, + "text": "Discovery Endpoint\nhttps:///.well-known/tea", + "fontSize": 16, + "fontFamily": 1, + "containerId": "well_known", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 3, + "versionNonce": 1153229608, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 130605028, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771601377884, + "link": null, + "locked": false, + "baseline": 36, + "index": "a8", + "fillStyle": "solid", + "strokeWidth": 2, + "backgroundColor": "transparent", + "roundness": null, + "originalText": "Discovery Endpoint\nhttps:///.well-known/tea", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "version": 3, + "versionNonce": 475284312, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 966250622, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "a_dns_wk_text", + "type": "text" + } + ], + "updated": 1771601377884, + "link": null, + "locked": false, + "type": "arrow", + "id": "a_dns_wk", + "x": 750, + "y": 180, + "width": 0, + "height": 120, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 120 + ] + ], + "strokeColor": "#4a9eed", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startBinding": { + "elementId": "dns_res", + "fixedPoint": [ + 0.5, + 1 + ], + "focus": 0 + }, + "endBinding": { + "elementId": "well_known", + "fixedPoint": [ + 0.5, + 0 + ], + "focus": 0 + }, + "startArrowhead": null, + "lastCommittedPoint": null, + "index": "a9", + "fillStyle": "solid", + "backgroundColor": "transparent", + "roundness": { + "type": 2 + } + }, + { + "type": "text", + "id": "a_dns_wk_text", + "x": 715.35, + "y": 231.25, + "width": 69.30000000000001, + "height": 17.5, + "text": "HTTPS GET", + "fontSize": 14, + "fontFamily": 1, + "containerId": "a_dns_wk", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 3, + "versionNonce": 881212968, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 840751313, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771601377884, + "link": null, + "locked": false, + "baseline": 13.5, + "index": "aA", + "fillStyle": "solid", + "strokeWidth": 2, + "backgroundColor": "transparent", + "roundness": null, + "originalText": "HTTPS GET", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "version": 3, + "versionNonce": 1822562392, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 916185838, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "json_resp_text", + "type": "text" + } + ], + "updated": 1771601377884, + "link": null, + "locked": false, + "type": "rectangle", + "id": "json_resp", + "x": 600, + "y": 500, + "width": 300, + "height": 100, + "backgroundColor": "#d0bfff", + "fillStyle": "solid", + "roundness": { + "type": 3 + }, + "strokeColor": "#8b5cf6", + "index": "aB", + "strokeWidth": 2 + }, + { + "type": "text", + "id": "json_resp_text", + "x": 626.8, + "y": 530, + "width": 246.40000000000003, + "height": 40, + "text": "TEA Server Index (JSON)\nList of endpoints & versions", + "fontSize": 16, + "fontFamily": 1, + "containerId": "json_resp", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 3, + "versionNonce": 946616616, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 780073158, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771601377884, + "link": null, + "locked": false, + "baseline": 36, + "index": "aC", + "fillStyle": "solid", + "strokeWidth": 2, + "backgroundColor": "transparent", + "roundness": null, + "originalText": "TEA Server Index (JSON)\nList of endpoints & versions", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "version": 3, + "versionNonce": 2121092440, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 223506811, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "a_wk_json_text", + "type": "text" + } + ], + "updated": 1771601377884, + "link": null, + "locked": false, + "type": "arrow", + "id": "a_wk_json", + "x": 750, + "y": 400, + "width": 0, + "height": 100, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 100 + ] + ], + "strokeColor": "#22c55e", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startBinding": { + "elementId": "well_known", + "fixedPoint": [ + 0.5, + 1 + ], + "focus": 0 + }, + "endBinding": { + "elementId": "json_resp", + "fixedPoint": [ + 0.5, + 0 + ], + "focus": 0 + }, + "startArrowhead": null, + "lastCommittedPoint": null, + "index": "aD", + "fillStyle": "solid", + "backgroundColor": "transparent", + "roundness": { + "type": 2 + } + }, + { + "type": "text", + "id": "a_wk_json_text", + "x": 669.15, + "y": 441.25, + "width": 161.70000000000002, + "height": 17.5, + "text": "Returns endpoint URLs", + "fontSize": 14, + "fontFamily": 1, + "containerId": "a_wk_json", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 3, + "versionNonce": 1675285544, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 914463783, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771601377884, + "link": null, + "locked": false, + "baseline": 13.5, + "index": "aE", + "fillStyle": "solid", + "strokeWidth": 2, + "backgroundColor": "transparent", + "roundness": null, + "originalText": "Returns endpoint URLs", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "version": 3, + "versionNonce": 2064245336, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 70566273, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "client_logic_text", + "type": "text" + } + ], + "updated": 1771601377884, + "link": null, + "locked": false, + "type": "rectangle", + "id": "client_logic", + "x": 100, + "y": 500, + "width": 300, + "height": 100, + "backgroundColor": "#ffc9c9", + "fillStyle": "solid", + "roundness": { + "type": 3 + }, + "strokeColor": "#ef4444", + "index": "aF", + "strokeWidth": 2 + }, + { + "type": "text", + "id": "client_logic_text", + "x": 104.79999999999998, + "y": 520, + "width": 290.40000000000003, + "height": 60, + "text": "Client Selection Logic\nMatches version, honors priority,\nretries on failure (5xx, cert)", + "fontSize": 16, + "fontFamily": 1, + "containerId": "client_logic", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 3, + "versionNonce": 2092830504, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 121030079, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771601377884, + "link": null, + "locked": false, + "baseline": 56, + "index": "aG", + "fillStyle": "solid", + "strokeWidth": 2, + "backgroundColor": "transparent", + "roundness": null, + "originalText": "Client Selection Logic\nMatches version, honors priority,\nretries on failure (5xx, cert)", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "version": 3, + "versionNonce": 1095489368, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 827435008, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771601377884, + "link": null, + "locked": false, + "type": "arrow", + "id": "a_json_cli", + "x": 600, + "y": 550, + "width": 200, + "height": 0, + "points": [ + [ + 0, + 0 + ], + [ + -200, + 0 + ] + ], + "strokeColor": "#8b5cf6", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startBinding": { + "elementId": "json_resp", + "fixedPoint": [ + 0, + 0.5 + ], + "focus": 0 + }, + "endBinding": { + "elementId": "client_logic", + "fixedPoint": [ + 1, + 0.5 + ], + "focus": 0 + }, + "startArrowhead": null, + "lastCommittedPoint": null, + "index": "aH", + "fillStyle": "solid", + "backgroundColor": "transparent", + "roundness": { + "type": 2 + } + }, + { + "version": 3, + "versionNonce": 729934376, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 612330223, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "full_api_text", + "type": "text" + } + ], + "updated": 1771601377884, + "link": null, + "locked": false, + "type": "rectangle", + "id": "full_api", + "x": 100, + "y": 700, + "width": 350, + "height": 80, + "backgroundColor": "#eebefa", + "fillStyle": "solid", + "roundness": { + "type": 3 + }, + "strokeColor": "#ec4899", + "index": "aI", + "strokeWidth": 2 + }, + { + "type": "text", + "id": "full_api_text", + "x": 90.19999999999999, + "y": 722.5, + "width": 369.6, + "height": 35, + "text": "Constructed API Call\n/v/discovery?tei=", + "fontSize": 14, + "fontFamily": 1, + "containerId": "full_api", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 3, + "versionNonce": 898051160, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 897653891, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771601377884, + "link": null, + "locked": false, + "baseline": 31, + "index": "aJ", + "fillStyle": "solid", + "strokeWidth": 2, + "backgroundColor": "transparent", + "roundness": null, + "originalText": "Constructed API Call\n/v/discovery?tei=", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "version": 3, + "versionNonce": 722625832, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 863461482, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771601377884, + "link": null, + "locked": false, + "type": "arrow", + "id": "a_cli_api", + "x": 250, + "y": 600, + "width": 0, + "height": 100, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 100 + ] + ], + "strokeColor": "#ef4444", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startBinding": { + "elementId": "client_logic", + "fixedPoint": [ + 0.5, + 1 + ], + "focus": 0 + }, + "endBinding": { + "elementId": "full_api", + "fixedPoint": [ + 0.5, + 0 + ], + "focus": 0 + }, + "startArrowhead": null, + "lastCommittedPoint": null, + "index": "aK", + "fillStyle": "solid", + "backgroundColor": "transparent", + "roundness": { + "type": 2 + } + }, + { + "version": 3, + "versionNonce": 294642008, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 935183848, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "auth_layer_text", + "type": "text" + } + ], + "updated": 1771601377884, + "link": null, + "locked": false, + "type": "rectangle", + "id": "auth_layer", + "x": 600, + "y": 700, + "width": 250, + "height": 100, + "backgroundColor": "#c3fae8", + "fillStyle": "solid", + "roundness": { + "type": 3 + }, + "strokeColor": "#15803d", + "index": "aL", + "strokeWidth": 2 + }, + { + "type": "text", + "id": "auth_layer_text", + "x": 601.8, + "y": 723.75, + "width": 246.40000000000003, + "height": 52.5, + "text": "Security / Auth Layer\n- HTTP Bearer Token\n- Mutual TLS (mTLS) Client Certs", + "fontSize": 14, + "fontFamily": 1, + "containerId": "auth_layer", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 3, + "versionNonce": 2027651112, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 672485143, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771601377884, + "link": null, + "locked": false, + "baseline": 48.5, + "index": "aM", + "fillStyle": "solid", + "strokeWidth": 2, + "backgroundColor": "transparent", + "roundness": null, + "originalText": "Security / Auth Layer\n- HTTP Bearer Token\n- Mutual TLS (mTLS) Client Certs", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "version": 3, + "versionNonce": 884602456, + "isDeleted": false, + "strokeStyle": "dashed", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 240663246, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "a_api_auth_text", + "type": "text" + } + ], + "updated": 1771601377884, + "link": null, + "locked": false, + "type": "arrow", + "id": "a_api_auth", + "x": 450, + "y": 740, + "width": 150, + "height": 0, + "points": [ + [ + 0, + 0 + ], + [ + 150, + 0 + ] + ], + "strokeColor": "#ec4899", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startBinding": { + "elementId": "full_api", + "fixedPoint": [ + 1, + 0.5 + ], + "focus": 0 + }, + "endBinding": { + "elementId": "auth_layer", + "fixedPoint": [ + 0, + 0.5 + ], + "focus": 0 + }, + "startArrowhead": null, + "lastCommittedPoint": null, + "index": "aN", + "fillStyle": "solid", + "backgroundColor": "transparent", + "roundness": { + "type": 2 + } + }, + { + "type": "text", + "id": "a_api_auth_text", + "x": 482.65, + "y": 731.25, + "width": 84.7, + "height": 17.5, + "text": "secured via", + "fontSize": 14, + "fontFamily": 1, + "containerId": "a_api_auth", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 3, + "versionNonce": 80296744, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 317220990, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771601377884, + "link": null, + "locked": false, + "baseline": 13.5, + "index": "aO", + "fillStyle": "solid", + "strokeWidth": 2, + "backgroundColor": "transparent", + "roundness": null, + "originalText": "secured via", + "autoResize": true, + "lineHeight": 1.25 + } + ], + "appState": { + "gridSize": 20, + "gridStep": 5, + "gridModeEnabled": false, + "viewBackgroundColor": "#ffffff" + }, + "files": {} +} \ No newline at end of file diff --git a/doc/tea_publisher_flow.excalidraw b/doc/tea_publisher_flow.excalidraw new file mode 100644 index 0000000..b34cc6d --- /dev/null +++ b/doc/tea_publisher_flow.excalidraw @@ -0,0 +1,948 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "version": 2, + "versionNonce": 735189831, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 493599073, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "text", + "id": "t_seq2", + "x": 350, + "y": 1650, + "text": "TEA Publisher Flow", + "fontSize": 28, + "strokeColor": "#1e1e1e", + "width": 277.20000000000005, + "height": 35, + "baseline": 31, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top" + }, + { + "version": 2, + "versionNonce": 983350661, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 372839194, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "pbHead_text", + "type": "text" + } + ], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "rectangle", + "id": "pbHead", + "x": 50, + "y": 1750, + "width": 120, + "height": 40, + "backgroundColor": "#ffc9c9", + "fillStyle": "solid", + "roundness": { + "type": 3 + }, + "strokeColor": "#ef4444", + "strokeWidth": 2 + }, + { + "type": "text", + "id": "pbHead_text", + "x": 83.6, + "y": 1760, + "width": 52.800000000000004, + "height": 20, + "text": "Vendor", + "fontSize": 16, + "fontFamily": 1, + "containerId": "pbHead", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 891424686, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 519508987, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "baseline": 16 + }, + { + "version": 2, + "versionNonce": 200057426, + "isDeleted": false, + "strokeStyle": "dashed", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 160900905, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "arrow", + "id": "pbLine", + "x": 110, + "y": 1790, + "width": 0, + "height": 350, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 350 + ] + ], + "strokeColor": "#b0b0b0", + "strokeWidth": 1, + "endArrowhead": "arrow", + "startArrowhead": null + }, + { + "version": 2, + "versionNonce": 890327808, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 961803583, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "ellipse", + "id": "pbh", + "x": 100, + "y": 1700, + "width": 20, + "height": 20, + "backgroundColor": "#ffc9c9", + "fillStyle": "solid", + "strokeColor": "#ef4444", + "strokeWidth": 2 + }, + { + "version": 2, + "versionNonce": 417291581, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 223982292, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "rectangle", + "id": "pbb", + "x": 100, + "y": 1722, + "width": 20, + "height": 20, + "backgroundColor": "#ffc9c9", + "fillStyle": "solid", + "roundness": { + "type": 3 + }, + "strokeColor": "#ef4444", + "strokeWidth": 2 + }, + { + "version": 2, + "versionNonce": 171505583, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 206442783, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "ppHead_text", + "type": "text" + } + ], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "rectangle", + "id": "ppHead", + "x": 300, + "y": 1750, + "width": 160, + "height": 40, + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "roundness": { + "type": 3 + }, + "strokeColor": "#4a9eed", + "strokeWidth": 2 + }, + { + "type": "text", + "id": "ppHead_text", + "x": 337.65, + "y": 1761.25, + "width": 84.7, + "height": 17.5, + "text": "TEA Product", + "fontSize": 14, + "fontFamily": 1, + "containerId": "ppHead", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 111956121, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 540702299, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "baseline": 13.5 + }, + { + "version": 2, + "versionNonce": 608506924, + "isDeleted": false, + "strokeStyle": "dashed", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 995563976, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "arrow", + "id": "ppLine", + "x": 380, + "y": 1790, + "width": 0, + "height": 350, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 350 + ] + ], + "strokeColor": "#b0b0b0", + "strokeWidth": 1, + "endArrowhead": "arrow", + "startArrowhead": null + }, + { + "version": 2, + "versionNonce": 359271078, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 459983326, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "pcHead_text", + "type": "text" + } + ], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "rectangle", + "id": "pcHead", + "x": 550, + "y": 1750, + "width": 160, + "height": 40, + "backgroundColor": "#d0bfff", + "fillStyle": "solid", + "roundness": { + "type": 3 + }, + "strokeColor": "#8b5cf6", + "strokeWidth": 2 + }, + { + "type": "text", + "id": "pcHead_text", + "x": 579.95, + "y": 1761.25, + "width": 100.10000000000001, + "height": 17.5, + "text": "TEA Component", + "fontSize": 14, + "fontFamily": 1, + "containerId": "pcHead", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 339317497, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 266302514, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "baseline": 13.5 + }, + { + "version": 2, + "versionNonce": 43997061, + "isDeleted": false, + "strokeStyle": "dashed", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 66353842, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "arrow", + "id": "pcLine", + "x": 630, + "y": 1790, + "width": 0, + "height": 350, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 350 + ] + ], + "strokeColor": "#b0b0b0", + "strokeWidth": 1, + "endArrowhead": "arrow", + "startArrowhead": null + }, + { + "version": 2, + "versionNonce": 10162484, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 467471766, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "pcHead2_text", + "type": "text" + } + ], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "rectangle", + "id": "pcHead2", + "x": 800, + "y": 1750, + "width": 180, + "height": 40, + "backgroundColor": "#b2f2bb", + "fillStyle": "solid", + "roundness": { + "type": 3 + }, + "strokeColor": "#22c55e", + "strokeWidth": 2 + }, + { + "type": "text", + "id": "pcHead2_text", + "x": 836.1, + "y": 1761.25, + "width": 107.80000000000001, + "height": 17.5, + "text": "TEA Collection", + "fontSize": 14, + "fontFamily": 1, + "containerId": "pcHead2", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 34816800, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 367252007, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "baseline": 13.5 + }, + { + "version": 2, + "versionNonce": 746602882, + "isDeleted": false, + "strokeStyle": "dashed", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 803867599, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "arrow", + "id": "pcLine2", + "x": 890, + "y": 1790, + "width": 0, + "height": 350, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 350 + ] + ], + "strokeColor": "#b0b0b0", + "strokeWidth": 1, + "endArrowhead": "arrow", + "startArrowhead": null + }, + { + "version": 2, + "versionNonce": 479137662, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 8343542, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "pseq1_text", + "type": "text" + } + ], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "arrow", + "id": "pseq1", + "x": 110, + "y": 1840, + "width": 270, + "height": 0, + "points": [ + [ + 0, + 0 + ], + [ + 270, + 0 + ] + ], + "strokeColor": "#4a9eed", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startArrowhead": null + }, + { + "type": "text", + "id": "pseq1_text", + "x": 171.85, + "y": 1831.25, + "width": 146.3, + "height": 17.5, + "text": "1. POST /v1/product", + "fontSize": 14, + "fontFamily": 1, + "containerId": "pseq1", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 919186660, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 985070238, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "baseline": 13.5 + }, + { + "version": 2, + "versionNonce": 285675331, + "isDeleted": false, + "strokeStyle": "dashed", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 878566305, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "pseq2_text", + "type": "text" + } + ], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "arrow", + "id": "pseq2", + "x": 380, + "y": 1880, + "width": -270, + "height": 0, + "points": [ + [ + 0, + 0 + ], + [ + -270, + 0 + ] + ], + "strokeColor": "#4a9eed", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startArrowhead": null + }, + { + "type": "text", + "id": "pseq2_text", + "x": 114.1, + "y": 1871.25, + "width": 261.8, + "height": 17.5, + "text": "2. Returns Product Identifier (PI)", + "fontSize": 14, + "fontFamily": 1, + "containerId": "pseq2", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 365632409, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 430366614, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "baseline": 13.5 + }, + { + "version": 2, + "versionNonce": 500453078, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 484489509, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "pseq3_text", + "type": "text" + } + ], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "arrow", + "id": "pseq3", + "x": 110, + "y": 1930, + "width": 520, + "height": 0, + "points": [ + [ + 0, + 0 + ], + [ + 520, + 0 + ] + ], + "strokeColor": "#8b5cf6", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startArrowhead": null + }, + { + "type": "text", + "id": "pseq3_text", + "x": 177.49999999999997, + "y": 1921.25, + "width": 385.00000000000006, + "height": 17.5, + "text": "3. POST /v1/component (with PI, Component Version)", + "fontSize": 14, + "fontFamily": 1, + "containerId": "pseq3", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 996674539, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 149908619, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "baseline": 13.5 + }, + { + "version": 2, + "versionNonce": 732777045, + "isDeleted": false, + "strokeStyle": "dashed", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 375918744, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "pseq4_text", + "type": "text" + } + ], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "arrow", + "id": "pseq4", + "x": 630, + "y": 1970, + "width": -520, + "height": 0, + "points": [ + [ + 0, + 0 + ], + [ + -520, + 0 + ] + ], + "strokeColor": "#8b5cf6", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startArrowhead": null + }, + { + "type": "text", + "id": "pseq4_text", + "x": 281.45, + "y": 1961.25, + "width": 177.10000000000002, + "height": 17.5, + "text": "4. Returns Component ID", + "fontSize": 14, + "fontFamily": 1, + "containerId": "pseq4", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 290342518, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 985361675, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "baseline": 13.5 + }, + { + "version": 2, + "versionNonce": 86711719, + "isDeleted": false, + "strokeStyle": "solid", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 585995016, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "pseq5_text", + "type": "text" + } + ], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "arrow", + "id": "pseq5", + "x": 110, + "y": 2020, + "width": 780, + "height": 0, + "points": [ + [ + 0, + 0 + ], + [ + 780, + 0 + ] + ], + "strokeColor": "#22c55e", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startArrowhead": null + }, + { + "type": "text", + "id": "pseq5_text", + "x": 288.25, + "y": 2011.25, + "width": 423.50000000000006, + "height": 17.5, + "text": "5. POST /v1/collection (with Component ID and Artifact)", + "fontSize": 14, + "fontFamily": 1, + "containerId": "pseq5", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 322237589, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 645475552, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "baseline": 13.5 + }, + { + "version": 2, + "versionNonce": 718048721, + "isDeleted": false, + "strokeStyle": "dashed", + "strokeSharpness": "round", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 935023425, + "groupIds": [], + "frameId": null, + "boundElements": [ + { + "id": "pseq6_text", + "type": "text" + } + ], + "updated": 1771600797571, + "link": null, + "locked": false, + "type": "arrow", + "id": "pseq6", + "x": 890, + "y": 2060, + "width": -780, + "height": 0, + "points": [ + [ + 0, + 0 + ], + [ + -780, + 0 + ] + ], + "strokeColor": "#22c55e", + "strokeWidth": 2, + "endArrowhead": "arrow", + "startArrowhead": null + }, + { + "type": "text", + "id": "pseq6_text", + "x": 407.6, + "y": 2051.25, + "width": 184.8, + "height": 17.5, + "text": "6. Returns Collection ID", + "fontSize": 14, + "fontFamily": 1, + "containerId": "pseq6", + "verticalAlign": "middle", + "textAlign": "center", + "strokeColor": "#1e1e1e", + "version": 2, + "versionNonce": 288204797, + "isDeleted": false, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "seed": 464034892, + "groupIds": [], + "frameId": null, + "boundElements": [], + "updated": 1771600797571, + "link": null, + "locked": false, + "baseline": 13.5 + } + ], + "appState": { + "viewBackgroundColor": "#ffffff", + "currentItemStrokeColor": "#1e1e1e", + "currentItemBackgroundColor": "transparent", + "currentItemFillStyle": "solid", + "currentItemStrokeWidth": 2, + "currentItemStrokeStyle": "solid", + "currentItemRoughness": 1, + "currentItemOpacity": 100, + "currentItemFontFamily": 1, + "currentItemFontSize": 20, + "currentItemTextAlign": "left", + "currentItemStrokeSharpness": "round" + } +} \ No newline at end of file diff --git a/graph-schema.json b/graph-schema.json new file mode 100644 index 0000000..ac32c88 --- /dev/null +++ b/graph-schema.json @@ -0,0 +1,73 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Dependency Graph Schema", + "description": "Minimal JSON schema for dependency graph with nodes and edges.", + "type": "object", + "properties": { + "nodes": { + "type": "array", + "description": "List of dependency nodes.", + "items": { + "type": "object", + "properties": { + "purl": { + "type": "string", + "description": "Package URL (PURL) identifier." + }, + "name": { + "type": "string", + "description": "Package name." + }, + "version": { + "type": "string", + "description": "Exact version." + }, + "digest": { + "type": "string", + "description": "Content digest (e.g., SHA256)." + }, + "license": { + "type": "string", + "description": "License SPDX identifier." + }, + "source_repo": { + "type": "string", + "description": "Source repository URL." + }, + "lifecycle_state": { + "enum": ["ACTIVE", "DEPRECATED", "QUARANTINED", "RETIRED"], + "description": "Lifecycle state for deprecation protocol." + } + }, + "required": ["purl", "name", "version", "digest", "lifecycle_state"] + } + }, + "edges": { + "type": "array", + "description": "List of dependency edges.", + "items": { + "type": "object", + "properties": { + "from_purl": { + "type": "string", + "description": "PURL of the dependent package." + }, + "to_purl": { + "type": "string", + "description": "PURL of the dependency." + }, + "scope": { + "enum": ["build", "runtime"], + "description": "Scope of the dependency." + }, + "reason": { + "enum": ["direct", "transitive"], + "description": "Direct or transitive dependency." + } + }, + "required": ["from_purl", "to_purl", "scope", "reason"] + } + } + }, + "required": ["nodes", "edges"] +}