Parameter | Description |
Condition | Conditions are used to specify when the policy has to be executed. You can have multiple conditions with logical operators. Available values are: AND. Microgateway transforms the requests that comply with all the configured conditions. OR. This is selected by default. Microgateway transforms the requests that comply with at least one configured condition. Various conditions you can define are: Variable: Specifies the variable type with a syntax as follows: ${PARAMTYPE} : This is applicable for variables of string type - path, payload, httpMethod. For example: ${request.path} ${PARAMTYPE.paramName} : This is applicable for map types - query and headers and also applicable for path. For example: ${request.query.var1}, ${request.header.Content-Type}, ${request.path.name} ${PARAMTYPE.QUERYTYPE[queryValue]} : This syntax is applicable for payload and path. regex can be applied on path while XPath, JSONPath and regex can be applied on payload. For example: ${request.payload.xpath[//ns:emp/ns:empName]} where //ns:emp/ns:empName is the xpath to be applied on the payload if contentType is application/xml ${request.payload.jsonPath[$.cardDetails.number]} where $.cardDetails.number is the jsonPath to be applied on the payload if contentType is application/json ${request.payload.regex[[0-9]+]} where [0-9]+ is the regex to be applied on the payload if contentType is text/plain If you want Microgateway to apply xpath, jsonPath, regex based on Content-Type of the payload, use the following common syntax: ${PARAMTYPE.QUERYTYPE[queryValue] || PARAMTYPE.QUERYTYPE2[queryValue2] || ...} For example: ${request.payload.xpath[//ns:emp/ns:empName] || request.payload.jsonPath[$.cardDetails.number]} This applies xpath for application/xml and jsonPath for application/json ${request.payload.xpath[//ns:emp/ns:empName] || request.payload.jsonPath[$.cardDetails.number] || request.payload.regex[[0-9]+]} This applies xpath for application/xml, jsonPath for application/json, and regex for text/plain. Operator: Specifies the operator to use to relate variable and the value provided. You can select one of the following: Equals Equals ignore case Not equals Contains Exists Value: Specifies a value with a syntax as follows: PLAIN VALUE, for example, application/json ${PARAMTYPE.paramName} ${PARAMTYPE.QUERYTYPE[queryValue]} ${PARAMTYPE.QUERYTYPE[queryValue] || PARAMTYPE.QUERYTYPE2[queryValue2] || ...} |
Transformation Configuration: Specifies various transformations to be configured. | |
Header/Query/Path Transformation | Specifies the Header, Query or path transformation to be configured for incoming requests. Various configurations you can define are: Variable. Specifies the variable type with a syntax as follows: ${PARAMTYPE}. This is applicable for variables of string type - path, payload, httpMethod. For example: ${request.path} ${PARAMTYPE.paramName}. This is applicable for map types - query and headers and also applicable for path. For example: ${request.query.var1}, ${request.header.Content-Type}, ${request.path.name} ${PARAMTYPE.QUERYTYPE[queryValue]}. This syntax is applicable for payload and path. regex can be applied on path while XPath, JSONPath and regex can be applied on payload. For example: ${request.payload.xpath[//ns:emp/ns:empName]} where //ns:emp/ns:empName is the xpath to be applied on the payload if contentType is application/xml ${request.payload.jsonPath[$.cardDetails.number]} where $.cardDetails.number is the jsonPath to be applied on the payload if contentType is application/xml ${request.payload.regex[[0-9]+]} where [0-9]+ is the regex to be applied on the payload if contentType is anything If you want Microgateway to apply xpath, jsonPath, regex based on Content-Type of the payload, use the following common syntax: ${PARAMTYPE.QUERYTYPE[queryValue] || PARAMTYPE.QUERYTYPE2[queryValue2] || ...} For example: ${request.payload.xpath[//ns:emp/ns:empName] || request.payload.jsonPath[$.cardDetails.number]} This applies xpath for application/xml and jsonPath for application/json ${request.payload.xpath[//ns:emp/ns:empName] || request.payload.jsonPath[$.cardDetails.number] || request.payload.regex[[0-9]+]} This applies xpath for application/xml, jsonPath for application/json, and regex for text/xml. Value. Specifies a value with a syntax as follows: PLAIN VALUE, for example, application/json ${PARAMTYPE.paramName} ${PARAMTYPE.QUERYTYPE[queryValue]} ${PARAMTYPE.QUERYTYPE[queryValue] || PARAMTYPE.QUERYTYPE2[queryValue2] || ...} |
Method transformation for REST API | Specifies the method transformation to be configured for incoming requests. You can have any of the HTTP Method listed: GET POST PUT DELETE HEAD CUSTOM Note: When CUSTOM is selected, the HTTP method in incoming request is sent to the native service. When other methods are selected, the selected method is used in the request sent to the native service. Only Method Transformation happens when configured, but you have to take care of adding payload during transformations involving method change like GET to POST, and so on. |
Payload Transformation | Specifies the payload transformation to be configured for incoming requests. Specifies the following information: An xslt document that contains the following information: XSLT file. Specifies the XSLT file used to transform the request messages as required. Feature Name. Specifies the name of the XSLT feature. Feature value. Specifies the value of the XSLT feature. You can have multiple XSLT features and xslt documents. |
Transformation Metadata: Specifies the metadata for transformation of the incoming requests. For example, the namespaces configured in this section can be used when you provide the syntax for XPath ${request.payload.xpath} For example: ${request.payload.xpath[//ns:emp/ns:empName]} | |
Namespace | Specifies the namespace information to be configured for transformation. Provide the following information: Namespace Prefix. The namespace prefix of the payload expression to be validated. Namespace URI. The namespace URI of the payload expression to be validated. Note: You can have multiple namespace prefix and URI. |