Documentación pública · v1.0.0

03 · OpenAPI 3.1

MSD-03-OAPI · OpenAPI 3.1

Una única especificación. Todo el ecosistema.

Toda la operación. Una sola plataforma.


Objetivo del capítulo

Definir OpenAPI 3.1 como la fuente oficial del contrato técnico de Roustix.

Toda la documentación interactiva, los SDK oficiales, el CLI, las colecciones Postman, el API Explorer y futuras herramientas se generan a partir de esta especificación.

AudienciaDocumento
PersonasMAG — describe la API
HerramientasOpenAPI — describe exactamente la misma API

MSD-02 · Developer Portal


1 · Filosofía

OpenAPI no es documentación adicional.

Es la representación machine-readable del contrato MAG.

  • Toda herramienta debe consumir OpenAPI.
  • Nunca redefinir endpoints manualmente en SDK, Explorer o colecciones.

2 · Fuente única de verdad

MAG
      │
      ▼
OpenAPI 3.1
      │
 ┌────┼────┬─────┬─────┐
 ▼    ▼    ▼     ▼     ▼
SDK Explorer CLI Postman Docs
ReglaDescripción
MAG → OpenAPIMAG define el contrato; OpenAPI lo codifica
OpenAPI → herramientasSDK, Explorer, CLI y Postman se generan
Sin bifurcaciónUna sola especificación por versión API

3 · Ubicación

ArtefactoRuta
Repositoriodocs/api/openapi.v1.yaml
Runtime JSONGET /api/v1/openapi.json
Runtime YAMLGET /api/v1/openapi.yaml
Portal/msd/openapi → especificación en vivo
python run.py
curl http://127.0.0.1:5000/api/v1/openapi.json

4 · Versión

openapi: 3.1.0
info:
  title: Roustix API
  version: 1.0.0
CampoSignificado
openapiVersión del formato OpenAPI (3.1.0)
info.versionVersión del contrato API (alineada a MAG v1.0)

5 · Organización

Estructura de openapi.v1.yaml:

openapi.v1.yaml
├── info
├── servers
├── security
├── tags
├── paths
└── components
    ├── schemas
    ├── responses
    ├── parameters
    └── securitySchemes

Cada sección tiene responsabilidad única — sin duplicar definiciones fuera de components/.


6 · Relación con MAG

Cada capítulo MAG alimenta una parte de OpenAPI.

MAGOpenAPI
MAG-02 · JWTsecuritySchemes · /auth/login
MAG-03 · Multi-tenantContexto tenant en schemas · /me
MAG-04 · Recursospaths · tags por módulo
MAG-05 · ConvencionesNaming · snake_case en schemas
MAG-06 · Errorescomponents/responses · ErrorResponse
MAG-07 · Versionadoinfo.version · openapi.v1.yaml
MAG-08 · WebhooksRoadmap · callbacks

Regla: si un endpoint existe en MAG-04, debe existir en OpenAPI antes de publicarse.


7 · Servidores

servers:
    description: Producción
  - url: http://127.0.0.1:5000/api/v1
    description: Desarrollo local

Los clientes y el API Explorer seleccionan servidor según entorno.


8 · Seguridad

JWT Bearer — referencia directa a MAG-02.

components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

Rutas públicas (login) declaran security: [].


9 · Tags

Tags oficiales alineados a módulos MAG-04:

TagMódulo
Authenticationauth · /me
Maintenancemaintenance/*
Inventoryinventory/*
Purchasingpurchasing/*
Salessales/*
CRMcrm/*
Adminadmin/*

Cada operación en paths usa exactamente un tag principal.


10 · Schemas

Todos los modelos públicos viven en components/schemas.

SchemaDescripción
AssetActivo de mantenimiento
WorkOrderOrden de trabajo
ProductProducto de inventario
UserUsuario
ErrorResponseFormato error MAG-06
Paginationmeta.pagination

Ejemplo — Asset:

Asset:
  type: object
  properties:
    asset_id:
      type: integer
    asset_code:
      type: string
    name:
      type: string
    status:
      type: string
      enum: [operational, maintenance, inactive]
    critical:
      type: boolean

Recursos planificados pueden incluir x-mag-status: planned hasta implementación en código.


11 · Responses

Respuestas reutilizables en components/responses — alineadas con MAG-06:

ResponseHTTPCódigo ejemplo
Unauthorized401UNAUTHORIZED
Forbidden403FORBIDDEN
NotFound404RESOURCE_NOT_FOUND
ValidationError422VALIDATION_ERROR
RateLimitExceeded429RATE_LIMIT_EXCEEDED
InternalError500INTERNAL_ERROR

Todas referencian el schema ErrorResponse.


12 · Generación

OpenAPI genera automáticamente:

ArtefactoCapítulo MSD
SDK PythonMSD-04
SDK JavaScriptMSD-04
SDK PHPMSD-04
API ExplorerMSD-06
PostmanMSD-08
InsomniaMSD-08

Herramientas previstas: OpenAPI Generator · Speakeasy · openapi-typescript


13 · Validación

Pipeline CI (objetivo MSD v1.0):

OpenAPI
   │
   ▼
Spectral        ← reglas MAG-05 / MAG-06
   │
   ▼
Prism           ← mock / contract tests
   │
   ▼
CI
   │
   ▼
Deploy

El contrato siempre debe validar antes del despliegue.

HerramientaRol
SpectralLint del YAML · naming · responses
PrismMock server · contract testing
Estado: pipeline documentado · CI en roadmap MSD v1.0.

14 · Compatibilidad

OpenAPI sigue exactamente MAG-07:

openapi.v1.yaml  →  API v1
openapi.v2.yaml  →  API v2   (futuro)

Nunca mezclar versiones en un mismo archivo.

CambioAcción
Compatible en v1Patch info.version · mismo openapi.v1.yaml
BreakingNuevo archivo openapi.v2.yaml

15 · Roadmap OpenAPI

CapacidadEstado
Webhooks en spec📋 MAG-08 · callbacks OpenAPI 3.1
Callbacks📋 Eventos outbound
AsyncAPIRoadmap · eventos asíncronos
GraphQL GatewayEvaluación

16 · Buenas prácticas

#Regla
1Nunca editar la documentación HTML de referencia directamente
2OpenAPI es la fuente oficial para herramientas
3MAG explica; OpenAPI describe
4Todo SDK proviene de OpenAPI
5Todo endpoint debe existir en OpenAPI antes de publicarse
6Reutilizar components/responses — no duplicar errores
7Mantener openapi.v1.yaml sincronizado con MAG-04

Filosofía del capítulo

OpenAPI convierte el contrato de Roustix en un estándar consumible por personas y herramientas. Es la fuente única de verdad sobre la API y el punto de partida de todo el ecosistema de desarrollo.

Así como MAG-04 fue el documento central del, MSD-03 es el documento central del.