{
  "encassConfigs": [
    {
      "goid": "4268828a5f4c4128b2e028795e26b0ac",
      "guid": "bd6649ad-4e0a-4c2c-9cf6-a26e8010fc5c",
      "name": "mTLSValidation1.0",
      "description": "Validates an incoming API key (HTTP header or query parameter), enforces SSL/TLS transport, and verifies that the request's mutual-TLS client certificate matches a certificate published in the API key's CustomMetaData JWKS (x5c[0]).",
      "policyName": "mTLSValidation1.0",
      "encassArgs": [
        {
          "name": "portal.managed.service.apiId",
          "type": "STRING",
          "ordinal": 1,
          "guiPrompt": false
        }
      ],
      "encassResults": [
        {
          "name": "apiKeyRecord.accountPlanMappingId",
          "type": "STRING"
        },
        {
          "name": "apiKeyRecord.accountPlanMappingName",
          "type": "STRING"
        },
        {
          "name": "apiKeyRecord.id",
          "type": "STRING"
        },
        {
          "name": "apiKeyRecord.key",
          "type": "STRING"
        },
        {
          "name": "apiKeyRecord.plan",
          "type": "STRING"
        },
        {
          "name": "apiKeyRecord.status",
          "type": "STRING"
        },
        {
          "name": "errorMsg",
          "type": "STRING"
        }
      ],
      "properties": [
        {
          "name": "paletteFolder",
          "value": "customAssertions"
        },
        {
          "name": "passMetricsToParent",
          "value": "false"
        },
        {
          "name": "allowTracing",
          "value": "false"
        }
      ]
    }
  ],
  "policies": [
    {
      "goid": "34ce44eda91048f28ebfbaa0ab8216b3",
      "guid": "65b3f98e-0187-41ba-88f6-762a72c02c92",
      "name": "mTLSValidation1.0",
      "policyType": "FRAGMENT",
      "enabled": true,
      "folderPath": "/Portal Templates",
      "soap": false,
      "policy": {
        "xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<wsp:Policy xmlns:L7p=\"http://www.layer7tech.com/ws/policy\" xmlns:wsp=\"http://schemas.xmlsoap.org/ws/2002/12/policy\">\n    <wsp:All wsp:Usage=\"Required\">\n        <L7p:SetVariable>\n            <L7p:Base64Expression stringValue=\"QVBJX0tFWQ==\"/>\n            <L7p:VariableToSet stringValue=\"portal.analytics.authType\"/>\n        </L7p:SetVariable>\n        <L7p:SetVariable>\n            <L7p:Base64Expression stringValue=\"JHtwb3J0YWwubWFuYWdlZC5zZXJ2aWNlLmFwaUlkfQ==\"/>\n            <L7p:VariableToSet stringValue=\"portal.analytics.api.uuid\"/>\n        </L7p:SetVariable>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"// 1. Require SSL or TLS Transport\"/>\n        </L7p:CommentAssertion>\n        <wsp:OneOrMore wsp:Usage=\"Required\">\n            <L7p:SslAssertion/>\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"U1NML1RMUyB0cmFuc3BvcnQgaXMgcmVxdWlyZWQ=\"/>\n                    <L7p:VariableToSet stringValue=\"errorMsg\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"NDAz\"/>\n                    <L7p:VariableToSet stringValue=\"portal.analytics.response.code\"/>\n                </L7p:SetVariable>\n                <L7p:CustomizeErrorResponse>\n                    <L7p:Content stringValue=\"${errorMsg}\"/>\n                    <L7p:ExtraHeaders nameValuePairArray=\"included\"/>\n                    <L7p:HttpStatus stringValue=\"403\"/>\n                </L7p:CustomizeErrorResponse>\n                <L7p:FalseAssertion/>\n            </wsp:All>\n        </wsp:OneOrMore>\n        <L7p:SetVariable>\n            <L7p:Base64Expression stringValue=\"\"/>\n            <L7p:VariableToSet stringValue=\"errorMsg\"/>\n        </L7p:SetVariable>\n        <L7p:SetVariable>\n            <L7p:Base64Expression stringValue=\"\"/>\n            <L7p:VariableToSet stringValue=\"lookupApiKey\"/>\n        </L7p:SetVariable>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"// 2. Pick API key from request (header preferred, then query parameter)\"/>\n        </L7p:CommentAssertion>\n        <wsp:OneOrMore wsp:Usage=\"Required\">\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${request.http.header.apikey}\"/>\n                    <L7p:Operator operatorNull=\"null\"/>\n                    <L7p:Predicates predicates=\"included\">\n                        <L7p:item dataType=\"included\">\n                            <L7p:Type variableDataType=\"string\"/>\n                        </L7p:item>\n                        <L7p:item binary=\"included\">\n                            <L7p:CaseSensitive booleanValue=\"false\"/>\n                            <L7p:Negated booleanValue=\"true\"/>\n                            <L7p:Operator operator=\"EMPTY\"/>\n                            <L7p:RightValue stringValue=\"\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtyZXF1ZXN0Lmh0dHAuaGVhZGVyLmFwaWtleX0=\"/>\n                    <L7p:VariableToSet stringValue=\"lookupApiKey\"/>\n                </L7p:SetVariable>\n            </wsp:All>\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${request.http.parameter.apikey}\"/>\n                    <L7p:Operator operatorNull=\"null\"/>\n                    <L7p:Predicates predicates=\"included\">\n                        <L7p:item dataType=\"included\">\n                            <L7p:Type variableDataType=\"string\"/>\n                        </L7p:item>\n                        <L7p:item binary=\"included\">\n                            <L7p:CaseSensitive booleanValue=\"false\"/>\n                            <L7p:Negated booleanValue=\"true\"/>\n                            <L7p:Operator operator=\"EMPTY\"/>\n                            <L7p:RightValue stringValue=\"\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtyZXF1ZXN0Lmh0dHAucGFyYW1ldGVyLmFwaWtleX0=\"/>\n                    <L7p:VariableToSet stringValue=\"lookupApiKey\"/>\n                </L7p:SetVariable>\n            </wsp:All>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"QVBJIGtleSBpcyBtaXNzaW5nIGZyb20gcmVxdWVzdA==\"/>\n                <L7p:VariableToSet stringValue=\"errorMsg\"/>\n            </L7p:SetVariable>\n        </wsp:OneOrMore>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"// 3. Look up API key in the Portal\"/>\n        </L7p:CommentAssertion>\n        <wsp:OneOrMore wsp:Usage=\"Required\">\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${errorMsg}\"/>\n                    <L7p:Operator operatorNull=\"null\"/>\n                    <L7p:Predicates predicates=\"included\">\n                        <L7p:item dataType=\"included\">\n                            <L7p:Type variableDataType=\"string\"/>\n                        </L7p:item>\n                        <L7p:item binary=\"included\">\n                            <L7p:Operator operator=\"EMPTY\"/>\n                            <L7p:RightValue stringValue=\"\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <L7p:Encapsulated>\n                    <L7p:EncapsulatedAssertionConfigGuid stringValue=\"b74008fa-97b2-4556-9b5b-30e057641570\"/>\n                    <L7p:EncapsulatedAssertionConfigName stringValue=\"Portal Look Up API Key (Generic)\"/>\n                    <L7p:Parameters mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"apikey\"/>\n                            <L7p:value stringValue=\"${lookupApiKey}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"serviceid\"/>\n                            <L7p:value stringValue=\"${portal.managed.service.apiId}\"/>\n                        </L7p:entry>\n                    </L7p:Parameters>\n                </L7p:Encapsulated>\n                <wsp:OneOrMore wsp:Usage=\"Required\">\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:ComparisonAssertion>\n                            <L7p:CaseSensitive booleanValue=\"false\"/>\n                            <L7p:Expression1 stringValue=\"${apiKeyRecord.found}\"/>\n                            <L7p:Operator operatorNull=\"null\"/>\n                            <L7p:Predicates predicates=\"included\">\n                                <L7p:item dataType=\"included\">\n                                    <L7p:Type variableDataType=\"string\"/>\n                                </L7p:item>\n                                <L7p:item binary=\"included\">\n                                    <L7p:RightValue stringValue=\"true\"/>\n                                </L7p:item>\n                            </L7p:Predicates>\n                        </L7p:ComparisonAssertion>\n                        <L7p:ComparisonAssertion>\n                            <L7p:CaseSensitive booleanValue=\"false\"/>\n                            <L7p:Expression1 stringValue=\"${apiKeyRecord.service}\"/>\n                            <L7p:Operator operatorNull=\"null\"/>\n                            <L7p:Predicates predicates=\"included\">\n                                <L7p:item dataType=\"included\">\n                                    <L7p:Type variableDataType=\"string\"/>\n                                </L7p:item>\n                                <L7p:item binary=\"included\">\n                                    <L7p:RightValue stringValue=\"${portal.managed.service.apiId}\"/>\n                                </L7p:item>\n                            </L7p:Predicates>\n                        </L7p:ComparisonAssertion>\n                        <L7p:ComparisonAssertion>\n                            <L7p:CaseSensitive booleanValue=\"false\"/>\n                            <L7p:Expression1 stringValue=\"${apiKeyRecord.status}\"/>\n                            <L7p:Operator operatorNull=\"null\"/>\n                            <L7p:Predicates predicates=\"included\">\n                                <L7p:item dataType=\"included\">\n                                    <L7p:Type variableDataType=\"string\"/>\n                                </L7p:item>\n                                <L7p:item binary=\"included\">\n                                    <L7p:RightValue stringValue=\"active\"/>\n                                </L7p:item>\n                            </L7p:Predicates>\n                        </L7p:ComparisonAssertion>\n                    </wsp:All>\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"QVBJIGtleSBub3QgZm91bmQgb3IgaW52YWxpZA==\"/>\n                        <L7p:VariableToSet stringValue=\"errorMsg\"/>\n                    </L7p:SetVariable>\n                </wsp:OneOrMore>\n            </wsp:All>\n            <L7p:TrueAssertion/>\n        </wsp:OneOrMore>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"// 4. Require client certificate (mTLS) and validate it matches the certificate(s) bound to the API key\"/>\n        </L7p:CommentAssertion>\n        <wsp:OneOrMore wsp:Usage=\"Required\">\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${errorMsg}\"/>\n                    <L7p:Operator operatorNull=\"null\"/>\n                    <L7p:Predicates predicates=\"included\">\n                        <L7p:item dataType=\"included\">\n                            <L7p:Type variableDataType=\"string\"/>\n                        </L7p:item>\n                        <L7p:item binary=\"included\">\n                            <L7p:Operator operator=\"EMPTY\"/>\n                            <L7p:RightValue stringValue=\"\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <wsp:OneOrMore wsp:Usage=\"Required\">\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:SslAssertion>\n                            <L7p:RequireClientAuthentication booleanValue=\"true\"/>\n                        </L7p:SslAssertion>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHtyZXF1ZXN0LnNzbC5jbGllbnRDZXJ0aWZpY2F0ZS50aHVtYnByaW50U0hBMjU2fQ==\"/>\n                            <L7p:VariableToSet stringValue=\"request_client_cert_thumbprint\"/>\n                        </L7p:SetVariable>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHthcGlLZXlSZWNvcmQueG1sfQ==\"/>\n                            <L7p:ContentType stringValue=\"text/xml; charset=utf-8\"/>\n                            <L7p:DataType variableDataType=\"message\"/>\n                            <L7p:VariableToSet stringValue=\"recordXml\"/>\n                        </L7p:SetVariable>\n                        <L7p:ResponseXpathAssertion>\n                            <L7p:VariablePrefix stringValue=\"apikeyCustomMetaData\"/>\n                            <L7p:XmlMsgSrc stringValue=\"recordXml\"/>\n                            <L7p:XpathExpression xpathExpressionValue=\"included\">\n                                <L7p:Expression stringValue=\"/l7:ApiKey/l7:CustomMetaData\"/>\n                                <L7p:Namespaces mapValue=\"included\">\n                                    <L7p:entry>\n                                        <L7p:key stringValue=\"s\"/>\n                                        <L7p:value stringValue=\"http://schemas.xmlsoap.org/soap/envelope/\"/>\n                                    </L7p:entry>\n                                    <L7p:entry>\n                                        <L7p:key stringValue=\"l7\"/>\n                                        <L7p:value stringValue=\"http://ns.l7tech.com/2012/04/api-management\"/>\n                                    </L7p:entry>\n                                </L7p:Namespaces>\n                                <L7p:XpathVersion xpathVersion=\"XPATH_1_0\"/>\n                            </L7p:XpathExpression>\n                        </L7p:ResponseXpathAssertion>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHthcGlrZXlDdXN0b21NZXRhRGF0YS5yZXN1bHR9\"/>\n                            <L7p:ContentType stringValue=\"application/json; charset=utf-8\"/>\n                            <L7p:DataType variableDataType=\"message\"/>\n                            <L7p:VariableToSet stringValue=\"customMetaDataJson\"/>\n                        </L7p:SetVariable>\n                        <L7p:EvaluateJsonPathExpressionV2>\n                            <L7p:Evaluator stringValue=\"JsonPath\"/>\n                            <L7p:Expression stringValue=\"$.jwks\"/>\n                            <L7p:OtherTargetMessageVariable stringValue=\"customMetaDataJson\"/>\n                            <L7p:Target target=\"OTHER\"/>\n                            <L7p:VariablePrefix stringValue=\"customMetaDataJsonJWKS\"/>\n                        </L7p:EvaluateJsonPathExpressionV2>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHtjdXN0b21NZXRhRGF0YUpzb25KV0tTLnJlc3VsdH0=\"/>\n                            <L7p:ContentType stringValue=\"application/json; charset=utf-8\"/>\n                            <L7p:DataType variableDataType=\"message\"/>\n                            <L7p:VariableToSet stringValue=\"customMetaDataJWKSJson\"/>\n                        </L7p:SetVariable>\n                        <L7p:EvaluateJsonPathExpressionV2>\n                            <L7p:Evaluator stringValue=\"JsonPath\"/>\n                            <L7p:Expression stringValue=\"$.keys\"/>\n                            <L7p:OtherTargetMessageVariable stringValue=\"customMetaDataJWKSJson\"/>\n                            <L7p:Target target=\"OTHER\"/>\n                            <L7p:VariablePrefix stringValue=\"jwks_keys\"/>\n                        </L7p:EvaluateJsonPathExpressionV2>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"ZmFsc2U=\"/>\n                            <L7p:VariableToSet stringValue=\"certificateValidated\"/>\n                        </L7p:SetVariable>\n                        <L7p:ForEachLoop L7p:Usage=\"Required\" loopVariable=\"jwks_keys.results\" variablePrefix=\"jwks_key\">\n                            <wsp:OneOrMore wsp:Usage=\"Required\">\n                                <wsp:All wsp:Usage=\"Required\">\n                                    <L7p:SetVariable>\n                                        <L7p:Base64Expression stringValue=\"JHtqd2tzX2tleS5jdXJyZW50fQ==\"/>\n                                        <L7p:ContentType stringValue=\"application/json; charset=utf-8\"/>\n                                        <L7p:DataType variableDataType=\"message\"/>\n                                        <L7p:VariableToSet stringValue=\"jwks_key_json\"/>\n                                    </L7p:SetVariable>\n                                    <L7p:EvaluateJsonPathExpressionV2>\n                                        <L7p:Evaluator stringValue=\"JsonPath\"/>\n                                        <L7p:Expression stringValue=\"x5c[0]\"/>\n                                        <L7p:OtherTargetMessageVariable stringValue=\"jwks_key_json\"/>\n                                        <L7p:Target target=\"OTHER\"/>\n                                        <L7p:VariablePrefix stringValue=\"clientCertificate\"/>\n                                    </L7p:EvaluateJsonPathExpressionV2>\n                                    <L7p:EncodeDecode>\n                                        <L7p:CharacterEncoding stringValueNull=\"null\"/>\n                                        <L7p:SourceVariableName stringValue=\"clientCertificate.result\"/>\n                                        <L7p:TargetDataType variableDataType=\"cert\"/>\n                                        <L7p:TargetVariableName stringValue=\"clientX5Cert\"/>\n                                        <L7p:TransformType transformType=\"BASE64_DECODE\"/>\n                                    </L7p:EncodeDecode>\n                                    <L7p:CertificateAttributes>\n                                        <L7p:SourceVariable stringValue=\"clientX5Cert\"/>\n                                        <L7p:SourceVariableEnabled booleanValue=\"true\"/>\n                                    </L7p:CertificateAttributes>\n                                    <L7p:ComparisonAssertion>\n                                        <L7p:CaseSensitive booleanValue=\"true\"/>\n                                        <L7p:Expression1 stringValue=\"${certificate.thumbprintSHA256}\"/>\n                                        <L7p:Operator operatorNull=\"null\"/>\n                                        <L7p:Predicates predicates=\"included\">\n                                            <L7p:item dataType=\"included\">\n                                                <L7p:Type variableDataType=\"string\"/>\n                                            </L7p:item>\n                                            <L7p:item binary=\"included\">\n                                                <L7p:CaseSensitive booleanValue=\"true\"/>\n                                                <L7p:RightValue stringValue=\"${request_client_cert_thumbprint}\"/>\n                                            </L7p:item>\n                                        </L7p:Predicates>\n                                    </L7p:ComparisonAssertion>\n                                    <L7p:SetVariable>\n                                        <L7p:Base64Expression stringValue=\"dHJ1ZQ==\"/>\n                                        <L7p:VariableToSet stringValue=\"certificateValidated\"/>\n                                    </L7p:SetVariable>\n                                    <L7p:SetVariable>\n                                        <L7p:Base64Expression stringValue=\"dHJ1ZQ==\"/>\n                                        <L7p:VariableToSet stringValue=\"jwks_key.break\"/>\n                                    </L7p:SetVariable>\n                                </wsp:All>\n                                <L7p:TrueAssertion/>\n                            </wsp:OneOrMore>\n                        </L7p:ForEachLoop>\n                        <L7p:ComparisonAssertion>\n                            <L7p:CaseSensitive booleanValue=\"true\"/>\n                            <L7p:Expression1 stringValue=\"${certificateValidated}\"/>\n                            <L7p:Operator operatorNull=\"null\"/>\n                            <L7p:Predicates predicates=\"included\">\n                                <L7p:item dataType=\"included\">\n                                    <L7p:Type variableDataType=\"string\"/>\n                                </L7p:item>\n                                <L7p:item binary=\"included\">\n                                    <L7p:CaseSensitive booleanValue=\"true\"/>\n                                    <L7p:RightValue stringValue=\"true\"/>\n                                </L7p:item>\n                            </L7p:Predicates>\n                        </L7p:ComparisonAssertion>\n                    </wsp:All>\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"SW52YWxpZCBjbGllbnQgY2VydGlmaWNhdGU=\"/>\n                        <L7p:VariableToSet stringValue=\"errorMsg\"/>\n                    </L7p:SetVariable>\n                </wsp:OneOrMore>\n            </wsp:All>\n            <L7p:TrueAssertion/>\n        </wsp:OneOrMore>\n        <wsp:OneOrMore wsp:Usage=\"Required\">\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${errorMsg}\"/>\n                    <L7p:Operator operatorNull=\"null\"/>\n                    <L7p:Predicates predicates=\"included\">\n                        <L7p:item dataType=\"included\">\n                            <L7p:Type variableDataType=\"string\"/>\n                        </L7p:item>\n                        <L7p:item binary=\"included\">\n                            <L7p:Operator operator=\"EMPTY\"/>\n                            <L7p:RightValue stringValue=\"\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHthcGlLZXlSZWNvcmQuaWR9\"/>\n                    <L7p:VariableToSet stringValue=\"portal.analytics.apikey\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHthcGlLZXlSZWNvcmQuaWR9\"/>\n                    <L7p:VariableToSet stringValue=\"portal.analytics.application.uuid\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHthcGlLZXlSZWNvcmQubGFiZWx9\"/>\n                    <L7p:VariableToSet stringValue=\"portal.analytics.application.name\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHthcGlLZXlSZWNvcmQuYWNjb3VudFBsYW5NYXBwaW5nSWR9\"/>\n                    <L7p:VariableToSet stringValue=\"portal.analytics.organization.uuid\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHthcGlLZXlSZWNvcmQuYWNjb3VudFBsYW5NYXBwaW5nTmFtZX0=\"/>\n                    <L7p:VariableToSet stringValue=\"portal.analytics.organization.name\"/>\n                </L7p:SetVariable>\n            </wsp:All>\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"NDAx\"/>\n                    <L7p:VariableToSet stringValue=\"portal.analytics.response.code\"/>\n                </L7p:SetVariable>\n            </wsp:All>\n        </wsp:OneOrMore>\n        <L7p:ExportVariables>\n            <L7p:ExportedVars stringArrayValue=\"included\">\n                <L7p:item stringValue=\"apiKeyRecord.accountPlanMappingId\"/>\n                <L7p:item stringValue=\"apiKeyRecord.accountPlanMappingName\"/>\n                <L7p:item stringValue=\"apiKeyRecord.id\"/>\n                <L7p:item stringValue=\"apiKeyRecord.key\"/>\n                <L7p:item stringValue=\"apiKeyRecord.plan\"/>\n                <L7p:item stringValue=\"apiKeyRecord.status\"/>\n                <L7p:item stringValue=\"errorMsg\"/>\n                <L7p:item stringValue=\"portal.analytics.authType\"/>\n                <L7p:item stringValue=\"portal.analytics.api.uuid\"/>\n                <L7p:item stringValue=\"portal.analytics.apikey\"/>\n                <L7p:item stringValue=\"portal.analytics.application.uuid\"/>\n                <L7p:item stringValue=\"portal.analytics.application.name\"/>\n                <L7p:item stringValue=\"portal.analytics.organization.uuid\"/>\n                <L7p:item stringValue=\"portal.analytics.organization.name\"/>\n                <L7p:item stringValue=\"portal.analytics.response.code\"/>\n            </L7p:ExportedVars>\n        </L7p:ExportVariables>\n        <wsp:OneOrMore wsp:Usage=\"Required\">\n            <L7p:ComparisonAssertion>\n                <L7p:CaseSensitive booleanValue=\"false\"/>\n                <L7p:Expression1 stringValue=\"${errorMsg}\"/>\n                <L7p:Operator operatorNull=\"null\"/>\n                <L7p:Predicates predicates=\"included\">\n                    <L7p:item dataType=\"included\">\n                        <L7p:Type variableDataType=\"string\"/>\n                    </L7p:item>\n                    <L7p:item binary=\"included\">\n                        <L7p:Operator operator=\"EMPTY\"/>\n                        <L7p:RightValue stringValue=\"\"/>\n                    </L7p:item>\n                </L7p:Predicates>\n            </L7p:ComparisonAssertion>\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:CustomizeErrorResponse>\n                    <L7p:Content stringValue=\"${errorMsg}\"/>\n                    <L7p:ExtraHeaders nameValuePairArray=\"included\"/>\n                    <L7p:HttpStatus stringValue=\"401\"/>\n                </L7p:CustomizeErrorResponse>\n                <L7p:FalseAssertion/>\n            </wsp:All>\n        </wsp:OneOrMore>\n    </wsp:All>\n</wsp:Policy>\n"
      }
    }
  ],
  "properties": {
    "meta": {
      "name": "mTLSValidation1.0 Bundle",
      "schema": "11.2.1"
    },
    "defaultAction": "NEW_OR_UPDATE"
  }
}