# azure/apiops architecture

> Architecture diagram of the GitHub repository azure/apiops, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/azure/apiops
- Repository: https://github.com/azure/apiops

## Overview

APIOps automates the API Management lifecycle: an operator extracts APIM artifacts into version-controlled files, reviews and promotes those changes, then publishes them to a configured APIM instance. The README also describes environment-specific configuration and the tool’s focus on API specifications and APIM resources. The graph includes resource-model and policy-fragment layers evidenced by the tree and sampled source; extractor internals and most publisher wiring were not sampled, so those links are limited to the documented workflow.

Main entry points: [`src/common/ResourceGraph.cs`](https://github.com/azure/apiops/blob/main/src/common/ResourceGraph.cs) (Resource graph), [`src/extractor/Program.cs`](https://github.com/azure/apiops/blob/main/src/extractor/Program.cs) (Extractor), [`src/publisher/Program.cs`](https://github.com/azure/apiops/blob/main/src/publisher/Program.cs) (Publisher), [`src/publisher/Publisher.cs`](https://github.com/azure/apiops/blob/main/src/publisher/Publisher.cs) (Publish logic)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Artifact workflow"]
  node_artifact_files["Versioned artifacts"]
  node_review["Review and promotion"]
end

subgraph group_resources["APIM resources"]
  node_resource_graph["Resource graph<br/>[ResourceGraph.cs]"]
  node_api_resources["API resources<br/>[Api.cs]"]
  node_product_resources["Products and groups<br/>[Product.cs]"]
  node_policy_resources["Policies and fragments<br/>[PolicyFragment.cs]"]
  node_versioning["Versions and releases<br/>[VersionSet.cs]"]
  node_relationships["Resource relationships<br/>[Relationships.cs]"]
end

subgraph group_runtime["Application runtime"]
  node_extractor["Extractor<br/>[Program.cs]"]
  node_extractor_impl["Extraction logic<br/>[Extractor.cs]"]
  node_publisher["Publisher<br/>[Program.cs]"]
  node_publisher_impl["Publish logic<br/>[Publisher.cs]"]
  node_configuration["Runtime configuration<br/>[Configuration.cs]"]
  node_service_settings["Service settings"]
end

subgraph group_integrations["External systems"]
  node_apim_source[("Source APIM")]
  node_apim_target[("Target APIM")]
end

node_operator(("APIM operator"))

node_operator -->|"runs extraction"| node_extractor
node_extractor -->|"runs"| node_extractor_impl
node_extractor -->|"loads settings"| node_configuration
node_extractor -->|"exports artifacts"| node_apim_source
node_extractor -->|"writes artifacts"| node_artifact_files
node_artifact_files -->|"provides changes"| node_review
node_review -->|"promotes changes"| node_publisher
node_publisher -->|"runs"| node_publisher_impl
node_publisher -->|"loads settings"| node_configuration
node_publisher -->|"uses service settings"| node_service_settings
node_publisher -->|"publishes artifacts"| node_apim_target
node_artifact_files -->|"describes resources"| node_resource_graph
node_resource_graph -->|"models resources"| node_api_resources
node_resource_graph -->|"models resources"| node_product_resources
node_resource_graph -->|"models resources"| node_policy_resources
node_resource_graph -->|"models resources"| node_versioning
node_publisher_impl -->|"resolves relationships"| node_relationships

click node_extractor "https://github.com/azure/apiops/blob/main/src/extractor/Program.cs"
click node_extractor_impl "https://github.com/azure/apiops/blob/main/src/extractor/Extractor.cs"
click node_publisher "https://github.com/azure/apiops/blob/main/src/publisher/Program.cs"
click node_publisher_impl "https://github.com/azure/apiops/blob/main/src/publisher/Publisher.cs"
click node_configuration "https://github.com/azure/apiops/blob/main/src/common/Configuration.cs"
click node_service_settings "https://github.com/azure/apiops/blob/main/src/common/ManagementService.cs"
click node_resource_graph "https://github.com/azure/apiops/blob/main/src/common/ResourceGraph.cs"
click node_api_resources "https://github.com/azure/apiops/blob/main/src/common/Api.cs"
click node_product_resources "https://github.com/azure/apiops/blob/main/src/common/Product.cs"
click node_policy_resources "https://github.com/azure/apiops/blob/main/src/common/PolicyFragment.cs"
click node_versioning "https://github.com/azure/apiops/blob/main/src/common/VersionSet.cs"
click node_relationships "https://github.com/azure/apiops/blob/main/src/publisher/Relationships.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_artifact_files,node_review toneBlue
class node_resource_graph,node_api_resources,node_product_resources,node_policy_resources,node_versioning,node_relationships toneAmber
class node_extractor,node_extractor_impl,node_publisher,node_publisher_impl,node_configuration,node_service_settings,node_operator toneMint
class node_apim_source,node_apim_target toneRose
```

## Components

### Artifact workflow

- **Versioned artifacts**
- **Review and promotion**

### APIM resources

- [Resource graph](https://github.com/azure/apiops/blob/main/src/common/ResourceGraph.cs): `src/common/ResourceGraph.cs`
- [API resources](https://github.com/azure/apiops/blob/main/src/common/Api.cs): `src/common/Api.cs`
- [Products and groups](https://github.com/azure/apiops/blob/main/src/common/Product.cs): `src/common/Product.cs`
- [Policies and fragments](https://github.com/azure/apiops/blob/main/src/common/PolicyFragment.cs): `src/common/PolicyFragment.cs`
- [Versions and releases](https://github.com/azure/apiops/blob/main/src/common/VersionSet.cs): `src/common/VersionSet.cs`
- [Resource relationships](https://github.com/azure/apiops/blob/main/src/publisher/Relationships.cs): `src/publisher/Relationships.cs`

### Application runtime

- [Extractor](https://github.com/azure/apiops/blob/main/src/extractor/Program.cs): `src/extractor/Program.cs`
- [Extraction logic](https://github.com/azure/apiops/blob/main/src/extractor/Extractor.cs): `src/extractor/Extractor.cs`
- [Publisher](https://github.com/azure/apiops/blob/main/src/publisher/Program.cs): `src/publisher/Program.cs`
- [Publish logic](https://github.com/azure/apiops/blob/main/src/publisher/Publisher.cs): `src/publisher/Publisher.cs`
- [Runtime configuration](https://github.com/azure/apiops/blob/main/src/common/Configuration.cs): `src/common/Configuration.cs`
- [Service settings](https://github.com/azure/apiops/blob/main/src/common/ManagementService.cs): `src/common/ManagementService.cs`

### External systems

- **Source APIM**
- **Target APIM**

### Other components

- **APIM operator**

## Connections

- APIM operator → Extractor: runs extraction
- Extractor → Extraction logic: runs
- Extractor → Runtime configuration: loads settings
- Extractor → Source APIM: exports artifacts
- Extractor → Versioned artifacts: writes artifacts
- Versioned artifacts → Review and promotion: provides changes
- Review and promotion → Publisher: promotes changes
- Publisher → Publish logic: runs
- Publisher → Runtime configuration: loads settings
- Publisher → Service settings: uses service settings
- Publisher → Target APIM: publishes artifacts
- Versioned artifacts → Resource graph: describes resources
- Resource graph → API resources: models resources
- Resource graph → Products and groups: models resources
- Resource graph → Policies and fragments: models resources
- Resource graph → Versions and releases: models resources
- Publish logic → Resource relationships: resolves relationships
