¿Cómo puedo usar overlays de OpenAPI para gestionar la documentación de una API multiinquilino (multi-tenant)?

¿Cómo puedo usar overlays de OpenAPI para gestionar la documentación de una API multiinquilino (multi-tenant)? #

En una plataforma SaaS multiinquilino (multi-tenant), no todos los inquilinos (tenants) tienen acceso al mismo conjunto de capacidades de la API. Los inquilinos del nivel Enterprise pueden tener acceso a endpoints de exportación masiva y a webhooks avanzados, mientras que los del nivel Starter ven una superficie más reducida. Mantener a mano un documento OpenAPI distinto para cada nivel se vuelve rápidamente insostenible a medida que cambian los planes y los feature flags. La OpenAPI Overlay Specification te permite expresar la documentación de cada nivel como un pequeño diff respecto a un único documento base con todas las funcionalidades.

Etiquetar las operaciones restringidas por nivel en el documento base #

paths:
  /exports/bulk:
    post:
      x-plan-tier: "enterprise"
      summary: Trigger a bulk data export
  /webhooks:
    get:
      x-plan-tier: "pro"
      summary: List configured webhooks
  /orders:
    get:
      x-plan-tier: "starter"
      summary: List orders

Overlay para el nivel Starter #

El overlay del nivel Starter elimina todo lo que esté por encima de su propio nivel:

overlay: 1.0.0
info:
  title: Starter Tier Documentation Overlay
  version: 1.0.0
actions:
  - target: $.paths['/exports/bulk']
    remove: true
  - target: $.paths['/webhooks']
    remove: true

Overlay para el nivel Pro #

overlay: 1.0.0
info:
  title: Pro Tier Documentation Overlay
  version: 1.0.0
actions:
  - target: $.paths['/exports/bulk']
    remove: true

Overlay para el nivel Enterprise #

El nivel Enterprise normalmente no necesita ninguna eliminación; en cambio, su overlay puede añadir contenido adicional, como los datos de contacto de soporte dedicado:

overlay: 1.0.0
info:
  title: Enterprise Tier Documentation Overlay
  version: 1.0.0
actions:
  - target: $.info
    update:
      description: "Full API access including bulk exports and webhook management, available on the Enterprise plan."

Generar overlays por nivel a partir de la configuración de planes #

Si tu sistema de facturación o de derechos de uso (entitlements) ya define qué valores de x-plan-tier corresponden a cada plan, un script puede generar automáticamente el overlay de “eliminar todo lo que esté por encima de mi nivel” en lugar de mantenerlo a mano:

const tierOrder = ['starter', 'pro', 'enterprise'];
const myTierIndex = tierOrder.indexOf(targetTier);

for (const [path, methods] of Object.entries(spec.paths)) {
  for (const [method, operation] of Object.entries(methods)) {
    const opTier = operation['x-plan-tier'] || 'starter';
    if (tierOrder.indexOf(opTier) > myTierIndex) {
      actions.push({ target: `$.paths['${path}'].${method}`, remove: true });
    }
  }
}

Compilar la documentación por nivel #

for tier in starter pro enterprise; do
  redocly join openapi.yaml --overlay "overlays/tier.overlay.$tier.yaml" -o "dist/openapi.$tier.yaml"
done

Cada inquilino, al visitar el portal de documentación, puede ser dirigido al documento generado que corresponda a su plan actual, de modo que nunca vea endpoints a los que en realidad no puede llamar.

Mantener sincronizados los derechos de uso y la documentación #

Como la lógica del overlay por nivel puede generarse directamente a partir de la misma configuración de entitlements que impulsa la autorización en tiempo de ejecución, la documentación y el acceso real a la API se mantienen alineados automáticamente cuando cambian los planes, sin necesidad de actualizar manualmente dos lugares distintos.

Lecturas relacionadas #

Consulta ¿Qué es la OpenAPI Overlay Specification? y ¿Cómo puedo usar overlays de OpenAPI para crear subconjuntos de API específicos para socios? para una técnica relacionada de delimitación por audiencia.


Última actualización: 16 de julio de 2026.

Este sitio web no está afiliado a la OpenAPI Initiative.