# juanmanqn/api-test-automation architecture

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

- Interactive diagram: https://gitdiagram.com/juanmanqn/api-test-automation
- Repository: https://github.com/juanmanqn/api-test-automation

## Overview

API Quality es una herramienta CLI para evaluar contratos OpenAPI y ejecutar controles técnicos sobre APIs REST configuradas. El flujo principal selecciona una o varias APIs, valida configuración y contrato con Spectral, y —salvo en el perfil lint— ejecuta pruebas generadas por Schemathesis con políticas compartidas de cabeceras, latencia y cobertura exitosa. Finalmente consolida hallazgos y observaciones en reportes HTML, JSON y JUnit. Las conexiones reflejan las llamadas observables en el CLI y la suite; las capacidades de reglas se apoyan también en la documentación y el árbol.

Main entry points: [`src/api_quality/cli.py`](https://github.com/juanmanqn/api-test-automation/blob/main/src/api_quality/cli.py) (CLI runner), [`src/api_quality/runtime_suite.py`](https://github.com/juanmanqn/api-test-automation/blob/main/src/api_quality/runtime_suite.py) (Suite Schemathesis), [`src/api_quality/config.py`](https://github.com/juanmanqn/api-test-automation/blob/main/src/api_quality/config.py) (Configuración y políticas), [`apis/demo/openapi.yaml`](https://github.com/juanmanqn/api-test-automation/blob/main/apis/demo/openapi.yaml) (Contrato OpenAPI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_orchestration["Ejecución CLI"]
  node_cli["CLI runner<br/>[cli.py]"]
end

subgraph group_catalog["Catálogo y reglas"]
  node_config["Configuración y políticas<br/>[config.py]"]
  node_api_catalog["Catálogo de APIs"]
  node_demo_config["Configuración demo<br/>[config.yaml]"]
  node_openapi["Contrato OpenAPI<br/>[openapi.yaml]"]
  node_spectral_rules["Reglas Spectral<br/>[spectral.yaml]"]
  node_spectral["Spectral CLI"]
end

subgraph group_runtime["Evaluación runtime"]
  node_pytest["pytest runner"]
  node_suite["Suite Schemathesis<br/>[runtime_suite.py]"]
  node_schemathesis["Schemathesis"]
  node_observations["Observaciones<br/>[runtime_suite.py]"]
end

subgraph group_results["Resultados"]
  node_reporting["Generador de reportes<br/>[reporting.py]"]
  node_reports["Reportes HTML JSON JUnit"]
end

node_operator(("Ingeniero"))
node_target_api{{"API evaluada"}}

node_operator -->|"inicia evaluación"| node_cli
node_cli -->|"selecciona API"| node_api_catalog
node_cli -->|"carga configuración"| node_config
node_config -->|"valida configuración"| node_demo_config
node_config -->|"resuelve contrato"| node_openapi
node_cli -->|"ejecuta lint"| node_spectral
node_cli -->|"envía contrato"| node_openapi
node_cli -->|"indica reglas"| node_spectral_rules
node_cli -->|"lanza suite"| node_pytest
node_pytest -->|"ejecuta"| node_suite
node_suite -->|"carga configuración"| node_config
node_suite -->|"configura pruebas"| node_schemathesis
node_suite -->|"carga contrato"| node_openapi
node_schemathesis -->|"envía solicitudes"| node_target_api
node_suite -->|"registra métricas"| node_observations
node_cli -->|"lee métricas"| node_observations
node_cli -->|"entrega resultados"| node_reporting
node_reporting -->|"escribe reportes"| node_reports

click node_cli "https://github.com/juanmanqn/api-test-automation/blob/main/src/api_quality/cli.py"
click node_config "https://github.com/juanmanqn/api-test-automation/blob/main/src/api_quality/config.py"
click node_api_catalog "https://github.com/juanmanqn/api-test-automation/tree/main/apis"
click node_demo_config "https://github.com/juanmanqn/api-test-automation/blob/main/apis/demo/config.yaml"
click node_openapi "https://github.com/juanmanqn/api-test-automation/blob/main/apis/demo/openapi.yaml"
click node_spectral_rules "https://github.com/juanmanqn/api-test-automation/blob/main/rules/spectral.yaml"
click node_suite "https://github.com/juanmanqn/api-test-automation/blob/main/src/api_quality/runtime_suite.py"
click node_observations "https://github.com/juanmanqn/api-test-automation/blob/main/src/api_quality/runtime_suite.py"
click node_reporting "https://github.com/juanmanqn/api-test-automation/blob/main/src/api_quality/reporting.py"

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_cli toneBlue
class node_config,node_api_catalog,node_demo_config,node_openapi,node_spectral_rules,node_spectral toneAmber
class node_pytest,node_suite,node_schemathesis,node_observations,node_target_api toneMint
class node_reporting,node_reports toneRose
class node_operator toneIndigo
```

## Components

### Ejecución CLI

- [CLI runner](https://github.com/juanmanqn/api-test-automation/blob/main/src/api_quality/cli.py): `src/api_quality/cli.py`

### Catálogo y reglas

- [Configuración y políticas](https://github.com/juanmanqn/api-test-automation/blob/main/src/api_quality/config.py): `src/api_quality/config.py`
- [Catálogo de APIs](https://github.com/juanmanqn/api-test-automation/tree/main/apis): `apis`
- [Configuración demo](https://github.com/juanmanqn/api-test-automation/blob/main/apis/demo/config.yaml): `apis/demo/config.yaml`
- [Contrato OpenAPI](https://github.com/juanmanqn/api-test-automation/blob/main/apis/demo/openapi.yaml): `apis/demo/openapi.yaml`
- [Reglas Spectral](https://github.com/juanmanqn/api-test-automation/blob/main/rules/spectral.yaml): `rules/spectral.yaml`
- **Spectral CLI**

### Evaluación runtime

- **pytest runner**
- [Suite Schemathesis](https://github.com/juanmanqn/api-test-automation/blob/main/src/api_quality/runtime_suite.py): `src/api_quality/runtime_suite.py`
- **Schemathesis**
- [Observaciones](https://github.com/juanmanqn/api-test-automation/blob/main/src/api_quality/runtime_suite.py): `src/api_quality/runtime_suite.py`

### Resultados

- [Generador de reportes](https://github.com/juanmanqn/api-test-automation/blob/main/src/api_quality/reporting.py): `src/api_quality/reporting.py`
- **Reportes HTML JSON JUnit**

### Other components

- **Ingeniero**
- **API evaluada**

## Connections

- Ingeniero → CLI runner: inicia evaluación
- CLI runner → Catálogo de APIs: selecciona API
- CLI runner → Configuración y políticas: carga configuración
- Configuración y políticas → Configuración demo: valida configuración
- Configuración y políticas → Contrato OpenAPI: resuelve contrato
- CLI runner → Spectral CLI: ejecuta lint
- CLI runner → Contrato OpenAPI: envía contrato
- CLI runner → Reglas Spectral: indica reglas
- CLI runner → pytest runner: lanza suite
- pytest runner → Suite Schemathesis: ejecuta
- Suite Schemathesis → Configuración y políticas: carga configuración
- Suite Schemathesis → Schemathesis: configura pruebas
- Suite Schemathesis → Contrato OpenAPI: carga contrato
- Schemathesis → API evaluada: envía solicitudes
- Suite Schemathesis → Observaciones: registra métricas
- CLI runner → Observaciones: lee métricas
- CLI runner → Generador de reportes: entrega resultados
- Generador de reportes → Reportes HTML JSON JUnit: escribe reportes
