<mxfile host="app.diagrams.net" modified="2026-10-25T00:00:00.000Z" agent="OpenAI Codex" version="24.7.17" type="device"><diagram id="azure-ai-gateway-model-governance" name="AI Gateway and Model Governance"><mxGraphModel dx="1440" dy="920" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1440" pageHeight="920" math="0" shadow="0"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="s1" value="AZURE API MANAGEMENT · AI GATEWAY" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fffefa;fillOpacity=45;strokeColor=#222222;strokeWidth=2;dashed=1;dashPattern=8 6;fontColor=#676761;fontSize=14;fontStyle=1;verticalAlign=top;spacingTop=12;" vertex="1" parent="1"><mxGeometry x="300" y="190" width="650" height="530" as="geometry"/></mxCell><mxCell id="apps" value="&lt;div style=&quot;text-align:left&quot;&gt;&lt;small&gt;CLIENTS&lt;/small&gt;&lt;br&gt;&lt;b&gt;Applications&lt;/b&gt;&lt;br&gt;Separate keys&lt;br&gt;Approved callers&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#efeee9;strokeColor=#222222;strokeWidth=2;fontColor=#222222;fontSize=16;spacing=12;arcSize=14;" vertex="1" parent="1"><mxGeometry x="55" y="390" width="205" height="122" as="geometry"/></mxCell><mxCell id="auth" value="&lt;div style=&quot;text-align:left&quot;&gt;&lt;small&gt;POLICY&lt;/small&gt;&lt;br&gt;&lt;b&gt;Authentication&lt;/b&gt;&lt;br&gt;App identity · access&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e4efe7;strokeColor=#222222;strokeWidth=2;fontColor=#222222;fontSize=16;spacing=12;arcSize=14;" vertex="1" parent="1"><mxGeometry x="360" y="275" width="235" height="120" as="geometry"/></mxCell><mxCell id="limits" value="&lt;div style=&quot;text-align:left&quot;&gt;&lt;small&gt;POLICY&lt;/small&gt;&lt;br&gt;&lt;b&gt;Rate and token limits&lt;/b&gt;&lt;br&gt;Quotas · throttling&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f6edcf;strokeColor=#222222;strokeWidth=2;fontColor=#222222;fontSize=16;spacing=12;arcSize=14;" vertex="1" parent="1"><mxGeometry x="650" y="275" width="235" height="120" as="geometry"/></mxCell><mxCell id="safety" value="&lt;div style=&quot;text-align:left&quot;&gt;&lt;small&gt;POLICY&lt;/small&gt;&lt;br&gt;&lt;b&gt;Content safety&lt;/b&gt;&lt;br&gt;Inspect model traffic&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f4e2df;strokeColor=#222222;strokeWidth=2;fontColor=#222222;fontSize=16;spacing=12;arcSize=14;" vertex="1" parent="1"><mxGeometry x="360" y="480" width="235" height="120" as="geometry"/></mxCell><mxCell id="route" value="&lt;div style=&quot;text-align:left&quot;&gt;&lt;small&gt;POLICY&lt;/small&gt;&lt;br&gt;&lt;b&gt;Routing and telemetry&lt;/b&gt;&lt;br&gt;Models · tools · usage&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e2edf5;strokeColor=#222222;strokeWidth=2;fontColor=#222222;fontSize=16;spacing=12;arcSize=14;" vertex="1" parent="1"><mxGeometry x="650" y="480" width="235" height="120" as="geometry"/></mxCell><mxCell id="models" value="&lt;div style=&quot;text-align:left&quot;&gt;&lt;small&gt;BACKENDS&lt;/small&gt;&lt;br&gt;&lt;b&gt;Model endpoints&lt;/b&gt;&lt;br&gt;Foundry · Azure OpenAI&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e2edf5;strokeColor=#222222;strokeWidth=2;fontColor=#222222;fontSize=16;spacing=12;arcSize=14;" vertex="1" parent="1"><mxGeometry x="1060" y="275" width="300" height="120" as="geometry"/></mxCell><mxCell id="tools" value="&lt;div style=&quot;text-align:left&quot;&gt;&lt;small&gt;BACKENDS&lt;/small&gt;&lt;br&gt;&lt;b&gt;APIs and MCP tools&lt;/b&gt;&lt;br&gt;Approved business actions&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e4efe7;strokeColor=#222222;strokeWidth=2;fontColor=#222222;fontSize=16;spacing=12;arcSize=14;" vertex="1" parent="1"><mxGeometry x="1060" y="480" width="300" height="120" as="geometry"/></mxCell><mxCell id="monitor" value="&lt;div style=&quot;text-align:left&quot;&gt;&lt;small&gt;OPERATIONS&lt;/small&gt;&lt;br&gt;&lt;b&gt;Usage monitoring&lt;/b&gt;&lt;br&gt;Latency · token use · cost&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#efeee9;strokeColor=#222222;strokeWidth=2;fontColor=#222222;fontSize=16;spacing=12;arcSize=14;" vertex="1" parent="1"><mxGeometry x="530" y="755" width="370" height="88" as="geometry"/></mxCell><mxCell id="e1" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#222222;strokeWidth=2;fontColor=#676761;fontSize=12;labelBackgroundColor=#fbfaf7;" edge="1" parent="1" source="apps" target="auth"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="e2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#222222;strokeWidth=2;fontColor=#676761;fontSize=12;labelBackgroundColor=#fbfaf7;" edge="1" parent="1" source="auth" target="limits"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="e3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#222222;strokeWidth=2;fontColor=#676761;fontSize=12;labelBackgroundColor=#fbfaf7;" edge="1" parent="1" source="limits" target="route"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="e4" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#222222;strokeWidth=2;fontColor=#676761;fontSize=12;labelBackgroundColor=#fbfaf7;" edge="1" parent="1" source="safety" target="route"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="e5" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#222222;strokeWidth=2;fontColor=#676761;fontSize=12;labelBackgroundColor=#fbfaf7;" edge="1" parent="1" source="route" target="models"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="e6" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#222222;strokeWidth=2;fontColor=#676761;fontSize=12;labelBackgroundColor=#fbfaf7;" edge="1" parent="1" source="route" target="tools"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="e7" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#222222;strokeWidth=2;dashed=1;dashPattern=8 6;fontColor=#676761;fontSize=12;labelBackgroundColor=#fbfaf7;" edge="1" parent="1" source="route" target="monitor"><mxGeometry relative="1" as="geometry"/></mxCell></root></mxGraphModel></diagram></mxfile>