Estándar Abierto para el Esquema de Intercambio de Recursos de Infraestructura
OSIRIS JSON produce documentos JSON independientes de proveedor para describir recursos de infraestructura y sus relaciones topológicas en entornos heterogéneos de IT y OT. Un formato de intercambio diseñado para la portabilidad, la claridad de extremo a extremo y la inclusión OT desde su concepción.
El problema
La infraestructura moderna abarca múltiples stacks y proveedores: hyperscalers (AWS, Azure, GCP, etc.), proveedores de nube pública, centros de datos on-prem e integración con entornos OT complejos.
Aunque algunas plataformas exportan inventarios (a menudo como JSON), las representaciones son inconsistentes entre proveedores incluso para conceptos equivalentes como identidad, propiedades y relaciones.
La solución
OSIRIS JSON define un esquema JSON independiente de proveedor para describir recursos de infraestructura y relaciones topológicas en entornos heterogéneos.
El objetivo de OSIRIS JSON es normalizar las exportaciones de hyperscalers y proveedores cloud, así como de dispositivos en centros de datos on-prem (cómputo, almacenamiento, red).
Desde la primera versión de la Especificación, OSIRIS JSON soporta la inclusión de OT por diseño.
Qué obtienes
Seis capacidades principales que hacen de OSIRIS JSON un estándar abierto para el intercambio de recursos de infraestructura y topología.
Diseño unificado
Construido para entornos IT heterogéneos, con un camino claro de extensión para OT y otros dominios a medida que crece la adopción.
Relaciones explícitas
Representación de primera clase de conexiones, dependencias, contención y otras relaciones topológicas.
Agrupación flexible
Soporte para agrupación lógica y física que refleja estructuras organizativas y arquitectónicas reales sin forzar una taxonomía única.
Atribución de proveedor
Los recursos preservan la trazabilidad hacia su sistema/proveedor de origen usando una representación estandarizada e independiente de proveedor.
Diseñado para la extensibilidad
Un mecanismo definido para propiedades específicas de proveedor y tipos de recursos personalizados sin romper la compatibilidad.
Validación en tres niveles
Validación estructural (esquema), semántica y de dominio que mejora la consistencia y calidad de datos cuando se aplican herramientas de validación.
Principios de diseño
OSIRIS JSON es un formato de intercambio de instantáneas estáticas. Captura lo que existe y cómo se relaciona en un momento dado. No fue diseñado como un sistema de monitoreo en tiempo real, una herramienta de despliegue ni un motor de Infrastructure-as-Code.
block OSIRIS JSON NO ES
check_circle OSIRIS JSON ES
Optimizado para escenarios donde la documentación y la topología deben intercambiarse entre sistemas y equipos.
Prueba los ejemplos de OSIRIS JSON
Explora instantáneas reales de topología OSIRIS JSON con relaciones, proveedores y agrupaciones capturadas en un documento JSON portable.
Aplicación ejecutándose en Azure con servicios API en AWS
1{
2 "$schema": "https://osirisjson.org/schema/v1.0/osiris.schema.json",
3 "version": "1.0.0",
4 "metadata": {
5 "timestamp": "2026-01-08T15:45:00Z",
6 "generator": {
7 "name": "manual",
8 "version": "1.0.0"
9 },
10 "scope": {
11 "name": "Multi-cloud web application",
12 "description": "Three-tier application with frontend and database in Azure East US, API backend in AWS US-East-1",
13 "providers": ["aws", "azure"],
14 "regions": ["us-east-1", "eastus"],
15 "accounts": ["123456789012"],
16 "environments": ["production"]
17 }
18 },
19 "topology": {
20 "resources": [
21 {
22 "id": "azure::app-web-frontend",
23 "type": "compute.container",
24 "name": "web-frontend-prod",
25 "description": "Azure App Service hosting React frontend",
26 "provider": {
27 "name": "azure",
28 "type": "Microsoft.Web/sites",
29 "native_id": "/subscriptions/sub-001/resourceGroups/prod-rg/providers/Microsoft.Web/sites/web-frontend-prod",
30 "region": "eastus",
31 "subscription": "sub-001",
32 "tenant": "tenant-001"
33 },
34 "status": "active",
35 "state": "running",
36 "properties": {
37 "kind": "app,linux",
38 "runtime_stack": "NODE|18-lts",
39 "default_hostname": "web-frontend-prod.azurewebsites.net",
40 "https_only": true,
41 "ftps_state": "Disabled",
42 "reserved": true
43 },
44 "tags": {
45 "Environment": "production",
46 "Tier": "frontend",
47 "Platform": "azure"
48 }
49 },
50 {
51 "id": "aws::i-0xyz789abc123",
52 "type": "compute.vm",
53 "name": "api-server-prod-01",
54 "description": "AWS EC2 instance running API backend",
55 "provider": {
56 "name": "aws",
57 "type": "AWS::EC2::Instance",
58 "native_id": "i-0xyz789abc123",
59 "region": "us-east-1",
60 "account": "123456789012",
61 "zone": "us-east-1b"
62 },
63 "status": "active",
64 "state": "running",
65 "properties": {
66 "instance_type": "c5.xlarge",
67 "platform": "linux",
68 "image_id": "ami-0c55b159cbfafe1f0",
69 "private_ip": "10.0.2.78",
70 "public_ip": "203.0.113.10",
71 "vpc_id": "vpc-0def456",
72 "subnet_id": "subnet-0ghi789"
73 },
74 "tags": {
75 "Environment": "production",
76 "Tier": "backend",
77 "Platform": "aws"
78 }
79 },
80 {
81 "id": "azure::sql-prod-db",
82 "type": "application.database",
83 "name": "prod-sql-database",
84 "description": "Azure SQL Database for application data",
85 "provider": {
86 "name": "azure",
87 "type": "Microsoft.Sql/servers/databases",
88 "native_id": "/subscriptions/sub-001/resourceGroups/prod-rg/providers/Microsoft.Sql/servers/prod-sql-srv/databases/prod-db",
89 "region": "eastus",
90 "subscription": "sub-001"
91 },
92 "status": "active",
93 "state": "online",
94 "properties": {
95 "edition": "Standard",
96 "service_tier": "S2",
97 "max_size_bytes": 268435456000,
98 "server_name": "prod-sql-srv.database.windows.net",
99 "collation": "SQL_Latin1_General_CP1_CI_AS",
100 "zone_redundant": false
101 },
102 "tags": {
103 "Environment": "production",
104 "Engine": "mssql",
105 "Platform": "azure"
106 }
107 },
108 {
109 "id": "azure::redis-cache-prod",
110 "type": "application.cache",
111 "name": "prod-redis-cache",
112 "description": "Azure Redis Cache for session storage",
113 "provider": {
114 "name": "azure",
115 "type": "Microsoft.Cache/Redis",
116 "native_id": "/subscriptions/sub-001/resourceGroups/prod-rg/providers/Microsoft.Cache/Redis/prod-redis",
117 "region": "eastus",
118 "subscription": "sub-001"
119 },
120 "status": "active",
121 "state": "running",
122 "properties": {
123 "sku": "Standard",
124 "family": "C",
125 "capacity": 1,
126 "redis_version": "6.0",
127 "port": 6379,
128 "ssl_port": 6380,
129 "hostname": "prod-redis.redis.cache.windows.net"
130 },
131 "tags": {
132 "Environment": "production",
133 "Purpose": "session-cache",
134 "Platform": "azure"
135 }
136 }
137 ],
138 "connections": [
139 {
140 "id": "conn-frontend-to-api",
141 "type": "dependency",
142 "source": "azure::app-web-frontend",
143 "target": "aws::i-0xyz789abc123",
144 "direction": "forward",
145 "name": "Frontend to API",
146 "description": "Cross-cloud API calls from Azure frontend to AWS backend",
147 "status": "active",
148 "properties": {
149 "protocol": "https",
150 "port": 443,
151 "endpoint": "https://api.example.com/v1",
152 "authentication": "oauth2"
153 },
154 "tags": {
155 "type": "cross-cloud",
156 "critical": "true"
157 }
158 },
159 {
160 "id": "conn-api-to-db",
161 "type": "dependency",
162 "source": "aws::i-0xyz789abc123",
163 "target": "azure::sql-prod-db",
164 "direction": "forward",
165 "name": "API to Database",
166 "description": "Database connection from AWS API to Azure SQL",
167 "status": "active",
168 "properties": {
169 "protocol": "tds",
170 "port": 1433,
171 "connection_string_encrypted": true,
172 "connection_pool_size": 20
173 },
174 "tags": {
175 "type": "cross-cloud",
176 "critical": "true"
177 }
178 },
179 {
180 "id": "conn-frontend-to-cache",
181 "type": "dependency",
182 "source": "azure::app-web-frontend",
183 "target": "azure::redis-cache-prod",
184 "direction": "bidirectional",
185 "name": "Frontend session cache",
186 "description": "Session data storage and retrieval",
187 "status": "active",
188 "properties": {
189 "protocol": "redis",
190 "port": 6380,
191 "ssl": true,
192 "use_case": "session-storage"
193 }
194 },
195 {
196 "id": "conn-api-to-cache",
197 "type": "dependency",
198 "source": "aws::i-0xyz789abc123",
199 "target": "azure::redis-cache-prod",
200 "direction": "bidirectional",
201 "name": "API cache access",
202 "description": "API response caching",
203 "status": "active",
204 "properties": {
205 "protocol": "redis",
206 "port": 6380,
207 "ssl": true,
208 "use_case": "response-cache"
209 }
210 }
211 ]
212 }
213}
Participa en la comunidad
GitHub Discussions
Haz preguntas, comparte ideas y ayuda a dar forma a la especificación
Repositorio GitHub
Contribuye código, reporta problemas y envía pull requests
Formas de contribuir
Código
Construye productores/parsers para hyperscalers, plataformas cloud y sistemas IT/OT on-prem.
Documentación
Mejora guías, escribe tutoriales y casos de uso reales para ayudar a otros a adoptar OSIRIS JSON.
Testing
Valida la especificación y el esquema con topologías de infraestructura reales y casos límite.
Feedback
Reporta problemas, sugiere mejoras o propón extensiones y nuevas funcionalidades.
Herramientas
Crea SDKs, herramientas CLI, validadores, exportadores y herramientas de documentación/diagramación.
Difunde la voz
Escribe posts, da charlas, graba demos y comparte OSIRIS JSON con tu red.
Diseño y plantillas
Diseña plantillas de diagramas de alta calidad, layouts gráficos para docs y web, iconos, datasets de ejemplo y recursos reutilizables para la comunidad.
Hoja de ruta
OSIRIS JSON es impulsado por la comunidad
OSIRIS JSON nació enfrentando problemas del mundo real y sigue creciendo a través de feedback, nuevas ideas y contribuciones prácticas. Si tienes sugerencias o quieres ayudar, participa: tu aporte ayuda a dar forma tanto a la hoja de ruta como al estándar.
Apoya OSIRIS JSON
OSIRIS JSON está en sus primeros días. Ahora mismo, la adopción y el feedback importan más que la financiación. Prueba las herramientas, testéalas contra infraestructura real y cuéntanos qué falta.
Úsalo y reporta
Ejecuta un productor en tu infraestructura, valida la salida y abre un issue cuando algo falle.
Contribuye
Envía ejemplos reales, mejora la documentación o construye un productor para tu plataforma.
Corre la voz
Comparte OSIRIS con tu equipo, escribe sobre tu experiencia o menciónalo en comunidades relevantes.