Estás viendo la documentación de Apigee Edge.
Ve a la
documentación de Apigee X. info

Información sobre la política OASValidation
La política OASValidation (Validación de especificaciones de OpenAPI) te permite validar un mensaje de solicitud o respuesta entrante con una especificación de OpenAPI 3.0 (JSON o YAML). Consulta ¿Qué contenido se valida?
La política OASValidation especifica el nombre de la especificación de OpenAPI que se usará para la validación cuando se ejecute el paso en el que se adjunta la política.
La Especificación de OpenAPI se almacena como un recurso en la siguiente ubicación estándar dentro del paquete del proxy de API: apiproxy/resources/oas
.
La Especificación de OpenAPI debe tener una extensión .json
, .yml
, .yaml
.
Agrega una especificación de OpenAPI como un recurso a un paquete de proxy de API mediante la IU o la API, como se describe en Administra recursos.
¿Qué contenido se valida?
En la siguiente tabla, se resume el contenido de los mensajes de solicitud que valida la política OASValidation por componente.
Componentes | Validación de la solicitud |
---|---|
Basepath | Valida la basepath definida por el proxy de API, ignora la basepath especificada en la Especificación de OpenAPI. |
Ruta | Valida que la ruta de solicitud (menos la basepath) coincida con uno de los patrones de ruta definidos en la Especificación de OpenAPI. |
Verbo | Valida que el verbo se define para la ruta en la Especificación de OpenAPI. |
Cuerpo del mensaje de solicitud |
Nota: La política valida el cuerpo de un mensaje de solicitud respecto de la especificación de OpenAPI solo si el tipo de contenido se configura en |
Parámetros |
|
En la siguiente tabla, se resume el contenido de los mensajes de respuesta que valida la política OASValidation por componente.
Componentes | Validación de respuesta |
---|---|
Ruta | Valida que la ruta de solicitud (menos la basepath) coincida con uno de los patrones de ruta definidos en la Especificación de OpenAPI. |
Verbo | Valida que el verbo se define para la ruta en la Especificación de OpenAPI. |
Cuerpo del mensaje de respuesta |
|
Ejemplos
En los siguientes ejemplos, se muestran algunas de las formas en las que puedes usar la política OASValidation para validar mensajes con una Especificación de OpenAPI 3.0.
Valida mensajes de solicitud
En el siguiente ejemplo, la política myoaspolicy
valida el cuerpo del mensaje de solicitud en el esquema de cuerpo de mensaje de solicitud de la operación definido en la Especificación de OpenAPI my-spec.json
.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.json</OASResource> <Options> <ValidateMessageBody>true</ValidateMessageBody> </Options> <Source>request</Source> </OASValidation>
Si el cuerpo del mensaje no cumple con la especificación de OpenAPI, se muestra un error policies.oasvalidation.Failed
.
Valida parámetros
En el siguiente ejemplo, se configura la política para que falle si se especifican parámetros de encabezado, consulta o cookie en la solicitud que no se definen en la especificación de OpenAPI.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Header>false</Header> <Query>false</Query> <Cookie>false</Cookie> </AllowUnspecifiedParameters> </Options> </OASValidation>
Elemento <OASValidation>
Define la política de validación de la especificación de OpenAPI.
Valor predeterminado | Consulta la pestaña Política predeterminada, a continuación |
¿Es obligatorio? | Obligatorio |
Tipo | Objeto complejo |
Elemento principal | No disponible |
Elementos secundarios |
<DisplayName> <OASResource> <Source> <Options> <Source> |
Sintaxis
El elemento <OASValidation>
usa la siguiente sintaxis:
<OASValidation continueOnError="[true|false]" enabled="[true|false]" name="policy_name" > <!-- All OASValidation child elements are optional except OASResource --> <DisplayName>policy_display_name</DisplayName> <OASResource>validation_JSON_or_YAML</OASResource> <Options> <ValidateMessageBody>[true|false]</ValidateMessageBody> <AllowUnspecifiedParameters> <Header>[true|false]</Header> <Query>[true|false]</Query> <Cookie>[true|false]</Cookie> </AllowUnspecifiedParameters> </Options> <Source>message_to_validate</Source> </OASValidation>
Política predeterminada
En el siguiente ejemplo, se muestra la configuración predeterminada cuando agregas una política de validación de OAS a tu flujo en la IU de Apigee:
<OASValidation continueOnError="false" enabled="true" name="OpenAPI-Spec-Validation-1"> <DisplayName>OpenAPI Spec Validation-1</DisplayName> <Properties/> <Source>request</Source> <OASResource>oas://OpenAPI-Spec-Validation-1.yaml</OASResource> </OASValidation>
This element has the following attributes that are common to all policies:
Attribute | Default | Required? | Description |
---|---|---|---|
name |
N/A | Required |
The internal name of the policy. The value of the Optionally, use the |
continueOnError |
false | Optional | Set to "false" to return an error when a policy fails. This is expected behavior for most policies. Set to "true" to have flow execution continue even after a policy fails. |
enabled |
true | Optional | Set to "true" to enforce the policy. Set to "false" to "turn off" the policy. The policy will not be enforced even if it remains attached to a flow. |
async |
false | Deprecated | This attribute is deprecated. |
Referencia del elemento secundario
En esta sección, se describen los elementos secundarios de <OASValidation>
.
<DisplayName>
Use in addition to the name
attribute to label the policy in the
management UI proxy editor with a different, more natural-sounding name.
The <DisplayName>
element is common to all policies.
Default Value | n/a |
Required? | Optional. If you omit <DisplayName> , the value of the
policy's name attribute is used |
Type | String |
Parent Element | <PolicyElement> |
Child Elements | None |
The <DisplayName>
element uses the following syntax:
Syntax
<PolicyElement> <DisplayName>policy_display_name</DisplayName> ... </PolicyElement>
Example
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
The <DisplayName>
element has no attributes or child elements.
<OASResource>
Especifica la especificación de OpenAPI que se va a validar. Puedes almacenar este archivo:
- En el alcance del proxy de API en
/apiproxy/resources/oas
, en el paquete del proxy de API - En la sección
Resources
de la vista del navegador del editor de proxy de API.
Para obtener más información, consulta Administra recursos.
Puedes precisar la especificación de OpenAPI con una plantilla de mensajes, como {oas.resource.url}
.
En este caso, el valor de la variable de flujo oas.resource.url
(entre llaves) se evaluará y se sustituirá en la string de carga útil en el entorno de ejecución.
Para obtener más información, consulta Plantillas de mensajes.
Valor predeterminado | None |
¿Es obligatorio? | Obligatorio |
Tipo | String |
Elemento principal |
<OASValidation>
|
Elementos secundarios | Ninguno |
Sintaxis
El elemento <OASResource>
usa la siguiente sintaxis:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> ... </OASValidation>
Ejemplo
En el siguiente ejemplo, se hace referencia a la especificación my-spec.yaml
que se almacena en /apiproxy/resources/oas
en el paquete de proxy de API:
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> </OASValidation>
El elemento <OASResource>
no tiene atributos ni elementos secundarios.
<Options>
Configura las opciones para la política.
Valor predeterminado | n/a |
¿Es obligatorio? | Opcional |
Tipo | Tipo complejo |
Elemento principal |
<OASValidation>
|
Elementos secundarios |
<ValidateMessageBody> <AllowUnspecifiedParameters> |
Sintaxis
El elemento <Options>
usa la siguiente sintaxis:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Options> <ValidateMessageBody>[true|false]</ValidateMessageBody> <AllowUnspecifiedParameters> <Header>[true|false]</Header> <Query>[true|false]</Query> <Cookie>[true|false]</Cookie> </AllowUnspecifiedParameters> </Options> ... </OASValidation>
Ejemplo
En el siguiente ejemplo, se configuran las opciones para la política. Cada una de las opciones se describe con más detalle a continuación.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <ValidateMessageBody>false</ValidateMessageBody> <AllowUnspecifiedParameters> <Header>false</Header> <Query>false</Query> <Cookie>false</Cookie> </AllowUnspecifiedParameters> </Options> </OASValidation>
<ValidateMessageBody>
Especifica si la política debe validar el cuerpo del mensaje en el esquema de cuerpo de la solicitud de la operación en la Especificación de OpenAPI. Configúralo como true para validar el contenido del cuerpo del mensaje. Se configura en false para validar solo que el cuerpo del mensaje exista.
Puedes controlar si la ejecución del flujo continúa siguiendo un error de validación si configuras el atributo continueOnError
del elemento <OASValidation>
en verdadero.
Valor predeterminado | falso |
¿Es obligatorio? | Opcional |
Tipo | Booleano |
Elemento principal |
<Options>
|
Elementos secundarios | Ninguno |
Sintaxis
El elemento <ValidateMessageBody>
usa la siguiente sintaxis:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Options> <ValidateMessageBody>[true|false]</ValidateMessageBody> </Options> ... </OASValidation>
Ejemplo
En el siguiente ejemplo, se habilita la validación del contenido del cuerpo del mensaje:
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <ValidateMessageBody>true</ValidateMessageBody> </Options> </OASValidation>
<AllowUnspecifiedParameters>
Configura el comportamiento de la política si hay parámetros de encabezado, consulta o cookie presentes en la solicitud que no se definen en la Especificación de OpenAPI.
Valor predeterminado | n/a |
¿Es obligatorio? | Opcional |
Tipo | Tipo complejo |
Elemento principal |
<Options>
|
Elementos secundarios |
<Header> <Query> <Cookie> |
Sintaxis
El elemento <AllowUnspecifiedParameters>
usa la siguiente sintaxis:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Options> <AllowUnspecifiedParameters> <Header>[true|false]</Header> <Query>[true|false]</Query> <Cookie>[true|false]</Cookie> </AllowUnspecifiedParameters> </Options> ... </OASValidation>
Ejemplo
En el siguiente ejemplo, se configura la política para que falle si se especifican parámetros de encabezado, consulta o cookie en la solicitud que no se definen en la especificación de OpenAPI.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Header>false</Header> <Query>false</Query> <Cookie>false</Cookie> </AllowUnspecifiedParameters> </Options> </OASValidation>
<Header>
(elemento secundario de <AllowUnspecifiedParameters>
)
Configura el comportamiento de la política si hay parámetros de encabezado presentes en la solicitud que no se definen en la Especificación de OpenAPI.
Para permitir que se especifiquen parámetros de encabezado en la solicitud que no se definen en la Especificación de OpenAPI, configura este parámetro en verdadero. De lo contrario, establece este parámetro en falso para que falle la ejecución de la política.
Valor predeterminado | true |
¿Es obligatorio? | Booleano |
Tipo | Tipo complejo |
Elemento principal |
<AllowUnspecifiedParameters>
|
Elementos secundarios | Ninguno |
Sintaxis
El elemento <Header>
usa la siguiente sintaxis:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Options> <AllowUnspecifiedParameters> <Header>[true|false]</Header> </AllowUnspecifiedParameters> </Options> ... </OASValidation>
Ejemplo
En el siguiente ejemplo, se configura la política para que falle si se especifica un parámetro de encabezado en la solicitud que no se define en la Especificación de OpenAPI.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Header>false</Header> </AllowUnspecifiedParameters> </Options> </OASValidation>
<Query>
(elemento secundario de <AllowUnspecifiedParameters>
)
Configura el comportamiento de la política si hay parámetros de búsqueda presentes en la solicitud que no se definen en la Especificación de OpenAPI.
Para permitir que los parámetros de búsqueda se especifiquen en la solicitud que no están definidos en la Especificación de OpenAPI, configura este parámetro en verdadero. De lo contrario, establece este parámetro en falso para que falle la ejecución de la política.
Valor predeterminado | true |
¿Es obligatorio? | Booleano |
Tipo | Tipo complejo |
Elemento principal |
<AllowUnspecifiedParameters>
|
Elementos secundarios | Ninguno |
Sintaxis
El elemento <Query>
usa la siguiente sintaxis:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Options> <AllowUnspecifiedParameters> <Query>[true|false]</Query> </AllowUnspecifiedParameters> </Options> ... </OASValidation>
Ejemplo
En el siguiente ejemplo, se configura la política para que falle si se especifica un parámetro de búsqueda en la solicitud que no está definido en la Especificación de OpenAPI.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Query>false</Query> </AllowUnspecifiedParameters> </Options> </OASValidation>
Configura el comportamiento de la política si hay parámetros de cookie presentes en la solicitud que no se definen en la Especificación de OpenAPI.
Para permitir que los parámetros de cookies se especifiquen en la solicitud que no se definen en la Especificación de OpenAPI, configura este parámetro en verdadero. De lo contrario, establece este parámetro en falso para que falle la ejecución de la política.
Valor predeterminado | true |
¿Es obligatorio? | Booleano |
Tipo | Tipo complejo |
Elemento principal |
<AllowUnspecifiedParameters>
|
Elementos secundarios | Ninguno |
Sintaxis
El elemento <Cookie>
usa la siguiente sintaxis:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Options> <AllowUnspecifiedParameters> <Query>[true|false]</Query> </AllowUnspecifiedParameters> </Options> ... </OASValidation>
Ejemplo
En el siguiente ejemplo, se configura la política para que falle si se especifica un parámetro de búsqueda en la solicitud que no está definido en la Especificación de OpenAPI.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Cookie>false</Cookie> </AllowUnspecifiedParameters> </Options> </OASValidation>
<Source>
Mensaje JSON que se evaluará en relación con los ataques de carga útil JSON. Normalmente, este se configura como request
, ya que, por lo general, deberás evaluar las solicitudes entrantes de las apps de cliente.
Configúralo como respuesta para evaluar los mensajes de respuesta.
Configúralo como mensaje para evaluar automáticamente el mensaje de solicitud cuando la política se adjunta al flujo de solicitudes y el mensaje de respuesta cuando la política está adjunta al flujo de respuesta.
Valor predeterminado | solicitud |
¿Es obligatorio? | Opcional |
Tipo | String |
Elemento principal |
<Source>
|
Elementos secundarios | Ninguno |
Sintaxis
El elemento <Source>
usa la siguiente sintaxis:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Source>[message|request|response]</Source> ... </OASValidation>
Ejemplo
En el siguiente ejemplo, se evalúa automáticamente el mensaje de solicitud cuando la política se adjunta al flujo de solicitudes y el mensaje de respuesta cuando la política se adjunta al flujo de respuesta:
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Source>message</Source> </OASValidation>
El elemento <Source>
no tiene atributos ni elementos secundarios.
Esquemas
Un esquema XML (.xsd
) define cada tipo de política. Como referencia, los esquemas de políticas están disponibles en GitHub.
Códigos de error
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | |
---|---|---|---|
steps.oasvalidation.Failed |
500 | Request message body cannot be validated against the provided OpenAPI Specification. | |
steps.oasvalidation.SourceMessageNotAvailable |
500 |
Variable specified in the |
|
steps.oasvalidation.NotMessageVariable |
500 |
|
build |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Cause | |
---|---|---|
ResourceDoesNotExist |
OpenAPI Specification referenced in the <OASResource> element does not exist.
|
|
ResourceCompileFailed |
OpenAPI Specification that is included in the deployment contains errors that prevent it from being compiled. This generally indicates that the specification is not a well-formed OpenAPI Specification 3.0. | |
BadResourceURL |
OpenAPI Specification referenced in the <OASResource> element cannot be processed. This can occur if the file is not a JSON or YAML file or the
file URL is not specified correctly.
|
Fault variables
These variables are set when this policy triggers an error at runtime. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "ResourceDoesNotExist" |
oasvalidation.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | oasvalidation.myoaspolicy.failed = true |
Características de las especificaciones de OpenAPI admitidas
La política OASValidation admite las funciones de especificación de OpenAPI que se resumen en la siguiente tabla, por categoría. También se enumeran las características que no se admiten.
Categoría | Compatible | No compatible |
---|---|---|
Formatos de tipos de datos | boolean date date-time double float int32/int64 ipv4/ipv6 md5 sha1/sha256/sha512 string uri uri-template uuid |
binary byte password |
Objeto discriminante | mapping propertyName |
N/A |
Objeto de tipo de medio | schema | encoding example examples |
Objeto de operaciones | parameters requestBody responses security (partial support) |
callbacks deprecated servers |
Objeto de parámetros | allowEmptyValue in ( query , header , path )required responses schema style ( deepObject , form , formmatrix , label , pipeDelimited , simple , spaceDelimited )Nota: deepObject solo admite parámetros de string. No se admiten arreglos ni objetos anidados. |
allowReserved deprecated example examples content |
Objeto de rutas | delete get head options parameters patch post put trace variables |
servidores |
Objeto de cuerpo de solicitud | application/json application/hal+json application/x-www-form-urlencoded (objeto encoding no admitido)content required |
application/xml multipart/form-data text/plain text/xml |
Objeto de respuesta | application/json application/hal+json application/x-www-form-urlencoded (objeto encoding no admitido)content headers |
application/xml links text/plain text/xml |
Objeto de respuestas | predeterminado Código de estado HTTP |
N/A |
Objeto de esquema | $ref additionalProperties (solo variante de marca booleana) allOf (se ignora si additionalProperties es false )anyOf enum exclusiveMaximum/exclusiveMinimum format items maximum/minimum maxItems/minItems maxLength/minLength maxProperties/minProperties multipleOf not nullable oneOf pattern properties required title type uniqueItems |
deprecated example readOnly writeOnly xml |
Objeto de esquema de seguridad | in (header , query ) (se ignora si type es http )name type ( apiKey , http )
|
bearerFormat flows openIdConnectUrl scheme |
Objeto del servidor | url variables |
Definiciones de varios servidores |