{
  "clusterProperties": [
    {
      "goid": "51b41dca9eec541b35ae23d02d0e24bb",
      "name": "cluster.apikey.kvstore.enabled",
      "checksum": "74941b28f366ab3cf261efb1cb4295b5de41bb3e",
      "hiddenProperty": false,
      "value": "true"
    },
    {
      "goid": "1b86bc096b781a557932b91adc09c5d6",
      "name": "cluster.apiplan.cacheid",
      "checksum": "e7ece13bb1c30fe81816f115a7f5e6785c618e82",
      "hiddenProperty": false,
      "value": "40877f5205d54f36a4d610e12ab26870"
    },
    {
      "goid": "5c87265ae29450fd84036eb92b78ca26",
      "name": "cluster.rq.cache.age",
      "checksum": "8d9cd5b6f0f7f99c4f29a84fe7f8629de02e8a88",
      "hiddenProperty": false,
      "value": "1"
    },
    {
      "goid": "5c87265ae29450fd84036eb92b78ca25",
      "name": "cluster.rq.cacheid",
      "checksum": "0bb8f0d015969248c3c6414bc83dec5f26337320",
      "hiddenProperty": false,
      "value": "497bdd62defc4f96a35ed2edcebd43ce"
    },
    {
      "goid": "c1fe21dfe5242b54eced4d389b78ce85",
      "name": "portal.api.plan",
      "checksum": "524916919e94d8405aab7845c04b409f734682ac",
      "hiddenProperty": false,
      "value": "false"
    },
    {
      "goid": "5c87265ae29450fd84036eb92b78ca27",
      "name": "portal.l7.default.api.org.ratequota",
      "checksum": "37fd0ed729b4c7cb54565c09f7cdba2bfcf1a6c9",
      "hiddenProperty": false,
      "value": "03227451-04cb-4d71-8268-5176796cdbe9"
    }
  ],
  "encassConfigs": [
    {
      "goid": "7ea689637ea33120bbef4ad59b48f9b6",
      "guid": "92092f24-6ca1-3f19-b29e-70287c64a369",
      "name": "::l7.apim.system.Rate & Quota Policy Template::Rate & Quota Enforcement Policy Template::2.0",
      "checksum": "aa3c9b15b67368d69435506e07d79a440d7c1120",
      "description": "This version of the policy template provides updates to support API products along with all Rate Limit and Quota enforcement for all levels. API products must be enabled in Settings. This bundle includes a new version of OTK's 'Portal API Key Storage Sync' policy to support API keys with products; undeploy this bundle to revert it or revert its initial policy version via Policy Manager. Note: API Products is currently a Limited Availability feature. Please contact Broadcom Support for permission to enable this setting for production use.",
      "policyName": "::l7.apim.system::Rate & Quota Enforcement Policy Template::2.0",
      "encassArgs": [
        {
          "name": "error.msg",
          "type": "STRING",
          "ordinal": 1,
          "guiPrompt": false,
          "guiLabel": ""
        },
        {
          "name": "l7.rateQuotaJson",
          "type": "STRING",
          "ordinal": 2,
          "guiPrompt": true,
          "guiLabel": "The Rate and Quota JSON which is automatically set by the Portal"
        },
        {
          "name": "l7.rateQuotaUuid",
          "type": "STRING",
          "ordinal": 3,
          "guiPrompt": true,
          "guiLabel": "The UUID of the Rate & Quota enforced by this Policy Template"
        },
        {
          "name": "l7.rq.apiOrg.enabled",
          "type": "BOOLEAN",
          "ordinal": 4,
          "guiPrompt": false,
          "guiLabel": ""
        },
        {
          "name": "portal.managed.service.apiId",
          "type": "STRING",
          "ordinal": 5,
          "guiPrompt": false,
          "guiLabel": ""
        }
      ],
      "encassResults": [
        {
          "name": "counter.id",
          "type": "STRING"
        },
        {
          "name": "counter.max",
          "type": "INTEGER"
        },
        {
          "name": "counter.period",
          "type": "STRING"
        },
        {
          "name": "counter.user",
          "type": "STRING"
        },
        {
          "name": "counter.value",
          "type": "INTEGER"
        },
        {
          "name": "error.message",
          "type": "STRING"
        },
        {
          "name": "error.msg",
          "type": "STRING"
        },
        {
          "name": "lookup.source",
          "type": "STRING"
        },
        {
          "name": "parsedRqConfig",
          "type": "STRING"
        }
      ],
      "properties": [
        {
          "name": "allowTracing",
          "value": "false"
        },
        {
          "name": "l7Template",
          "value": "true"
        },
        {
          "name": "paletteFolder",
          "value": "internalAssertions"
        },
        {
          "name": "passMetricsToParent",
          "value": "false"
        }
      ]
    },
    {
      "goid": "a41801d05ec53ab8bd9accd9af8dba8f",
      "guid": "c3331333-6244-49cb-bb79-01cf015b0e76",
      "name": "::l7.apim.system::Portal App Product Rate & Quota Mapping Lookup::2.0",
      "checksum": "c0296eb00b0e2635468a9de9d7ba7174c87b024c",
      "description": "Lookup the assigned rate limit & quota entity's UUID based on the application and product this API is assigned to",
      "policyName": "::l7.apim.system::App Product Rate & Quota Mapping Lookup::2.0",
      "encassArgs": [
        {
          "name": "lookup.entityMappingId",
          "type": "STRING",
          "ordinal": 1,
          "guiPrompt": true,
          "guiLabel": "applicationUuid_productUuid mapping the rate limit & quota is assigned to"
        },
        {
          "name": "lookup.mappingStoreName",
          "type": "STRING",
          "ordinal": 2,
          "guiPrompt": true,
          "guiLabel": "App Product Tier mapping data store name"
        }
      ],
      "encassResults": [
        {
          "name": "error.code",
          "type": "STRING"
        },
        {
          "name": "error.msg",
          "type": "STRING"
        },
        {
          "name": "lookup.rateQuotaUuid",
          "type": "STRING"
        },
        {
          "name": "lookup.source",
          "type": "STRING"
        }
      ],
      "properties": [
        {
          "name": "allowTracing",
          "value": "false"
        },
        {
          "name": "l7Template",
          "value": "false"
        },
        {
          "name": "paletteFolder",
          "value": "internalAssertions"
        },
        {
          "name": "passMetricsToParent",
          "value": "false"
        }
      ]
    },
    {
      "goid": "11624bf3b45a541fd9ef61ccf1ff6356",
      "guid": "a2182199-9b82-4f48-98dd-64ec8ea53476",
      "name": "::l7.apim.system::Portal Rate & Quota Config Lookup::2.0",
      "checksum": "8d4901c731e8e62358ca67902ab22d9fa26e23fb",
      "description": "Lookup the rate limit & quota JSON configuration by its UUID from the specified store.",
      "policyName": "::l7.apim.system::Rate & Quota Config Lookup::2.0",
      "encassArgs": [
        {
          "name": "lookup.rateQuotaUuid",
          "type": "STRING",
          "ordinal": 1,
          "guiPrompt": true,
          "guiLabel": "UUID of rate & quota entity"
        },
        {
          "name": "lookup.source",
          "type": "STRING",
          "ordinal": 2,
          "guiPrompt": false,
          "guiLabel": ""
        },
        {
          "name": "lookup.storeName",
          "type": "STRING",
          "ordinal": 3,
          "guiPrompt": true,
          "guiLabel": "Rate & quota data store name"
        }
      ],
      "encassResults": [
        {
          "name": "error.code",
          "type": "STRING"
        },
        {
          "name": "error.message",
          "type": "STRING"
        },
        {
          "name": "error.msg",
          "type": "STRING"
        },
        {
          "name": "lookup.rateQuotaJson",
          "type": "STRING"
        },
        {
          "name": "lookup.source",
          "type": "STRING"
        }
      ],
      "properties": [
        {
          "name": "allowTracing",
          "value": "false"
        },
        {
          "name": "l7Template",
          "value": "false"
        },
        {
          "name": "paletteFolder",
          "value": "internalAssertions"
        },
        {
          "name": "passMetricsToParent",
          "value": "false"
        }
      ]
    },
    {
      "goid": "11624bf3b45a541fd9ef61ccf1ff6355",
      "guid": "b934279b-9891-4901-b9ad-9a86fdf37dff",
      "name": "::l7.apim.system::Portal Rate & Quota Mapping Lookup::2.0",
      "checksum": "ba984bfb0b1b76326bae6213d621bd965ce15ac8",
      "description": "Lookup the assigned rate limit & quota entity's UUID based on the entity ID it is assigned to.",
      "policyName": "::l7.apim.system::Rate & Quota Mapping Lookup::2.0",
      "encassArgs": [
        {
          "name": "lookup.defaultValue",
          "type": "STRING",
          "ordinal": 1,
          "guiPrompt": true,
          "guiLabel": "lookup.defaultValue"
        },
        {
          "name": "lookup.entityMappingId",
          "type": "STRING",
          "ordinal": 2,
          "guiPrompt": true,
          "guiLabel": "ID of the entity mapping the rate limit & quota is assigned to"
        },
        {
          "name": "lookup.mappingStoreName",
          "type": "STRING",
          "ordinal": 3,
          "guiPrompt": true,
          "guiLabel": "Rate & quota mapping data store name"
        }
      ],
      "encassResults": [
        {
          "name": "error.code",
          "type": "STRING"
        },
        {
          "name": "error.message",
          "type": "STRING"
        },
        {
          "name": "error.msg",
          "type": "STRING"
        },
        {
          "name": "lookup.rateQuotaUuid",
          "type": "STRING"
        },
        {
          "name": "lookup.source",
          "type": "STRING"
        }
      ],
      "properties": [
        {
          "name": "allowTracing",
          "value": "false"
        },
        {
          "name": "l7Template",
          "value": "false"
        },
        {
          "name": "paletteFolder",
          "value": "internalAssertions"
        },
        {
          "name": "passMetricsToParent",
          "value": "false"
        }
      ]
    },
    {
      "goid": "11624bf3b45a541fd9ef61ccf1ff6354",
      "guid": "392b2ad6-27e9-4969-b18b-9b77b898d1f3",
      "name": "::l7.apim.system::Portal Rate & Quota Store Value Lookup::2.0",
      "checksum": "22720c89af5b2f9a1f359210aac4b6ffb3fcd825",
      "description": "Lookup the value from the specified data store based on its ID.",
      "policyName": "::l7.apim.system::Rate & Quota Store Value Lookup::2.0",
      "encassArgs": [
        {
          "name": "lookup.id",
          "type": "STRING",
          "ordinal": 1,
          "guiPrompt": true,
          "guiLabel": "ID of the item to lookup"
        },
        {
          "name": "lookup.source",
          "type": "STRING",
          "ordinal": 2,
          "guiPrompt": false,
          "guiLabel": ""
        },
        {
          "name": "lookup.storeName",
          "type": "STRING",
          "ordinal": 3,
          "guiPrompt": true,
          "guiLabel": "Rate & quota data store name"
        }
      ],
      "encassResults": [
        {
          "name": "error.code",
          "type": "STRING"
        },
        {
          "name": "lookup.value",
          "type": "STRING"
        }
      ],
      "properties": [
        {
          "name": "allowTracing",
          "value": "false"
        },
        {
          "name": "l7Template",
          "value": "false"
        },
        {
          "name": "paletteFolder",
          "value": "internalAssertions"
        },
        {
          "name": "passMetricsToParent",
          "value": "false"
        }
      ]
    },
    {
      "goid": "c75906be17960a7d528dc0550a0f8e9a",
      "guid": "8b765e69-af82-4bc3-9764-291be4d1bbf4",
      "name": "API Key Record Lookup",
      "checksum": "1914cba0a8c3aa90f0e91dd307d22ea9047bebb8",
      "description": "\n    Looking up for API Plan by using ${apiKey} and ${apiId}. Expected ${lookup.planId} on success\n    ",
      "policyName": "API Key Record Lookup",
      "encassArgs": [
        {
          "name": "apiId",
          "type": "STRING",
          "ordinal": 1,
          "guiPrompt": false
        },
        {
          "name": "apiKey",
          "type": "STRING",
          "ordinal": 2,
          "guiPrompt": false
        }
      ],
      "encassResults": [
        {
          "name": "error.code",
          "type": "STRING"
        },
        {
          "name": "error.message",
          "type": "STRING"
        },
        {
          "name": "lookup.planId",
          "type": "STRING"
        }
      ],
      "properties": [
        {
          "name": "allowTracing",
          "value": "false"
        },
        {
          "name": "artifactVersion",
          "value": "cb991c31fed59f57918b31253640f2ff495fde07"
        },
        {
          "name": "paletteFolder",
          "value": "internalAssertions"
        },
        {
          "name": "passMetricsToParent",
          "value": "false"
        }
      ]
    },
    {
      "goid": "c75906be17960a7d528dc0550a0f8ebc",
      "guid": "c925831a-e8e9-46e9-8952-19efa5a1b4dd",
      "name": "API Plan Config Lookup",
      "checksum": "81a8d54ee02e112734127929d5af8d29d0817d91",
      "description": "\n    Lookup up api plan config details by using ${lookup.planId}. On success, expected output ${lookup.quota}, ${lookup.timeunit}, ${lookup.maxrequestrate}, ${lookup.windowsizeinseconds} and ${error.code}. Success ${error.code}==200. Failure ${error.code}==103\n    ",
      "policyName": "API Plan Config Lookup",
      "encassArgs": [
        {
          "name": "lookup.planId",
          "type": "STRING",
          "ordinal": 1,
          "guiPrompt": false
        }
      ],
      "encassResults": [
        {
          "name": "error.code",
          "type": "STRING"
        },
        {
          "name": "lookup.maxrequestrate",
          "type": "STRING"
        },
        {
          "name": "lookup.quota",
          "type": "STRING"
        },
        {
          "name": "lookup.timeunit",
          "type": "STRING"
        },
        {
          "name": "lookup.windowsizeinseconds",
          "type": "STRING"
        }
      ],
      "properties": [
        {
          "name": "allowTracing",
          "value": "false"
        },
        {
          "name": "artifactVersion",
          "value": "dbe177cf05e563d49530bd966d324937fe2f9d7e"
        },
        {
          "name": "paletteFolder",
          "value": "internalAssertions"
        },
        {
          "name": "passMetricsToParent",
          "value": "false"
        }
      ]
    },
    {
      "goid": "c75906be17960a7d528dc0550a0f8edf",
      "guid": "18fee60c-88aa-4551-b197-602e9abd5996",
      "name": "API Plan Lookup",
      "checksum": "118f8b63d5187dd03d18380a4242cc84f75d2c35",
      "description": "\n    Looking up API Plan details using ${apiKey} and ${apiId}. On success, expected output ${lookup.quota},${lookup.timeunit},${lookup.maxrequestrate},${lookup.windowsizeinseconds} and ${error.code}. Success ${error.code}==200. Failure ${error.code}==103\n    ",
      "policyName": "API Plan Lookup",
      "encassArgs": [
        {
          "name": "apiId",
          "type": "STRING",
          "ordinal": 1,
          "guiPrompt": false
        },
        {
          "name": "apiKey",
          "type": "STRING",
          "ordinal": 2,
          "guiPrompt": false
        }
      ],
      "encassResults": [
        {
          "name": "error.code",
          "type": "STRING"
        },
        {
          "name": "lookup.maxrequestrate",
          "type": "STRING"
        },
        {
          "name": "lookup.quota",
          "type": "STRING"
        },
        {
          "name": "lookup.timeunit",
          "type": "STRING"
        },
        {
          "name": "lookup.windowsizeinseconds",
          "type": "STRING"
        }
      ],
      "properties": [
        {
          "name": "allowTracing",
          "value": "false"
        },
        {
          "name": "artifactVersion",
          "value": "35b836b47aa64af1d6c8173cb643235c2eb07a75"
        },
        {
          "name": "paletteFolder",
          "value": "internalAssertions"
        },
        {
          "name": "passMetricsToParent",
          "value": "false"
        }
      ]
    },
    {
      "goid": "51b41dca9eec541b35ae23d02d0e166c",
      "guid": "532dd6d5-7326-4e86-aaba-bd20f99ec899",
      "name": "Portal API Key Create Hash",
      "checksum": "845a0acc20e921c63fb176832b88f4566dee220b",
      "description": "Create Hash",
      "policyName": "Portal API Key Create Hash",
      "encassArgs": [
        {
          "name": "algorithm",
          "type": "STRING",
          "ordinal": 1,
          "guiPrompt": true,
          "guiLabel": "algorithm"
        },
        {
          "name": "inputPlaintext",
          "type": "STRING",
          "ordinal": 2,
          "guiPrompt": true,
          "guiLabel": "inputPlaintext"
        },
        {
          "name": "salt",
          "type": "STRING",
          "ordinal": 3,
          "guiPrompt": true,
          "guiLabel": "salt"
        }
      ],
      "encassResults": [
        {
          "name": "hashedValue",
          "type": "STRING"
        }
      ],
      "properties": [
        {
          "name": "allowTracing",
          "value": "true"
        },
        {
          "name": "paletteFolder",
          "value": "customAssertions"
        },
        {
          "name": "passMetricsToParent",
          "value": "false"
        }
      ]
    },
    {
      "goid": "996ba8e3a5daa1ef23ed658905e4bfa8",
      "guid": "b25b6e50-76b7-4f16-9a3d-7ffcddc1a683",
      "name": "Portal API Key Lookup (Local Store)",
      "checksum": "17fc89b0b6cb6336fdeac325a3a37203297ff98d",
      "description": "This assertion retrieves an API Key from a local Key Value Store",
      "policyName": "Portal API Key Lookup (Local Store) Fragment",
      "encassArgs": [
        {
          "name": "apikey",
          "type": "STRING",
          "ordinal": 2,
          "guiPrompt": true,
          "guiLabel": "API Key"
        },
        {
          "name": "serviceid",
          "type": "STRING",
          "ordinal": 1,
          "guiPrompt": true,
          "guiLabel": "Service ID"
        }
      ],
      "encassResults": [
        {
          "name": "apiKeyRecord.accountPlanMappingId",
          "type": "STRING"
        },
        {
          "name": "apiKeyRecord.accountPlanMappingName",
          "type": "STRING"
        },
        {
          "name": "apiKeyRecord.found",
          "type": "STRING"
        },
        {
          "name": "apiKeyRecord.hashingMetadata",
          "type": "STRING"
        },
        {
          "name": "apiKeyRecord.id",
          "type": "STRING"
        },
        {
          "name": "apiKeyRecord.key",
          "type": "STRING"
        },
        {
          "name": "apiKeyRecord.label",
          "type": "STRING"
        },
        {
          "name": "apiKeyRecord.oauthCallbackUrl",
          "type": "STRING"
        },
        {
          "name": "apiKeyRecord.oauthScope",
          "type": "STRING"
        },
        {
          "name": "apiKeyRecord.oauthType",
          "type": "STRING"
        },
        {
          "name": "apiKeyRecord.plan",
          "type": "STRING"
        },
        {
          "name": "apiKeyRecord.platform",
          "type": "STRING"
        },
        {
          "name": "apiKeyRecord.secret",
          "type": "STRING"
        },
        {
          "name": "apiKeyRecord.service",
          "type": "STRING"
        },
        {
          "name": "apiKeyRecord.status",
          "type": "STRING"
        },
        {
          "name": "apiKeyRecord.version",
          "type": "STRING"
        },
        {
          "name": "apiKeyRecord.xml",
          "type": "STRING"
        },
        {
          "name": "error.code",
          "type": "STRING"
        }
      ],
      "properties": [
        {
          "name": "allowTracing",
          "value": "false"
        },
        {
          "name": "paletteFolder",
          "value": "customAssertions"
        },
        {
          "name": "passMetricsToParent",
          "value": "false"
        }
      ]
    },
    {
      "goid": "51b41dca9eec541b35ae23d02d0e1577",
      "guid": "1d682484-d9d7-47f7-9671-9ae9e10f5af4",
      "name": "Portal API Key Read Hashed Metadata",
      "checksum": "c33e852c69e8250a9e98ffe85665d4dde4bd971d",
      "description": "Read Hashed Metadata",
      "policyName": "Portal API Key Read Hashed Metadata",
      "encassArgs": [
        {
          "name": "hashing_metadata",
          "type": "STRING",
          "ordinal": 1,
          "guiPrompt": false
        }
      ],
      "encassResults": [
        {
          "name": "algorithm.result",
          "type": "STRING"
        },
        {
          "name": "salt.result",
          "type": "STRING"
        }
      ],
      "properties": [
        {
          "name": "allowTracing",
          "value": "false"
        },
        {
          "name": "paletteFolder",
          "value": "customAssertions"
        },
        {
          "name": "passMetricsToParent",
          "value": "false"
        }
      ]
    },
    {
      "goid": "b774eb7f46b5ced47e3108b462328ec7",
      "guid": "c76b0b8a-364b-4a14-b232-1aaafb210da2",
      "name": "Portal Require API Plan",
      "checksum": "4a99c25289e870b4b64c2f555b8da6f7e0df5aab",
      "policyName": "Portal Require API Plan",
      "encassArgs": [
        {
          "name": "apiId",
          "type": "STRING",
          "ordinal": 1,
          "guiPrompt": true,
          "guiLabel": "API ID"
        },
        {
          "name": "apiKey",
          "type": "STRING",
          "ordinal": 2,
          "guiPrompt": true,
          "guiLabel": "API Key of the App"
        },
        {
          "name": "quota",
          "type": "STRING",
          "ordinal": 4,
          "guiPrompt": true,
          "guiLabel": "Quota per time unit"
        },
        {
          "name": "ratelimit",
          "type": "STRING",
          "ordinal": 3,
          "guiPrompt": true,
          "guiLabel": "Rate limit per second"
        },
        {
          "name": "timeUnit",
          "type": "STRING",
          "ordinal": 5,
          "guiPrompt": true,
          "guiLabel": "Quota Time unit"
        }
      ],
      "encassResults": [
        {
          "name": "error.code",
          "type": "INTEGER"
        },
        {
          "name": "error.msg",
          "type": "STRING"
        }
      ],
      "properties": [
        {
          "name": "allowTracing",
          "value": "false"
        },
        {
          "name": "paletteFolder",
          "value": "customAssertions"
        },
        {
          "name": "passMetricsToParent",
          "value": "false"
        }
      ]
    },
    {
      "goid": "e7a1c1c4e504ff21d29611f9ff85463b",
      "guid": "72093738-871a-45bd-b114-ad3a61893ac0",
      "name": "Standard Policy Template - API Key",
      "checksum": "f0885f8b6537e0ce6f19aae3ff2df9e0c4a1d183",
      "description": "This policy template applies an API Key check to all API access calls. NOTE: API Key authentication is not considered a secure authentication method. The use of this policy template is recommended for testing purposes only.",
      "policyName": "Standard Policy Template Fragment - API Key",
      "encassArgs": [
        {
          "name": "apiKeyRecord.accountPlanMappingId",
          "type": "STRING",
          "ordinal": 11,
          "guiPrompt": false
        },
        {
          "name": "apiKeyRecord.accountPlanMappingName",
          "type": "STRING",
          "ordinal": 16,
          "guiPrompt": false
        },
        {
          "name": "apiKeyRecord.found",
          "type": "STRING",
          "ordinal": 9,
          "guiPrompt": false
        },
        {
          "name": "apiKeyRecord.hashingMetadata",
          "type": "STRING",
          "ordinal": 7,
          "guiPrompt": false
        },
        {
          "name": "apiKeyRecord.id",
          "type": "STRING",
          "ordinal": 10,
          "guiPrompt": false
        },
        {
          "name": "apiKeyRecord.key",
          "type": "STRING",
          "ordinal": 12,
          "guiPrompt": false
        },
        {
          "name": "apiKeyRecord.platform",
          "type": "STRING",
          "ordinal": 6,
          "guiPrompt": false
        },
        {
          "name": "apiKeyRecord.secret",
          "type": "STRING",
          "ordinal": 15,
          "guiPrompt": false
        },
        {
          "name": "apiKeyRecord.service",
          "type": "STRING",
          "ordinal": 8,
          "guiPrompt": false
        },
        {
          "name": "apiKeyRecord.status",
          "type": "STRING",
          "ordinal": 14,
          "guiPrompt": false
        },
        {
          "name": "apiKeyRecord.xml",
          "type": "STRING",
          "ordinal": 13,
          "guiPrompt": false
        },
        {
          "name": "apiLocation",
          "type": "STRING",
          "ordinal": 1,
          "guiPrompt": false,
          "guiLabel": "Location of API (application calls are forwarded here) *"
        },
        {
          "name": "override_template_routing",
          "type": "STRING",
          "ordinal": 5,
          "guiPrompt": false,
          "guiLabel": ""
        },
        {
          "name": "portal.managed.service.apiId",
          "type": "STRING",
          "ordinal": 4,
          "guiPrompt": false
        },
        {
          "name": "serviceUrl",
          "type": "STRING",
          "ordinal": 3,
          "guiPrompt": false
        },
        {
          "name": "sslEnabled",
          "type": "BOOLEAN",
          "ordinal": 2,
          "guiPrompt": true,
          "guiLabel": "SSL"
        }
      ],
      "encassResults": [
        {
          "name": "apiAuthzDetails",
          "type": "STRING"
        },
        {
          "name": "counterName",
          "type": "STRING"
        },
        {
          "name": "customFieldsMetadata",
          "type": "STRING"
        },
        {
          "name": "errorMsg",
          "type": "STRING"
        }
      ],
      "properties": [
        {
          "name": "allowTracing",
          "value": "false"
        },
        {
          "name": "artifactVersion",
          "value": "89a024577bc96536bf56cd2268a7df949ad9bc1f"
        },
        {
          "name": "paletteFolder",
          "value": "internalAssertions"
        },
        {
          "name": "paletteIconResourceName",
          "value": "polback16.gif"
        },
        {
          "name": "passMetricsToParent",
          "value": "false"
        }
      ]
    }
  ],
  "policyFragments": [
    {
      "goid": "a41801d05ec53ab8bd9accd9af8cff15",
      "guid": "edfde05e-3bad-4eb8-9474-83165cf1e77d",
      "name": "::l7.apim.system::App Product Rate & Quota Mapping Lookup::2.0",
      "checksum": "745472b46a55deae0c70838a030c0bb821e52ba9",
      "folderPath": "/API Portal Integration/Rate and Quota/2.0",
      "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:CommentAssertion>\n            <L7p:Comment stringValue=\"Policy Fragment: Product Rate &amp; Quota Mapping Lookup\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"--------------------------------------------------------------\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"Expected input: ${lookup.entityMappingId} which format is &quot;{applicaitonUuid}_{productUuid}:{tierUuid}&quot;, ${lookup.mappingStoreName}\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"Expected cluster variable: ${cluster.rq.cacheid}\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"Expected output: ${lookup.rateQuotaUuid}, ${error.code}\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"--------------------------------------------------------------\"/>\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=\"${lookup.entityMappingId}\"/>\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:Negated booleanValue=\"true\"/>\n                            <L7p:Operator operator=\"EMPTY\"/>\n                            <L7p:RightValue stringValue=\"\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${lookup.mappingStoreName}\"/>\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:Negated booleanValue=\"true\"/>\n                            <L7p:Operator operator=\"EMPTY\"/>\n                            <L7p:RightValue stringValue=\"\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${gateway.cluster.rq.cacheid}\"/>\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:Negated booleanValue=\"true\"/>\n                            <L7p:Operator operator=\"EMPTY\"/>\n                            <L7p:RightValue stringValue=\"\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n            </wsp:All>\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"MTAz\"/>\n                    <L7p:VariableToSet stringValue=\"error.code\"/>\n                </L7p:SetVariable>\n                <L7p:AuditDetailAssertion>\n                    <L7p:Detail stringValue=\"input validation failure: lookup.entityMappingId=${lookup.entityMappingId}, lookup.storeName=${lookup.storeName}, gateway.cluster.rq.cacheid=${gateway.cluster.rq.cacheid}\"/>\n                    <L7p:Level stringValue=\"WARNING\"/>\n                    <L7p:LoggingOnly booleanValue=\"true\"/>\n                </L7p:AuditDetailAssertion>\n                <L7p:FalseAssertion/>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                            <L7p:value stringValue=\"error\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <L7p:assertionComment>\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                        <L7p:value stringValue=\"-------- validate inputs\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:assertionComment>\n        </wsp:OneOrMore>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"Policy Fragment: Rate &amp; Quota Mapping Lookup\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"------ lookup in cache for the rateQuotaUuid ---------\"/>\n        </L7p:CommentAssertion>\n        <wsp:All wsp:Usage=\"Required\">\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"JHtnYXRld2F5LmNsdXN0ZXIucnEuY2FjaGVpZH0=\"/>\n                <L7p:VariableToSet stringValue=\"cacheId\"/>\n            </L7p:SetVariable>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"\"/>\n                <L7p:VariableToSet stringValue=\"planId\"/>\n            </L7p:SetVariable>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"\"/>\n                <L7p:ContentType stringValue=\"text/plain; charset=utf-8\"/>\n                <L7p:DataType variableDataType=\"message\"/>\n                <L7p:VariableToSet stringValue=\"planIdMsg\"/>\n            </L7p:SetVariable>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"\"/>\n                <L7p:VariableToSet stringValue=\"lookup.rateQuotaUuid\"/>\n            </L7p:SetVariable>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"\"/>\n                <L7p:VariableToSet stringValue=\"lookup.source\"/>\n            </L7p:SetVariable>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"\"/>\n                <L7p:VariableToSet stringValue=\"error.code\"/>\n            </L7p:SetVariable>\n            <wsp:OneOrMore wsp:Usage=\"Required\">\n                <wsp:All wsp:Usage=\"Required\">\n                    <L7p:Split>\n                        <L7p:InputVariable stringValue=\"lookup.entityMappingId\"/>\n                        <L7p:OutputVariable stringValue=\"entityMappingUuids\"/>\n                        <L7p:SplitPattern stringValue=\"_\"/>\n                    </L7p:Split>\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"JHtlbnRpdHlNYXBwaW5nVXVpZHNbMF19\"/>\n                        <L7p:VariableToSet stringValue=\"applicationUuid\"/>\n                    </L7p:SetVariable>\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"JHtlbnRpdHlNYXBwaW5nVXVpZHNbMV19\"/>\n                        <L7p:VariableToSet stringValue=\"productAndTierUuid\"/>\n                    </L7p:SetVariable>\n                    <L7p:Split>\n                        <L7p:InputVariable stringValue=\"productAndTierUuid\"/>\n                        <L7p:OutputVariable stringValue=\"productAndTierUuid\"/>\n                        <L7p:SplitPattern stringValue=\":\"/>\n                    </L7p:Split>\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"JHtwcm9kdWN0QW5kVGllclV1aWRbMF19\"/>\n                        <L7p:VariableToSet stringValue=\"productUuid\"/>\n                    </L7p:SetVariable>\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"JHtwcm9kdWN0QW5kVGllclV1aWRbMV19\"/>\n                        <L7p:VariableToSet stringValue=\"tierUuid\"/>\n                    </L7p:SetVariable>\n                </wsp:All>\n                <wsp:All wsp:Usage=\"Required\">\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"MTAz\"/>\n                        <L7p:VariableToSet stringValue=\"error.code\"/>\n                    </L7p:SetVariable>\n                    <L7p:AuditDetailAssertion>\n                        <L7p:Detail stringValue=\"invalid {ApplicationUuid}_{ProductUuid}:{TierUuid} data format: lookup.entityMappingId=${lookup.entityMappingId}\"/>\n                        <L7p:Level stringValue=\"WARNING\"/>\n                        <L7p:LoggingOnly booleanValue=\"true\"/>\n                    </L7p:AuditDetailAssertion>\n                    <L7p:FalseAssertion/>\n                    <L7p:assertionComment>\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                                <L7p:value stringValue=\"error\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:assertionComment>\n                </wsp:All>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"get applicationUuid, productUuid and tierUuid from entityMappingUuid\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:OneOrMore>\n            <L7p:assertionComment>\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                        <L7p:value stringValue=\"-------- Context variables\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:assertionComment>\n        </wsp:All>\n        <wsp:OneOrMore wsp:Usage=\"Required\">\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:Encapsulated>\n                    <L7p:EncapsulatedAssertionConfigGuid stringValue=\"68ad78a1-f4a1-4568-91e1-0980d95c75cd\"/>\n                    <L7p:EncapsulatedAssertionConfigName stringValue=\"OTK Cache Look Up\"/>\n                    <L7p:Parameters mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"cacheID\"/>\n                            <L7p:value stringValue=\"${cacheId}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"cacheKey\"/>\n                            <L7p:value stringValue=\"${applicationUuid}_${productUuid}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"custom\"/>\n                            <L7p:value stringValue=\"\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"maxEntryAge\"/>\n                            <L7p:value stringValue=\"${gateway.cluster.rq.cache.age}\"/>\n                        </L7p:entry>\n                    </L7p:Parameters>\n                </L7p:Encapsulated>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtyZXNwLm1haW5wYXJ0fQ==\"/>\n                    <L7p:VariableToSet stringValue=\"lookup.rateQuotaUuid\"/>\n                </L7p:SetVariable>\n                <L7p:CommentAssertion>\n                    <L7p:Comment stringValue=\"------- everytime a lookup is used, we reset the expiration time of the cache----\"/>\n                </L7p:CommentAssertion>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtyZXNwLm1haW5wYXJ0fQ==\"/>\n                    <L7p:ContentType stringValue=\"text/plain; charset=utf-8\"/>\n                    <L7p:DataType variableDataType=\"message\"/>\n                    <L7p:VariableToSet stringValue=\"rqUuidMsg\"/>\n                </L7p:SetVariable>\n                <L7p:Encapsulated>\n                    <L7p:EncapsulatedAssertionConfigGuid stringValue=\"e5ee8bcf-1796-4297-88dd-c838031a6f6a\"/>\n                    <L7p:EncapsulatedAssertionConfigName stringValue=\"OTK Cache Store\"/>\n                    <L7p:Parameters mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"cacheID\"/>\n                            <L7p:value stringValue=\"${cacheId}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"cacheKey\"/>\n                            <L7p:value stringValue=\"${applicationUuid}_${productUuid}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"custom\"/>\n                            <L7p:value stringValue=\"\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"maxEntries\"/>\n                            <L7p:value stringValue=\"10000\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"maxEntryAge\"/>\n                            <L7p:value stringValue=\"${gateway.cluster.rq.cache.age}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"maxEntrySize\"/>\n                            <L7p:value stringValue=\"1000\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"msg\"/>\n                            <L7p:value stringValue=\"rqUuidMsg\"/>\n                        </L7p:entry>\n                    </L7p:Parameters>\n                </L7p:Encapsulated>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"MjAw\"/>\n                    <L7p:VariableToSet stringValue=\"error.code\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"T0s=\"/>\n                    <L7p:VariableToSet stringValue=\"error.msg\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"ZnJvbSBjYWNoZQ==\"/>\n                    <L7p:VariableToSet stringValue=\"lookup.source\"/>\n                </L7p:SetVariable>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"---------- if ${applicationUuid}_${productUuid} already existed in cache ?\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <L7p:CommentAssertion>\n                <L7p:Comment stringValue=\"If the ${applicationUuid}_${productUuid} doesn't exist then\"/>\n            </L7p:CommentAssertion>\n            <L7p:CommentAssertion>\n                <L7p:Comment stringValue=\"Lookup in the ${lookup.mappingStoreName} cluster-wide-property\"/>\n            </L7p:CommentAssertion>\n            <L7p:CommentAssertion>\n                <L7p:Comment stringValue=\"Parse the JSON to get rqUuid AND add this &lt;${applicationUuid}_${productUuid}, ${rqUuid}> to cache\"/>\n            </L7p:CommentAssertion>\n            <wsp:All wsp:Usage=\"Required\">\n                <wsp:All wsp:Usage=\"Required\">\n                    <wsp:OneOrMore wsp:Usage=\"Required\">\n                        <wsp:All wsp:Usage=\"Required\">\n                            <L7p:LookupDynamicContextVariables>\n                                <L7p:SourceVariable stringValue=\"gateway.portal.l7.product.tier\"/>\n                                <L7p:TargetDataType variableDataType=\"string\"/>\n                                <L7p:TargetOutputVariablePrefix stringValue=\"productTierStoreValueCwp\"/>\n                            </L7p:LookupDynamicContextVariables>\n                            <L7p:SetVariable>\n                                <L7p:Base64Expression stringValue=\"JHtwcm9kdWN0VGllclN0b3JlVmFsdWVDd3Aub3V0cHV0fQ==\"/>\n                                <L7p:ContentType stringValue=\"application/json; charset=utf-8\"/>\n                                <L7p:DataType variableDataType=\"message\"/>\n                                <L7p:VariableToSet stringValue=\"productTierStoreValueJson\"/>\n                            </L7p:SetVariable>\n                            <L7p:ComparisonAssertion>\n                                <L7p:CaseSensitive booleanValue=\"false\"/>\n                                <L7p:Expression1 stringValue=\"${productTierStoreValueJson.mainpart}\"/>\n                                <L7p:Expression2 stringValue=\"\"/>\n                                <L7p:Negate booleanValue=\"true\"/>\n                                <L7p:Operator operator=\"EMPTY\"/>\n                                <L7p:Predicates predicates=\"included\">\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:EvaluateJsonPathExpressionV2>\n                                <L7p:Evaluator stringValue=\"JsonPath\"/>\n                                <L7p:Expression stringValue=\"$.${productUuid}[?(@.${tierUuid})].${tierUuid}\"/>\n                                <L7p:OtherTargetMessageVariable stringValue=\"productTierStoreValueJson\"/>\n                                <L7p:Target target=\"OTHER\"/>\n                                <L7p:VariablePrefix stringValue=\"rateQuotaUuidValueJsonObject\"/>\n                            </L7p:EvaluateJsonPathExpressionV2>\n                            <L7p:SetVariable>\n                                <L7p:Base64Expression stringValue=\"JHtyYXRlUXVvdGFVdWlkVmFsdWVKc29uT2JqZWN0LnJlc3VsdH0=\"/>\n                                <L7p:ContentType stringValue=\"application/json; charset=utf-8\"/>\n                                <L7p:DataType variableDataType=\"message\"/>\n                                <L7p:VariableToSet stringValue=\"rateQuotaUuidValueJson\"/>\n                            </L7p:SetVariable>\n                            <L7p:SetVariable>\n                                <L7p:Base64Expression stringValue=\"JHtyYXRlUXVvdGFVdWlkVmFsdWVKc29uLm1haW5wYXJ0fQ==\"/>\n                                <L7p:VariableToSet stringValue=\"rateQuotaUuidValue\"/>\n                            </L7p:SetVariable>\n                        </wsp:All>\n                        <wsp:All wsp:Usage=\"Required\">\n                            <L7p:SetVariable>\n                                <L7p:Base64Expression stringValue=\"MTAz\"/>\n                                <L7p:VariableToSet stringValue=\"error.code\"/>\n                            </L7p:SetVariable>\n                            <L7p:AuditDetailAssertion>\n                                <L7p:Detail stringValue=\"lookup from CWP failed: can't find rateQuotaUuid fromproductUuid=${productUuid},  tierUuid=${tierUuid}, \"/>\n                                <L7p:Level stringValue=\"WARNING\"/>\n                                <L7p:LoggingOnly booleanValue=\"true\"/>\n                            </L7p:AuditDetailAssertion>\n                            <L7p:FalseAssertion/>\n                            <L7p:assertionComment>\n                                <L7p:Properties mapValue=\"included\">\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                                    <L7p:value stringValue=\"error\"/>\n                                    </L7p:entry>\n                                </L7p:Properties>\n                            </L7p:assertionComment>\n                        </wsp:All>\n                        <L7p:assertionComment>\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"get rateQuotaUuid from CWP\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:assertionComment>\n                    </wsp:OneOrMore>\n                </wsp:All>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtyYXRlUXVvdGFVdWlkVmFsdWV9\"/>\n                    <L7p:VariableToSet stringValue=\"lookup.rateQuotaUuid\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtyYXRlUXVvdGFVdWlkVmFsdWV9\"/>\n                    <L7p:ContentType stringValue=\"text/plain; charset=utf-8\"/>\n                    <L7p:DataType variableDataType=\"message\"/>\n                    <L7p:VariableToSet stringValue=\"rqUuidMsg\"/>\n                </L7p:SetVariable>\n                <L7p:Encapsulated>\n                    <L7p:AssertionComment assertionComment=\"included\">\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                <L7p:value stringValue=\"// Cache ${applicationUuid}_${productUuid} for entityMappingId\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:AssertionComment>\n                    <L7p:EncapsulatedAssertionConfigGuid stringValue=\"e5ee8bcf-1796-4297-88dd-c838031a6f6a\"/>\n                    <L7p:EncapsulatedAssertionConfigName stringValue=\"OTK Cache Store\"/>\n                    <L7p:Parameters mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"cacheID\"/>\n                            <L7p:value stringValue=\"${cacheId}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"cacheKey\"/>\n                            <L7p:value stringValue=\"${applicationUuid}_${productUuid}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"custom\"/>\n                            <L7p:value stringValue=\"\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"maxEntries\"/>\n                            <L7p:value stringValue=\"10000\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"maxEntryAge\"/>\n                            <L7p:value stringValue=\"${gateway.cluster.rq.cache.age}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"maxEntrySize\"/>\n                            <L7p:value stringValue=\"1000\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"msg\"/>\n                            <L7p:value stringValue=\"rqUuidMsg\"/>\n                        </L7p:entry>\n                    </L7p:Parameters>\n                </L7p:Encapsulated>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"ZnJvbSAke2xvb2t1cC5tYXBwaW5nU3RvcmVOYW1lfSBDV1A=\"/>\n                    <L7p:VariableToSet stringValue=\"lookup.source\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"MjAw\"/>\n                    <L7p:VariableToSet stringValue=\"error.code\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"T0s=\"/>\n                    <L7p:VariableToSet stringValue=\"error.msg\"/>\n                </L7p:SetVariable>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"------- lookup ${entityMappingId} from store\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"MTA0\"/>\n                    <L7p:VariableToSet stringValue=\"error.code\"/>\n                </L7p:SetVariable>\n                <L7p:AuditDetailAssertion>\n                    <L7p:Detail stringValue=\"lookup from cache and CWP failed: lookup.entityMappingId=${applicationUuid}_${productUuid}, lookup.storeName=${lookup.storeName}, gateway.cluster.rq.cacheid=${gateway.cluster.rq.cacheid}\"/>\n                    <L7p:Level stringValue=\"WARNING\"/>\n                    <L7p:LoggingOnly booleanValue=\"true\"/>\n                </L7p:AuditDetailAssertion>\n                <L7p:FalseAssertion/>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                            <L7p:value stringValue=\"error\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n        </wsp:OneOrMore>\n    </wsp:All>\n</wsp:Policy>\n"
      }
    },
    {
      "goid": "11624bf3b45a541fd9ef61ccf1ff634f",
      "guid": "1345ee20-01e8-4f16-a29f-69486ac22ab7",
      "name": "::l7.apim.system::Rate & Quota Config Lookup::2.0",
      "checksum": "d19a2c948d6e623aa02ebdc6b951e3dbd49edaac",
      "folderPath": "/API Portal Integration/Rate and Quota/2.0",
      "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:CommentAssertion>\n            <L7p:Comment stringValue=\"Policy Fragment: Rate &amp; Quota Config Lookup\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"--------------------------------------------\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"Expect Inputs: ${lookup.rateQuotaUuid}, ${lookup.storeName}, ${gateway.cluster.rq.cacheid}\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"Expect Outputs: ${lookup.rateQuotaJson}, ${error.code}\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"--------------------------------------------\"/>\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=\"${lookup.rateQuotaUuid}\"/>\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:Negated booleanValue=\"true\"/>\n                            <L7p:Operator operator=\"EMPTY\"/>\n                            <L7p:RightValue stringValue=\"\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${lookup.storeName}\"/>\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:Negated booleanValue=\"true\"/>\n                            <L7p:Operator operator=\"EMPTY\"/>\n                            <L7p:RightValue stringValue=\"\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${gateway.cluster.rq.cacheid}\"/>\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:Negated booleanValue=\"true\"/>\n                            <L7p:Operator operator=\"EMPTY\"/>\n                            <L7p:RightValue stringValue=\"\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n            </wsp:All>\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"MTAz\"/>\n                    <L7p:VariableToSet stringValue=\"error.code\"/>\n                </L7p:SetVariable>\n                <L7p:AuditDetailAssertion>\n                    <L7p:Detail stringValue=\"input validation failure: lookup.rateQuotaUuid=${lookup.rateQuotaUuid}, lookup.storeName=${lookup.storeName}, gateway.cluster.rq.cacheid=${gateway.cluster.rq.cacheid}\"/>\n                    <L7p:Level stringValue=\"WARNING\"/>\n                    <L7p:LoggingOnly booleanValue=\"true\"/>\n                </L7p:AuditDetailAssertion>\n                <L7p:FalseAssertion/>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                            <L7p:value stringValue=\"error\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <L7p:assertionComment>\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                        <L7p:value stringValue=\"//verify inputs lookup.rateQuotaUuid, lookup.storeName\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:assertionComment>\n        </wsp:OneOrMore>\n        <wsp:All wsp:Usage=\"Required\">\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"JHtsb29rdXAuc3RvcmVOYW1lfQ==\"/>\n                <L7p:VariableToSet stringValue=\"storeName\"/>\n            </L7p:SetVariable>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"JHtnYXRld2F5LmNsdXN0ZXIucnEuY2FjaGVpZH0=\"/>\n                <L7p:VariableToSet stringValue=\"cacheId\"/>\n            </L7p:SetVariable>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"JHtsb29rdXAucmF0ZVF1b3RhVXVpZH0=\"/>\n                <L7p:VariableToSet stringValue=\"rateQuotaUuid\"/>\n            </L7p:SetVariable>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"\"/>\n                <L7p:VariableToSet stringValue=\"lookup.source\"/>\n            </L7p:SetVariable>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"\"/>\n                <L7p:VariableToSet stringValue=\"error.code\"/>\n            </L7p:SetVariable>\n            <L7p:assertionComment>\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                        <L7p:value stringValue=\"//initialize inputs\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:assertionComment>\n        </wsp:All>\n        <wsp:OneOrMore wsp:Usage=\"Required\">\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:CacheLookup>\n                    <L7p:CacheEntryKey stringValue=\"${rateQuotaUuid}\"/>\n                    <L7p:CacheId stringValue=\"${cacheId}\"/>\n                    <L7p:ContentTypeOverride stringValue=\"\"/>\n                    <L7p:MaxEntryAgeSeconds stringValue=\"${gateway.cluster.rq.cache.age}\"/>\n                    <L7p:OtherTargetMessageVariable stringValue=\"resp\"/>\n                    <L7p:Target target=\"OTHER\"/>\n                </L7p:CacheLookup>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtyZXNwLm1haW5wYXJ0fQ==\"/>\n                    <L7p:VariableToSet stringValue=\"lookup.rateQuotaJson\"/>\n                </L7p:SetVariable>\n                <L7p:CommentAssertion>\n                    <L7p:Comment stringValue=\"------- everytime a lookup is used, we reset the expiration time of the cache----\"/>\n                </L7p:CommentAssertion>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtyZXNwLm1haW5wYXJ0fQ==\"/>\n                    <L7p:ContentType stringValue=\"text/plain; charset=utf-8\"/>\n                    <L7p:DataType variableDataType=\"message\"/>\n                    <L7p:VariableToSet stringValue=\"rateQuotaUuidMsg\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"MjAw\"/>\n                    <L7p:VariableToSet stringValue=\"error.code\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"T0s=\"/>\n                    <L7p:VariableToSet stringValue=\"error.msg\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"ZnJvbSBjYWNoZQ==\"/>\n                    <L7p:VariableToSet stringValue=\"lookup.source\"/>\n                </L7p:SetVariable>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"---------- if ${rateQuotaUuid} already existed in cache ?\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:Encapsulated>\n                    <L7p:EncapsulatedAssertionConfigGuid stringValue=\"392b2ad6-27e9-4969-b18b-9b77b898d1f3\"/>\n                    <L7p:EncapsulatedAssertionConfigName stringValue=\"::l7.apim.system::Portal Rate &amp; Quota Store Value Lookup::2.0\"/>\n                    <L7p:Parameters mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"lookup.entityMappingId\"/>\n                            <L7p:value stringValue=\"${rateQuotaUuid}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"lookup.id\"/>\n                            <L7p:value stringValue=\"${rateQuotaUuid}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"lookup.mappingStoreName\"/>\n                            <L7p:value stringValue=\"${storeName}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"lookup.storeName\"/>\n                            <L7p:value stringValue=\"${storeName}\"/>\n                        </L7p:entry>\n                    </L7p:Parameters>\n                </L7p:Encapsulated>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtsb29rdXAudmFsdWV9\"/>\n                    <L7p:VariableToSet stringValue=\"lookup.rateQuotaJson\"/>\n                </L7p:SetVariable>\n                <wsp:All wsp:Usage=\"Required\">\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"JHtsb29rdXAucmF0ZVF1b3RhSnNvbn0=\"/>\n                        <L7p:ContentType stringValue=\"application/json; charset=utf-8\"/>\n                        <L7p:DataType variableDataType=\"message\"/>\n                        <L7p:VariableToSet stringValue=\"rateQuotaJsonMsg\"/>\n                    </L7p:SetVariable>\n                    <L7p:CacheStorage>\n                        <L7p:CacheEntryKey stringValue=\"${rateQuotaUuid}\"/>\n                        <L7p:CacheId stringValue=\"${cacheId}\"/>\n                        <L7p:MaxEntries stringValue=\"3000\"/>\n                        <L7p:MaxEntryAgeSeconds stringValue=\"${gateway.cluster.rq.cache.age}\"/>\n                        <L7p:OtherTargetMessageVariable stringValue=\"rateQuotaJsonMsg\"/>\n                        <L7p:Target target=\"OTHER\"/>\n                    </L7p:CacheStorage>\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"ZnJvbSAke21hcHBpbmdTdG9yZU5hbWV9IENXUA==\"/>\n                        <L7p:VariableToSet stringValue=\"lookup.source\"/>\n                    </L7p:SetVariable>\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"MjAw\"/>\n                        <L7p:VariableToSet stringValue=\"error.code\"/>\n                    </L7p:SetVariable>\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"T0s=\"/>\n                        <L7p:VariableToSet stringValue=\"error.msg\"/>\n                    </L7p:SetVariable>\n                    <L7p:assertionComment>\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                <L7p:value stringValue=\"-------- store ${lookup.rateQuotaJson} in the cache\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:assertionComment>\n                </wsp:All>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"-------- If the rate quota jsondoesn't exist in cache then lookup in the store\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"MTAz\"/>\n                    <L7p:VariableToSet stringValue=\"error.code\"/>\n                </L7p:SetVariable>\n                <L7p:AuditDetailAssertion>\n                    <L7p:Detail stringValue=\"lookup from cache and CWP failed: lookup.rateQuotaUuid=${lookup.rateQuotaUuid}, lookup.storeName=${lookup.storeName}, gateway.cluster.rq.cacheid=${gateway.cluster.rq.cacheid}\"/>\n                    <L7p:Level stringValue=\"WARNING\"/>\n                    <L7p:LoggingOnly booleanValue=\"true\"/>\n                </L7p:AuditDetailAssertion>\n                <L7p:FalseAssertion/>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                            <L7p:value stringValue=\"error\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <L7p:assertionComment>\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                        <L7p:value stringValue=\"//execute lookup from storeName\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:assertionComment>\n        </wsp:OneOrMore>\n    </wsp:All>\n</wsp:Policy>\n"
      }
    },
    {
      "goid": "11624bf3b45a541fd9ef61ccf1ff6352",
      "guid": "1b982d4b-5e8a-446b-bc0f-17b7e0bd1367",
      "name": "::l7.apim.system::Rate & Quota Enforcement Policy Template::2.0",
      "checksum": "40c0687b86709e91b94e7346913fa8438519455f",
      "folderPath": "/API Portal Integration/Rate and Quota/2.0",
      "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=\"JHtwb3J0YWwubWFuYWdlZC5zZXJ2aWNlLmFwaUlkfQ==\"/>\n            <L7p:VariableToSet stringValue=\"apiId\"/>\n        </L7p:SetVariable>\n        <wsp:All wsp:Usage=\"Required\">\n            <wsp:OneOrMore wsp:Usage=\"Required\">\n                <wsp:All wsp:Usage=\"Required\">\n                    <L7p:Encapsulated>\n                        <L7p:EncapsulatedAssertionConfigGuid stringValue=\"393bcb93-82ad-4b55-8333-1119f607a560\"/>\n                        <L7p:EncapsulatedAssertionConfigName stringValue=\"OTK Require OAuth 2.0 Token\"/>\n                        <L7p:Parameters mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"cache_lifetime\"/>\n                                <L7p:value stringValue=\"0\"/>\n                            </L7p:entry>\n                            <L7p:entry>\n                                <L7p:key stringValue=\"given_access_token\"/>\n                                <L7p:value stringValue=\"\"/>\n                            </L7p:entry>\n                            <L7p:entry>\n                                <L7p:key stringValue=\"onetime\"/>\n                                <L7p:value stringValue=\"false\"/>\n                            </L7p:entry>\n                            <L7p:entry>\n                                <L7p:key stringValue=\"scope_fail\"/>\n                                <L7p:value stringValue=\"false\"/>\n                            </L7p:entry>\n                            <L7p:entry>\n                                <L7p:key stringValue=\"scope_required\"/>\n                                <L7p:value stringValue=\"\"/>\n                            </L7p:entry>\n                        </L7p:Parameters>\n                    </L7p:Encapsulated>\n                    <L7p:SetVariable>\n                        <L7p:AssertionComment assertionComment=\"included\">\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                                    <L7p:value stringValue=\"getRequestApiKey()\"/>\n                                </L7p:entry>\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"// parse API key from request\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:AssertionComment>\n                        <L7p:Base64Expression stringValue=\"JHtzZXNzaW9uLmNsaWVudF9pZH0=\"/>\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:Expression2 stringValue=\"\"/>\n                        <L7p:Negate booleanValue=\"true\"/>\n                        <L7p:Operator operator=\"EMPTY\"/>\n                        <L7p:Predicates predicates=\"included\">\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:AssertionComment assertionComment=\"included\">\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                                    <L7p:value stringValue=\"getRequestApiKey()\"/>\n                                </L7p:entry>\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"// parse API key from request\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:AssertionComment>\n                        <L7p:Base64Expression stringValue=\"JHtyZXF1ZXN0Lmh0dHAucGFyYW1ldGVyLmFwaWtleX0=\"/>\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.header.apikey}\"/>\n                        <L7p:Expression2 stringValue=\"\"/>\n                        <L7p:Negate booleanValue=\"true\"/>\n                        <L7p:Operator operator=\"EMPTY\"/>\n                        <L7p:Predicates predicates=\"included\">\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:AssertionComment assertionComment=\"included\">\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                                    <L7p:value stringValue=\"getRequestApiKey()\"/>\n                                </L7p:entry>\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"// parse API key from request\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:AssertionComment>\n                        <L7p:Base64Expression stringValue=\"JHtyZXF1ZXN0Lmh0dHAuaGVhZGVyLmFwaWtleX0=\"/>\n                        <L7p:VariableToSet stringValue=\"lookupApiKey\"/>\n                    </L7p:SetVariable>\n                </wsp:All>\n                <L7p:SetVariable>\n                    <L7p:AssertionComment assertionComment=\"included\">\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                                <L7p:value stringValue=\"getRequestApiKey()\"/>\n                            </L7p:entry>\n                            <L7p:entry>\n                                <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                <L7p:value stringValue=\"// parse API key from request\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:AssertionComment>\n                    <L7p:Base64Expression stringValue=\"\"/>\n                    <L7p:VariableToSet stringValue=\"lookupApiKey\"/>\n                </L7p:SetVariable>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"//check for oauth2 token or apiKey query/header param\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:OneOrMore>\n            <L7p:SetVariable>\n                <L7p:AssertionComment assertionComment=\"included\">\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                            <L7p:value stringValue=\"getRequestKeySecret()\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"// parse Key Secret from request\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:AssertionComment>\n                <L7p:Base64Expression stringValue=\"JHtyZXF1ZXN0Lmh0dHAucGFyYW1ldGVyLmtleVNlY3JldH0=\"/>\n                <L7p:VariableToSet stringValue=\"keySecret\"/>\n            </L7p:SetVariable>\n            <wsp:OneOrMore wsp:Usage=\"Required\">\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${lookupApiKey}\"/>\n                    <L7p:Expression2 stringValue=\"\"/>\n                    <L7p:Operator operator=\"EMPTY\"/>\n                    <L7p:Predicates predicates=\"included\">\n                        <L7p:item binary=\"included\">\n                            <L7p:CaseSensitive booleanValue=\"false\"/>\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:Encapsulated>\n                        <L7p:EncapsulatedAssertionConfigGuid stringValue=\"d6b48093-4288-44b3-977e-712fdac328e6\"/>\n                        <L7p:EncapsulatedAssertionConfigName stringValue=\"Portal Look Up API Key\"/>\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:OneOrMore wsp:Usage=\"Required\">\n                                <L7p:ComparisonAssertion>\n                                    <L7p:Expression1 stringValue=\"${keySecret}\"/>\n                                    <L7p:Expression2 stringValue=\"\"/>\n                                    <L7p:Operator operator=\"EMPTY\"/>\n                                    <L7p:Predicates predicates=\"included\">\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:ComparisonAssertion>\n                                    <L7p:Expression1 stringValue=\"${keySecret}\"/>\n                                    <L7p:Expression2 stringValue=\"\"/>\n                                    <L7p:Negate booleanValue=\"true\"/>\n                                    <L7p:Operator operator=\"EMPTY\"/>\n                                    <L7p:Predicates predicates=\"included\">\n                                    <L7p:item binary=\"included\">\n                                    <L7p:Negated booleanValue=\"true\"/>\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                                    <L7p:ComparisonAssertion>\n                                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                                    <L7p:Expression1 stringValue=\"${apiKeyRecord.secret}\"/>\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=\"${keySecret}\"/>\n                                    </L7p:item>\n                                    </L7p:Predicates>\n                                    </L7p:ComparisonAssertion>\n                                    <wsp:All wsp:Usage=\"Required\">\n                                    <L7p:ComparisonAssertion>\n                                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                                    <L7p:Expression1 stringValue=\"${apiKeyRecord.hashingMetadata}\"/>\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\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=\"JHthcGlLZXlSZWNvcmQuaGFzaGluZ01ldGFkYXRhfQ==\"/>\n                                    <L7p:ContentType stringValue=\"application/json; charset=utf-8\"/>\n                                    <L7p:DataType variableDataType=\"message\"/>\n                                    <L7p:VariableToSet stringValue=\"hashing_metadata\"/>\n                                    </L7p:SetVariable>\n                                    <L7p:Encapsulated>\n\n                                    <L7p:EncapsulatedAssertionConfigGuid stringValue=\"00000000-0000-0000-0000-000000000000\"/>\n\n                                    <L7p:EncapsulatedAssertionConfigName stringValue=\"OTK Read Hashed Metadata\"/>\n                                    <L7p:NoOpIfConfigMissing booleanValue=\"true\"/>\n                                    </L7p:Encapsulated>\n                                    <L7p:Encapsulated>\n\n                                    <L7p:EncapsulatedAssertionConfigGuid stringValue=\"00000000-0000-0000-0000-000000000000\"/>\n\n                                    <L7p:EncapsulatedAssertionConfigName stringValue=\"OTK Create Hash\"/>\n                                    <L7p:NoOpIfConfigMissing booleanValue=\"true\"/>\n                                    <L7p:Parameters mapValue=\"included\">\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"algorithm\"/>\n                                    <L7p:value stringValue=\"${algorithm.result}\"/>\n                                    </L7p:entry>\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"inputPlaintext\"/>\n                                    <L7p:value stringValue=\"${keySecret}\"/>\n                                    </L7p:entry>\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"salt\"/>\n                                    <L7p:value stringValue=\"${salt.result}\"/>\n                                    </L7p:entry>\n                                    </L7p:Parameters>\n                                    </L7p:Encapsulated>\n                                    <L7p:ComparisonAssertion>\n                                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                                    <L7p:Expression1 stringValue=\"${apiKeyRecord.secret}\"/>\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=\"${hashedValue}\"/>\n                                    </L7p:item>\n                                    </L7p:Predicates>\n                                    </L7p:ComparisonAssertion>\n                                    </wsp:All>\n                                    <wsp:All wsp:Usage=\"Required\">\n                                    <L7p:SetVariable>\n                                    <L7p:Base64Expression stringValue=\"SW52YWxpZCBBUEkgS2V5IFNlY3JldA==\"/>\n                                    <L7p:VariableToSet stringValue=\"errorMsg\"/>\n                                    </L7p:SetVariable>\n                                    <wsp:OneOrMore wsp:Usage=\"Required\">\n                                    <L7p:ComparisonAssertion>\n                                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                                    <L7p:Expression1 stringValue=\"${portal.analytics.response.code}\"/>\n\n                                    <L7p:ExpressionIsVariable booleanValue=\"false\"/>\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 stringLength=\"included\">\n                                    <L7p:Max intValue=\"-1\"/>\n                                    <L7p:Min intValue=\"1\"/>\n                                    </L7p:item>\n                                    </L7p:Predicates>\n                                    </L7p:ComparisonAssertion>\n                                    <L7p:SetVariable>\n\n                                    <L7p:Base64Expression stringValue=\"NDAw\"/>\n                                    <L7p:VariableToSet stringValue=\"portal.analytics.response.code\"/>\n                                    </L7p:SetVariable>\n                                    </wsp:OneOrMore>\n                                    <L7p:ExportVariables>\n                                    <L7p:ExportedVars stringArrayValue=\"included\">\n                                    <L7p:item stringValue=\"counterName\"/>\n                                    <L7p:item stringValue=\"portal.analytics.action\"/>\n                                    <L7p:item stringValue=\"portal.analytics.api.uuid\"/>\n                                    <L7p:item stringValue=\"portal.analytics.application.name\"/>\n                                    <L7p:item stringValue=\"portal.analytics.application.uuid\"/>\n                                    <L7p:item stringValue=\"portal.analytics.authType\"/>\n                                    <L7p:item stringValue=\"portal.analytics.organization.name\"/>\n                                    <L7p:item stringValue=\"portal.analytics.organization.uuid\"/>\n                                    <L7p:item stringValue=\"portal.analytics.response.code\"/>\n                                    <L7p:item stringValue=\"portal.analytics.routingTotalTime\"/>\n                                    </L7p:ExportedVars>\n                                    </L7p:ExportVariables>\n                                    <L7p:FalseAssertion/>\n                                    </wsp:All>\n                                    </wsp:OneOrMore>\n                                </wsp:All>\n                            </wsp:OneOrMore>\n                            <L7p:SetVariable>\n                                <L7p:Base64Expression stringValue=\"dHJ1ZQ==\"/>\n                                <L7p:VariableToSet stringValue=\"apiAuthz\"/>\n                            </L7p:SetVariable>\n                            <L7p:assertionComment>\n                                <L7p:Properties mapValue=\"included\">\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"// success - API key found\"/>\n                                    </L7p:entry>\n                                </L7p:Properties>\n                            </L7p:assertionComment>\n                        </wsp:All>\n                        <wsp:All wsp:Usage=\"Required\">\n                            <L7p:CustomizeErrorResponse>\n                                <L7p:Content stringValueReference=\"inline\"><![CDATA[{\n  \"error.message\" : \"Invalid API Key\",\n  \"error.code\": \"400\"\n}]]></L7p:Content>\n                                <L7p:ContentType stringValue=\"application/json; charset=UTF-8\"/>\n                                <L7p:ExtraHeaders nameValuePairArray=\"included\"/>\n                                <L7p:HttpStatus stringValue=\"400\"/>\n                            </L7p:CustomizeErrorResponse>\n                            <wsp:OneOrMore wsp:Usage=\"Required\">\n                                <L7p:ComparisonAssertion>\n                                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                                    <L7p:Expression1 stringValue=\"${portal.analytics.response.code}\"/>\n                                    <L7p:ExpressionIsVariable booleanValue=\"false\"/>\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 stringLength=\"included\">\n                                    <L7p:Max intValue=\"-1\"/>\n                                    <L7p:Min intValue=\"1\"/>\n                                    </L7p:item>\n                                    </L7p:Predicates>\n                                </L7p:ComparisonAssertion>\n                                <L7p:SetVariable>\n                                    <L7p:Base64Expression stringValue=\"NDAw\"/>\n                                    <L7p:VariableToSet stringValue=\"portal.analytics.response.code\"/>\n                                </L7p:SetVariable>\n                            </wsp:OneOrMore>\n                            <L7p:ExportVariables>\n                                <L7p:ExportedVars stringArrayValue=\"included\">\n                                    <L7p:item stringValue=\"counterName\"/>\n                                    <L7p:item stringValue=\"portal.analytics.action\"/>\n                                    <L7p:item stringValue=\"portal.analytics.api.uuid\"/>\n                                    <L7p:item stringValue=\"portal.analytics.application.name\"/>\n                                    <L7p:item stringValue=\"portal.analytics.application.uuid\"/>\n                                    <L7p:item stringValue=\"portal.analytics.authType\"/>\n                                    <L7p:item stringValue=\"portal.analytics.organization.name\"/>\n                                    <L7p:item stringValue=\"portal.analytics.organization.uuid\"/>\n                                    <L7p:item stringValue=\"portal.analytics.response.code\"/>\n                                    <L7p:item stringValue=\"portal.analytics.routingTotalTime\"/>\n                                </L7p:ExportedVars>\n                            </L7p:ExportVariables>\n                            <L7p:FalseAssertion/>\n                            <L7p:assertionComment>\n                                <L7p:Properties mapValue=\"included\">\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"// error - API key not found\"/>\n                                    </L7p:entry>\n                                </L7p:Properties>\n                            </L7p:assertionComment>\n                        </wsp:All>\n                    </wsp:OneOrMore>\n                    <L7p:assertionComment>\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                                <L7p:value stringValue=\"Step 1 --\"/>\n                            </L7p:entry>\n                            <L7p:entry>\n                                <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                <L7p:value stringValue=\"Lookup API Key\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:assertionComment>\n                </wsp:All>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"//verify API key if exists\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:OneOrMore>\n            <L7p:assertionComment>\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                        <L7p:value stringValue=\"//check request for existence of API key via oauth2 token or apiKey param/header\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:assertionComment>\n        </wsp:All>\n        <wsp:All wsp:Usage=\"Required\">\n            <wsp:OneOrMore wsp:Usage=\"Required\">\n                <L7p:Encapsulated>\n                    <L7p:EncapsulatedAssertionConfigGuid stringValue=\"b934279b-9891-4901-b9ad-9a86fdf37dff\"/>\n                    <L7p:EncapsulatedAssertionConfigName stringValue=\"::l7.apim.system::Portal Rate &amp; Quota Mapping Lookup::2.0\"/>\n                    <L7p:Parameters mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"lookup.entityMappingId\"/>\n                            <L7p:value stringValue=\"${apiId}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"lookup.mappingStoreName\"/>\n                            <L7p:value stringValue=\"portal.l7.api.ratequota\"/>\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=\"${error.code}\"/>\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:RightValue stringValue=\"104\"/>\n                                </L7p:item>\n                            </L7p:Predicates>\n                        </L7p:ComparisonAssertion>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"dHJ1ZQ==\"/>\n                            <L7p:VariableToSet stringValue=\"apiRqNotFound\"/>\n                        </L7p:SetVariable>\n                        <L7p:assertionComment>\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"//success - API RL&amp;Q mapping found\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:assertionComment>\n                    </wsp:All>\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"ewogICJlcnJvci5tZXNzYWdlIiA6ICJVbmFibGUgdG8gZmluZCByYXRlIGxpbWl0ICYgcXVvdGEgbWFwcGluZyBmb3IgJHthcGlJZH0iLAogICJlcnJvci5jb2RlIjogIiR7ZXJyb3IuY29kZX0iCn0=\"/>\n                            <L7p:VariableToSet stringValue=\"error.msg\"/>\n                        </L7p:SetVariable>\n                        <L7p:AuditDetailAssertion>\n                            <L7p:Detail stringValue=\"${error.msg}\"/>\n                            <L7p:Level stringValue=\"WARNING\"/>\n                            <L7p:LoggingOnly booleanValue=\"true\"/>\n                        </L7p:AuditDetailAssertion>\n                        <L7p:CustomizeErrorResponse>\n                            <L7p:Content stringValue=\"${error.msg}\"/>\n                            <L7p:ContentType stringValue=\"application/json\"/>\n                            <L7p:ExtraHeaders nameValuePairArray=\"included\"/>\n                        </L7p:CustomizeErrorResponse>\n                        <L7p:RaiseError/>\n                    </wsp:All>\n                    <L7p:assertionComment>\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                <L7p:value stringValue=\"//check lookup result\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:assertionComment>\n                </wsp:OneOrMore>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"//lookup API level RL&amp;Q mapping via apiId\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:OneOrMore>\n            <wsp:OneOrMore wsp:Usage=\"Required\">\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${apiRqNotFound}\"/>\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:RightValue stringValue=\"true\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <wsp:All wsp:Usage=\"Required\">\n                    <wsp:OneOrMore wsp:Usage=\"Required\">\n                        <L7p:Encapsulated>\n                            <L7p:EncapsulatedAssertionConfigGuid stringValue=\"a2182199-9b82-4f48-98dd-64ec8ea53476\"/>\n                            <L7p:EncapsulatedAssertionConfigName stringValue=\"::l7.apim.system::Portal Rate &amp; Quota Config Lookup::2.0\"/>\n                            <L7p:Parameters mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"lookup.mappingStoreName\"/>\n                                    <L7p:value stringValue=\"portal.l7.ratequota\"/>\n                                </L7p:entry>\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"lookup.rateQuotaUuid\"/>\n                                    <L7p:value stringValue=\"${lookup.rateQuotaUuid}\"/>\n                                </L7p:entry>\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"lookup.storeName\"/>\n                                    <L7p:value stringValue=\"portal.l7.ratequota\"/>\n                                </L7p:entry>\n                            </L7p:Parameters>\n                        </L7p:Encapsulated>\n                        <wsp:All wsp:Usage=\"Required\">\n                            <L7p:SetVariable>\n                                <L7p:Base64Expression stringValue=\"ewogICJlcnJvci5tZXNzYWdlIiA6ICJVbmFibGUgdG8gZmluZCByYXRlIGxpbWl0ICYgcXVvdGEgY29uZmlnIGZvciAke2xvb2t1cC5yYXRlUXVvdGFVdWlkfSIsCiAgImVycm9yLmNvZGUiOiAiJHtlcnJvci5jb2RlfSIKfQ==\"/>\n                                <L7p:VariableToSet stringValue=\"error.msg\"/>\n                            </L7p:SetVariable>\n                            <L7p:CustomizeErrorResponse>\n                                <L7p:Content stringValue=\"${error.msg}\"/>\n                                <L7p:ContentType stringValue=\"application/json\"/>\n                                <L7p:ExtraHeaders nameValuePairArray=\"included\"/>\n                            </L7p:CustomizeErrorResponse>\n                            <L7p:RaiseError/>\n                            <L7p:assertionComment>\n                                <L7p:Properties mapValue=\"included\">\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"//error - RL&amp;Q config not found\"/>\n                                    </L7p:entry>\n                                </L7p:Properties>\n                            </L7p:assertionComment>\n                        </wsp:All>\n                    </wsp:OneOrMore>\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"JHthcGlJZH0=\"/>\n                        <L7p:VariableToSet stringValue=\"l7.counterId\"/>\n                    </L7p:SetVariable>\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"JHtsb29rdXAucmF0ZVF1b3RhSnNvbn0=\"/>\n                        <L7p:VariableToSet stringValue=\"l7.rateQuotaJson\"/>\n                    </L7p:SetVariable>\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"JHtsb29rdXAucmF0ZVF1b3RhVXVpZH0=\"/>\n                        <L7p:VariableToSet stringValue=\"l7.rateQuotaUuid\"/>\n                    </L7p:SetVariable>\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"QVBJIGxldmVs\"/>\n                        <L7p:VariableToSet stringValue=\"l7.rqLevel\"/>\n                    </L7p:SetVariable>\n                    <L7p:Include>\n                        <L7p:PolicyGuid stringValue=\"b11632d5-7b91-461c-aeb5-fc702df83f09\"/>\n                        <L7p:PolicyName stringValue=\"Rate &amp; Quota Policy Enforcement Fragment\"/>\n                    </L7p:Include>\n                    <L7p:ManipulateMultiValuedVariable>\n                        <L7p:SourceVariableName stringValue=\"apiId\"/>\n                        <L7p:TargetVariableName stringValue=\"l7.incrementedCounters\"/>\n                    </L7p:ManipulateMultiValuedVariable>\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"JHtsb29rdXAucmF0ZVF1b3RhVXVpZH0=\"/>\n                        <L7p:VariableToSet stringValue=\"apiRateQuotaId\"/>\n                    </L7p:SetVariable>\n                    <L7p:ExportVariables>\n                        <L7p:ExportedVars stringArrayValue=\"included\">\n                            <L7p:item stringValue=\"apiRateQuotaId\"/>\n                        </L7p:ExportedVars>\n                    </L7p:ExportVariables>\n                    <L7p:assertionComment>\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                <L7p:value stringValue=\"//lookup RL&amp;Q config and enforce\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:assertionComment>\n                </wsp:All>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"//lookup RL&amp;Q via rateQuotaUuid\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:OneOrMore>\n            <L7p:assertionComment>\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                        <L7p:value stringValue=\"//apply API level RL&amp;Q if found\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:assertionComment>\n        </wsp:All>\n        <wsp:OneOrMore wsp:Usage=\"Required\">\n            <L7p:ComparisonAssertion>\n                <L7p:CaseSensitive booleanValue=\"false\"/>\n                <L7p:Expression1 stringValue=\"${lookupApiKey}\"/>\n                <L7p:Expression2 stringValue=\"\"/>\n                <L7p:Operator operator=\"EMPTY\"/>\n                <L7p:Predicates predicates=\"included\">\n                    <L7p:item binary=\"included\">\n                        <L7p:CaseSensitive booleanValue=\"false\"/>\n                        <L7p:Operator operator=\"EMPTY\"/>\n                        <L7p:RightValue stringValue=\"\"/>\n                    </L7p:item>\n                </L7p:Predicates>\n            </L7p:ComparisonAssertion>\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=\"false\"/>\n                    </L7p:item>\n                </L7p:Predicates>\n            </L7p:ComparisonAssertion>\n            <wsp:All wsp:Usage=\"Required\">\n                <wsp:OneOrMore wsp:Usage=\"Required\">\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHthcGlLZXlSZWNvcmQuYWNjb3VudFBsYW5NYXBwaW5nSWR9\"/>\n                            <L7p:VariableToSet stringValue=\"orgUuid\"/>\n                        </L7p:SetVariable>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHthcGlJZH1fJHtvcmdVdWlkfQ==\"/>\n                            <L7p:VariableToSet stringValue=\"apiOrgRqMappingLookupKey\"/>\n                        </L7p:SetVariable>\n                    </wsp:All>\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"ewogICJlcnJvci5tZXNzYWdlIiA6ICJVbmFibGUgdG8gY29uc3RydWN0IEFQSSBvcmdhbml6YXRpb24gcmF0ZSBsaW1pdCAmIHF1b3RhIGxvb2t1cCBrZXkiLAogICJlcnJvci5jb2RlIjogIjUwMCIKfQ==\"/>\n                            <L7p:VariableToSet stringValue=\"error.msg\"/>\n                        </L7p:SetVariable>\n                        <L7p:AuditDetailAssertion>\n                            <L7p:Detail stringValue=\"${error.msg}\"/>\n                            <L7p:Level stringValue=\"WARNING\"/>\n                            <L7p:LoggingOnly booleanValue=\"true\"/>\n                        </L7p:AuditDetailAssertion>\n                        <L7p:CustomizeErrorResponse>\n                            <L7p:Content stringValue=\"${error.msg}\"/>\n                            <L7p:ContentType stringValue=\"application/json\"/>\n                            <L7p:ExtraHeaders nameValuePairArray=\"included\"/>\n                        </L7p:CustomizeErrorResponse>\n                        <L7p:RaiseError/>\n                    </wsp:All>\n                    <L7p:assertionComment>\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                <L7p:value stringValue=\"//construct API+org mapping key ${apiId}_${orgUuid}\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:assertionComment>\n                </wsp:OneOrMore>\n                <wsp:OneOrMore wsp:Usage=\"Required\">\n                    <L7p:Encapsulated>\n                        <L7p:EncapsulatedAssertionConfigGuid stringValue=\"b934279b-9891-4901-b9ad-9a86fdf37dff\"/>\n                        <L7p:EncapsulatedAssertionConfigName stringValue=\"::l7.apim.system::Portal Rate &amp; Quota Mapping Lookup::2.0\"/>\n                        <L7p:Parameters mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"lookup.defaultValue\"/>\n                                <L7p:value stringValue=\"${gateway.portal.l7.default.api.org.ratequota}\"/>\n                            </L7p:entry>\n                            <L7p:entry>\n                                <L7p:key stringValue=\"lookup.entityMappingId\"/>\n                                <L7p:value stringValue=\"${apiOrgRqMappingLookupKey}\"/>\n                            </L7p:entry>\n                            <L7p:entry>\n                                <L7p:key stringValue=\"lookup.mappingStoreName\"/>\n                                <L7p:value stringValue=\"portal.l7.api.org.ratequota\"/>\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=\"${error.code}\"/>\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:RightValue stringValue=\"104\"/>\n                                    </L7p:item>\n                                </L7p:Predicates>\n                            </L7p:ComparisonAssertion>\n                            <L7p:SetVariable>\n                                <L7p:Base64Expression stringValue=\"dHJ1ZQ==\"/>\n                                <L7p:VariableToSet stringValue=\"apiOrgRqNotFound\"/>\n                            </L7p:SetVariable>\n                        </wsp:All>\n                        <wsp:All wsp:Usage=\"Required\">\n                            <L7p:SetVariable>\n                                <L7p:Base64Expression stringValue=\"ewogICJlcnJvci5tZXNzYWdlIiA6ICJVbmFibGUgdG8gZmluZCByYXRlIGxpbWl0ICYgcXVvdGEgbWFwcGluZyBmb3IgJHthcGlJZH0iLAogICJlcnJvci5jb2RlIjogIiR7ZXJyb3IuY29kZX0iCn0=\"/>\n                                <L7p:VariableToSet stringValue=\"error.msg\"/>\n                            </L7p:SetVariable>\n                            <L7p:CustomizeErrorResponse>\n                                <L7p:Content stringValue=\"${error.msg}\"/>\n                                <L7p:ContentType stringValue=\"application/json\"/>\n                                <L7p:ExtraHeaders nameValuePairArray=\"included\"/>\n                            </L7p:CustomizeErrorResponse>\n                            <L7p:AuditDetailAssertion>\n                                <L7p:Detail stringValue=\"${error.msg}\"/>\n                                <L7p:Level stringValue=\"WARNING\"/>\n                                <L7p:LoggingOnly booleanValue=\"true\"/>\n                            </L7p:AuditDetailAssertion>\n                            <L7p:RaiseError/>\n                        </wsp:All>\n                    </wsp:OneOrMore>\n                    <L7p:assertionComment>\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                <L7p:value stringValue=\"//lookup RL&amp;Q config\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:assertionComment>\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=\"${apiOrgRqNotFound}\"/>\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:RightValue stringValue=\"true\"/>\n                                </L7p:item>\n                            </L7p:Predicates>\n                        </L7p:ComparisonAssertion>\n                        <wsp:All wsp:Usage=\"Required\">\n                            <L7p:SetVariable>\n                                <L7p:Base64Expression stringValue=\"JHtnYXRld2F5LnBvcnRhbC5sNy5kZWZhdWx0LmFwaS5vcmcucmF0ZXF1b3RhfQ==\"/>\n                                <L7p:VariableToSet stringValue=\"lookup.rateQuotaUuid\"/>\n                            </L7p:SetVariable>\n                            <L7p:FalseAssertion/>\n                        </wsp:All>\n                        <L7p:assertionComment>\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"//if API+org RL&amp;Q not found, use default\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:assertionComment>\n                    </wsp:All>\n                    <wsp:All wsp:Usage=\"Required\">\n                        <wsp:OneOrMore wsp:Usage=\"Required\">\n                            <L7p:Encapsulated>\n                                <L7p:EncapsulatedAssertionConfigGuid stringValue=\"a2182199-9b82-4f48-98dd-64ec8ea53476\"/>\n                                <L7p:EncapsulatedAssertionConfigName stringValue=\"::l7.apim.system::Portal Rate &amp; Quota Config Lookup::2.0\"/>\n                                <L7p:Parameters mapValue=\"included\">\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"lookup.mappingStoreName\"/>\n                                    <L7p:value stringValue=\"portal.l7.ratequota\"/>\n                                    </L7p:entry>\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"lookup.rateQuotaUuid\"/>\n                                    <L7p:value stringValue=\"${lookup.rateQuotaUuid}\"/>\n                                    </L7p:entry>\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"lookup.storeName\"/>\n                                    <L7p:value stringValue=\"portal.l7.ratequota\"/>\n                                    </L7p:entry>\n                                </L7p:Parameters>\n                            </L7p:Encapsulated>\n                            <wsp:All wsp:Usage=\"Required\">\n                                <L7p:SetVariable>\n                                    <L7p:Base64Expression stringValue=\"ewogICJlcnJvci5tZXNzYWdlIiA6ICJVbmFibGUgdG8gZmluZCByYXRlIGxpbWl0ICYgcXVvdGEgY29uZmlnIGZvciAke2xvb2t1cC5yYXRlUXVvdGFVdWlkfSIsCiAgImVycm9yLmNvZGUiOiAiJHtlcnJvci5jb2RlfSIKfQ==\"/>\n                                    <L7p:VariableToSet stringValue=\"error.msg\"/>\n                                </L7p:SetVariable>\n                                <L7p:CustomizeErrorResponse>\n                                    <L7p:Content stringValue=\"${error.msg}\"/>\n                                    <L7p:ContentType stringValue=\"application/json\"/>\n                                    <L7p:ExtraHeaders nameValuePairArray=\"included\"/>\n                                </L7p:CustomizeErrorResponse>\n                                <L7p:RaiseError/>\n                            </wsp:All>\n                        </wsp:OneOrMore>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHthcGlPcmdScU1hcHBpbmdMb29rdXBLZXl9\"/>\n                            <L7p:VariableToSet stringValue=\"l7.counterId\"/>\n                        </L7p:SetVariable>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHtsb29rdXAucmF0ZVF1b3RhSnNvbn0=\"/>\n                            <L7p:VariableToSet stringValue=\"l7.rateQuotaJson\"/>\n                        </L7p:SetVariable>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHtsb29rdXAucmF0ZVF1b3RhVXVpZH0=\"/>\n                            <L7p:VariableToSet stringValue=\"l7.rateQuotaUuid\"/>\n                        </L7p:SetVariable>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"QVBJIG9yZ2FuaXphdGlvbiBsZXZlbA==\"/>\n                            <L7p:VariableToSet stringValue=\"l7.rqLevel\"/>\n                        </L7p:SetVariable>\n                        <L7p:Include>\n                            <L7p:PolicyGuid stringValue=\"b11632d5-7b91-461c-aeb5-fc702df83f09\"/>\n                            <L7p:PolicyName stringValue=\"Rate &amp; Quota Policy Enforcement Fragment\"/>\n                        </L7p:Include>\n                        <L7p:ManipulateMultiValuedVariable>\n                            <L7p:SourceVariableName stringValue=\"apiOrgRqMappingLookupKey\"/>\n                            <L7p:TargetVariableName stringValue=\"l7.incrementedCounters\"/>\n                        </L7p:ManipulateMultiValuedVariable>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHtsb29rdXAucmF0ZVF1b3RhVXVpZH0=\"/>\n                            <L7p:VariableToSet stringValue=\"apiOrgRateQuotaId\"/>\n                        </L7p:SetVariable>\n                        <L7p:ExportVariables>\n                            <L7p:ExportedVars stringArrayValue=\"included\">\n                                <L7p:item stringValue=\"apiOrgRateQuotaId\"/>\n                            </L7p:ExportedVars>\n                        </L7p:ExportVariables>\n                    </wsp:All>\n                    <L7p:assertionComment>\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                <L7p:value stringValue=\"//apply API+org RL&amp;Q if found\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:assertionComment>\n                </wsp:OneOrMore>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"//lookup API+org RL&amp;Q mapping, config and apply if found\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <L7p:assertionComment>\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                        <L7p:value stringValue=\"//apply API+Org level RL&amp;Q if apiKey exists\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:assertionComment>\n        </wsp:OneOrMore>\n        <wsp:OneOrMore wsp:Usage=\"Required\">\n            <L7p:ComparisonAssertion>\n                <L7p:CaseSensitive booleanValue=\"false\"/>\n                <L7p:Expression1 stringValue=\"${lookupApiKey}\"/>\n                <L7p:Expression2 stringValue=\"\"/>\n                <L7p:Operator operator=\"EMPTY\"/>\n                <L7p:Predicates predicates=\"included\">\n                    <L7p:item binary=\"included\">\n                        <L7p:CaseSensitive booleanValue=\"false\"/>\n                        <L7p:Operator operator=\"EMPTY\"/>\n                        <L7p:RightValue stringValue=\"\"/>\n                    </L7p:item>\n                </L7p:Predicates>\n            </L7p:ComparisonAssertion>\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=\"false\"/>\n                    </L7p:item>\n                </L7p:Predicates>\n            </L7p:ComparisonAssertion>\n            <wsp:All wsp:Usage=\"Required\">\n                <wsp:OneOrMore wsp:Usage=\"Required\">\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:CommentAssertion>\n                            <L7p:Comment stringValue=\"Find ApplicationUuid from CustomMetaData field\"/>\n                        </L7p:CommentAssertion>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHthcGlrZXlSZWNvcmQueG1sfQ==\"/>\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=\"customFieldsMetadata\"/>\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=\"JHtjdXN0b21GaWVsZHNNZXRhZGF0YS5yZXN1bHR9\"/>\n                            <L7p:VariableToSet stringValue=\"customFieldsMetadata\"/>\n                        </L7p:SetVariable>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHtjdXN0b21GaWVsZHNNZXRhZGF0YX0=\"/>\n                            <L7p:ContentType stringValue=\"application/json; charset=utf-8\"/>\n                            <L7p:DataType variableDataType=\"message\"/>\n                            <L7p:VariableToSet stringValue=\"customFieldsJson\"/>\n                        </L7p:SetVariable>\n                        <L7p:EvaluateJsonPathExpression>\n                            <L7p:Expression stringValue=\"$._portalApplicationUuid\"/>\n                            <L7p:OtherTargetMessageVariable stringValue=\"customFieldsJson\"/>\n                            <L7p:Target target=\"OTHER\"/>\n                            <L7p:VariablePrefix stringValue=\"appUuid\"/>\n                        </L7p:EvaluateJsonPathExpression>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHthcHBVdWlkLnJlc3VsdH0=\"/>\n                            <L7p:VariableToSet stringValue=\"applicationUuid\"/>\n                        </L7p:SetVariable>\n                    </wsp:All>\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"ewogICJlcnJvci5tZXNzYWdlIiA6ICJVbmFibGUgdG8gZmluZCBhcHBsaWNhdGlvblV1aWQgZnJvbSBhcGlLZXk6ICR7bG9va3VwQXBpS2V5fSIsCiAgImVycm9yLmNvZGUiOiAiNTAwIgp9\"/>\n                            <L7p:VariableToSet stringValue=\"error.msg\"/>\n                        </L7p:SetVariable>\n                        <L7p:AuditDetailAssertion>\n                            <L7p:Detail stringValue=\"${error.msg}\"/>\n                            <L7p:Level stringValue=\"WARNING\"/>\n                            <L7p:LoggingOnly booleanValue=\"true\"/>\n                        </L7p:AuditDetailAssertion>\n                        <L7p:CustomizeErrorResponse>\n                            <L7p:Content stringValue=\"${error.msg}\"/>\n                            <L7p:ContentType stringValue=\"application/json\"/>\n                            <L7p:ExtraHeaders nameValuePairArray=\"included\"/>\n                        </L7p:CustomizeErrorResponse>\n                        <L7p:RaiseError/>\n                    </wsp:All>\n                    <L7p:assertionComment>\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                <L7p:value stringValue=\"// lookup applicationUuid from apikeyRecord\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:assertionComment>\n                </wsp:OneOrMore>\n                <wsp:OneOrMore wsp:Usage=\"Required\">\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:SetVariable>\n                            <L7p:AssertionComment assertionComment=\"included\">\n                                <L7p:Properties mapValue=\"included\">\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"// make xpath expression\"/>\n                                    </L7p:entry>\n                                </L7p:Properties>\n                            </L7p:AssertionComment>\n                            <L7p:Base64Expression stringValue=\"L2w3OkFwaUtleS9sNzpBcGlzL2w3OkFwaVtAYXBpSWQ9IiR7YXBpSWR9Il0vQHByb2R1Y3Rz\"/>\n                            <L7p:VariableToSet stringValue=\"xpathExp\"/>\n                        </L7p:SetVariable>\n                        <L7p:ResponseXpathAssertion>\n                            <L7p:AssertionComment assertionComment=\"included\">\n                                <L7p:Properties mapValue=\"included\">\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"// find the product ids of the given api id in the xml message\"/>\n                                    </L7p:entry>\n                                </L7p:Properties>\n                            </L7p:AssertionComment>\n                            <L7p:VariablePrefix stringValue=\"xpathProductIds\"/>\n                            <L7p:XmlMsgSrc stringValue=\"recordXml\"/>\n                            <L7p:XpathExpression xpathExpressionValue=\"included\">\n                                <L7p:Expression stringValue=\"${xpathExp}\"/>\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=\"JHt4cGF0aFByb2R1Y3RJZHMucmVzdWx0fQ==\"/>\n                            <L7p:VariableToSet stringValue=\"lookup.productIds\"/>\n                        </L7p:SetVariable>\n                    </wsp:All>\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"\"/>\n                        <L7p:VariableToSet stringValue=\"lookup.productIds\"/>\n                    </L7p:SetVariable>\n                    <L7p:assertionComment>\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                <L7p:value stringValue=\"lookup productIds from recordXml\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:assertionComment>\n                </wsp:OneOrMore>\n                <wsp:OneOrMore wsp:Usage=\"Required\">\n                    <L7p:ComparisonAssertion>\n                        <L7p:CaseSensitive booleanValue=\"false\"/>\n                        <L7p:Expression1 stringValue=\"${lookup.productIds}\"/>\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:Split>\n                            <L7p:IgnoreEmptyValues booleanValue=\"true\"/>\n                            <L7p:InputVariable stringValue=\"lookup.productIds\"/>\n                            <L7p:OutputVariable stringValue=\"productUuids\"/>\n                        </L7p:Split>\n                        <L7p:ForEachLoop L7p:Usage=\"Required\"\n                            loopVariable=\"productUuids\" variablePrefix=\"nextProduct\">\n                            <wsp:All wsp:Usage=\"Required\">\n                                <wsp:OneOrMore wsp:Usage=\"Required\">\n                                    <wsp:All wsp:Usage=\"Required\">\n                                    <L7p:SetVariable>\n                                    <L7p:Base64Expression stringValue=\"JHtuZXh0UHJvZHVjdC5jdXJyZW50fQ==\"/>\n                                    <L7p:VariableToSet stringValue=\"productUuid\"/>\n                                    </L7p:SetVariable>\n                                    <L7p:SetVariable>\n                                    <L7p:Base64Expression stringValue=\"JHthcHBsaWNhdGlvblV1aWR9XyR7cHJvZHVjdFV1aWR9\"/>\n                                    <L7p:VariableToSet stringValue=\"appProductRqMappingLookupKey\"/>\n                                    </L7p:SetVariable>\n                                    </wsp:All>\n                                    <wsp:All wsp:Usage=\"Required\">\n                                    <L7p:SetVariable>\n                                    <L7p:Base64Expression stringValue=\"ewogICJlcnJvci5tZXNzYWdlIiA6ICJVbmFibGUgdG8gY29uc3RydWN0IEFwcGxpY2F0aW9uIFByb2R1Y3QgcmF0ZSBsaW1pdCAmIHF1b3RhIGxvb2t1cCBrZXkiLAogICJlcnJvci5jb2RlIjogIjUwMCIKfQ==\"/>\n                                    <L7p:VariableToSet stringValue=\"error.msg\"/>\n                                    </L7p:SetVariable>\n                                    <L7p:AuditDetailAssertion>\n                                    <L7p:Detail stringValue=\"${error.msg}\"/>\n                                    <L7p:Level stringValue=\"WARNING\"/>\n                                    <L7p:LoggingOnly booleanValue=\"true\"/>\n                                    </L7p:AuditDetailAssertion>\n                                    <L7p:CustomizeErrorResponse>\n                                    <L7p:Content stringValue=\"${error.msg}\"/>\n                                    <L7p:ContentType stringValue=\"application/json\"/>\n                                    <L7p:ExtraHeaders nameValuePairArray=\"included\"/>\n                                    </L7p:CustomizeErrorResponse>\n                                    <L7p:RaiseError/>\n                                    </wsp:All>\n                                    <L7p:assertionComment>\n                                    <L7p:Properties mapValue=\"included\">\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"//construct Application+Product mapping key as ${applicationUuid}_${productUuid}\"/>\n                                    </L7p:entry>\n                                    </L7p:Properties>\n                                    </L7p:assertionComment>\n                                </wsp:OneOrMore>\n                                <wsp:OneOrMore wsp:Usage=\"Required\">\n                                    <L7p:Encapsulated>\n\n                                    <L7p:EncapsulatedAssertionConfigGuid stringValue=\"c3331333-6244-49cb-bb79-01cf015b0e76\"/>\n\n                                    <L7p:EncapsulatedAssertionConfigName stringValue=\"::l7.apim.system::Portal App Product Rate &amp; Quota Mapping Lookup::2.0\"/>\n                                    <L7p:Parameters mapValue=\"included\">\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"lookup.entityMappingId\"/>\n                                    <L7p:value stringValue=\"${appProductRqMappingLookupKey}\"/>\n                                    </L7p:entry>\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"lookup.mappingStoreName\"/>\n                                    <L7p:value stringValue=\"gateway.portal.l7.application.product\"/>\n                                    </L7p:entry>\n                                    </L7p:Parameters>\n                                    </L7p:Encapsulated>\n                                    <wsp:All wsp:Usage=\"Required\">\n                                    <L7p:SetVariable>\n                                    <L7p:Base64Expression stringValue=\"ewogICJlcnJvci5tZXNzYWdlIiA6ICJVbmFibGUgdG8gZmluZCBhcHBsaWNhdGlvbiBwcm9kdWN0IFJhdGUgTGltaXQgJiBRdW90YSBtYXBwaW5nIGZvciBhcGkgJHthcGlJZH0sIGFwaUtleSAke2xvb2t1cEFwaUtleX0iLAogICJlcnJvci5jb2RlIjogIiR7ZXJyb3IuY29kZX0iCn0=\"/>\n                                    <L7p:VariableToSet stringValue=\"error.msg\"/>\n                                    </L7p:SetVariable>\n                                    <L7p:CustomizeErrorResponse>\n                                    <L7p:Content stringValue=\"${error.msg}\"/>\n                                    <L7p:ContentType stringValue=\"application/json\"/>\n                                    <L7p:ExtraHeaders nameValuePairArray=\"included\"/>\n                                    </L7p:CustomizeErrorResponse>\n                                    <L7p:AuditDetailAssertion>\n                                    <L7p:Detail stringValue=\"${error.msg}\"/>\n                                    <L7p:Level stringValue=\"WARNING\"/>\n                                    <L7p:LoggingOnly booleanValue=\"true\"/>\n                                    </L7p:AuditDetailAssertion>\n                                    <L7p:RaiseError/>\n                                    </wsp:All>\n                                    <L7p:assertionComment>\n                                    <L7p:Properties mapValue=\"included\">\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"//lookup RL&amp;Q uuid\"/>\n                                    </L7p:entry>\n                                    </L7p:Properties>\n                                    </L7p:assertionComment>\n                                </wsp:OneOrMore>\n                                <wsp:OneOrMore wsp:Usage=\"Required\">\n                                    <L7p:Encapsulated>\n\n                                    <L7p:EncapsulatedAssertionConfigGuid stringValue=\"a2182199-9b82-4f48-98dd-64ec8ea53476\"/>\n\n                                    <L7p:EncapsulatedAssertionConfigName stringValue=\"::l7.apim.system::Portal Rate &amp; Quota Config Lookup::2.0\"/>\n                                    <L7p:Parameters mapValue=\"included\">\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"lookup.mappingStoreName\"/>\n                                    <L7p:value stringValue=\"portal.l7.ratequota\"/>\n                                    </L7p:entry>\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"lookup.rateQuotaUuid\"/>\n                                    <L7p:value stringValue=\"${lookup.rateQuotaUuid}\"/>\n                                    </L7p:entry>\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"lookup.storeName\"/>\n                                    <L7p:value stringValue=\"portal.l7.ratequota\"/>\n                                    </L7p:entry>\n                                    </L7p:Parameters>\n                                    </L7p:Encapsulated>\n                                    <wsp:All wsp:Usage=\"Required\">\n                                    <L7p:SetVariable>\n                                    <L7p:Base64Expression stringValue=\"ewogICJlcnJvci5tZXNzYWdlIiA6ICJVbmFibGUgdG8gZmluZCByYXRlIGxpbWl0ICYgcXVvdGEgY29uZmlnIGZvciAke2xvb2t1cC5yYXRlUXVvdGFVdWlkfSIsCiAgImVycm9yLmNvZGUiOiAiJHtlcnJvci5jb2RlfSIKfQ==\"/>\n                                    <L7p:VariableToSet stringValue=\"error.msg\"/>\n                                    </L7p:SetVariable>\n                                    <L7p:CustomizeErrorResponse>\n                                    <L7p:Content stringValue=\"${error.msg}\"/>\n                                    <L7p:ContentType stringValue=\"application/json\"/>\n                                    <L7p:ExtraHeaders nameValuePairArray=\"included\"/>\n                                    </L7p:CustomizeErrorResponse>\n                                    <L7p:RaiseError/>\n                                    </wsp:All>\n                                    <L7p:assertionComment>\n                                    <L7p:Properties mapValue=\"included\">\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"//apply Application+Product RL&amp;Q if found\"/>\n                                    </L7p:entry>\n                                    </L7p:Properties>\n                                    </L7p:assertionComment>\n                                </wsp:OneOrMore>\n                                <wsp:All wsp:Usage=\"Required\">\n                                    <L7p:Split>\n                                    <L7p:InputVariable stringValue=\"appProductRqMappingLookupKey\"/>\n                                    <L7p:OutputVariable stringValue=\"entityMappingUuids\"/>\n                                    <L7p:SplitPattern stringValue=\"_\"/>\n                                    </L7p:Split>\n                                    <L7p:SetVariable>\n                                    <L7p:Base64Expression stringValue=\"JHtlbnRpdHlNYXBwaW5nVXVpZHNbMF19\"/>\n                                    <L7p:VariableToSet stringValue=\"applicationUuid\"/>\n                                    </L7p:SetVariable>\n                                    <L7p:SetVariable>\n                                    <L7p:Base64Expression stringValue=\"JHtlbnRpdHlNYXBwaW5nVXVpZHNbMV19\"/>\n                                    <L7p:VariableToSet stringValue=\"productAndTierUuid\"/>\n                                    </L7p:SetVariable>\n                                    <L7p:Split>\n                                    <L7p:InputVariable stringValue=\"productAndTierUuid\"/>\n                                    <L7p:OutputVariable stringValue=\"productAndTierUuid\"/>\n                                    <L7p:SplitPattern stringValue=\":\"/>\n                                    </L7p:Split>\n                                    <L7p:SetVariable>\n                                    <L7p:Base64Expression stringValue=\"JHtwcm9kdWN0QW5kVGllclV1aWRbMF19\"/>\n                                    <L7p:VariableToSet stringValue=\"productUuid\"/>\n                                    </L7p:SetVariable>\n                                    <L7p:SetVariable>\n                                    <L7p:Base64Expression stringValue=\"JHtwcm9kdWN0QW5kVGllclV1aWRbMV19\"/>\n                                    <L7p:VariableToSet stringValue=\"tierUuid\"/>\n                                    </L7p:SetVariable>\n                                    <L7p:assertionComment>\n                                    <L7p:Properties mapValue=\"included\">\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                                    <L7p:value stringValue=\"//parse productUuid from productId value from key\"/>\n                                    </L7p:entry>\n                                    </L7p:Properties>\n                                    </L7p:assertionComment>\n                                </wsp:All>\n                                <L7p:SetVariable>\n                                    <L7p:Base64Expression stringValue=\"JHthcHBsaWNhdGlvblV1aWR9XyR7cHJvZHVjdHV1aWR9\"/>\n                                    <L7p:VariableToSet stringValue=\"l7.counterId\"/>\n                                </L7p:SetVariable>\n                                <L7p:SetVariable>\n                                    <L7p:Base64Expression stringValue=\"JHtsb29rdXAucmF0ZVF1b3RhSnNvbn0=\"/>\n                                    <L7p:VariableToSet stringValue=\"l7.rateQuotaJson\"/>\n                                </L7p:SetVariable>\n                                <L7p:SetVariable>\n                                    <L7p:Base64Expression stringValue=\"JHtsb29rdXAucmF0ZVF1b3RhVXVpZH0=\"/>\n                                    <L7p:VariableToSet stringValue=\"l7.rateQuotaUuid\"/>\n                                </L7p:SetVariable>\n                                <L7p:SetVariable>\n                                    <L7p:Base64Expression stringValue=\"QXBwbGljYXRpb24gUHJvZHVjdCBsZXZlbA==\"/>\n                                    <L7p:VariableToSet stringValue=\"l7.rqLevel\"/>\n                                </L7p:SetVariable>\n                                <L7p:Include>\n                                    <L7p:PolicyGuid stringValue=\"b11632d5-7b91-461c-aeb5-fc702df83f09\"/>\n                                    <L7p:PolicyName stringValue=\"Rate &amp; Quota Policy Enforcement Fragment\"/>\n                                </L7p:Include>\n                                <L7p:ManipulateMultiValuedVariable>\n                                    <L7p:SourceVariableName stringValue=\"appProductRqMappingLookupKey\"/>\n                                    <L7p:TargetVariableName stringValue=\"l7.incrementedCounters\"/>\n                                </L7p:ManipulateMultiValuedVariable>\n                                <L7p:assertionComment>\n                                    <L7p:Properties mapValue=\"included\">\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"//lookup Application+Porduct RL&amp;Q mapping, config and apply if found\"/>\n                                    </L7p:entry>\n                                    </L7p:Properties>\n                                </L7p:assertionComment>\n                            </wsp:All>\n                            <L7p:assertionComment>\n                                <L7p:Properties mapValue=\"included\">\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                                    <L7p:value stringValue=\"products\"/>\n                                    </L7p:entry>\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"apply Applicaiton + Product RL&amp;Q\"/>\n                                    </L7p:entry>\n                                </L7p:Properties>\n                            </L7p:assertionComment>\n                        </L7p:ForEachLoop>\n                    </wsp:All>\n                    <L7p:assertionComment>\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                <L7p:value stringValue=\"//lookup Applicaiton + Products RL&amp;Q mapping, config and apply if found\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:assertionComment>\n                </wsp:OneOrMore>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"//lookup API+Product RL&amp;Q mapping, config and apply if found\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <L7p:assertionComment>\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                        <L7p:value stringValue=\"//apply API+Product level RL&amp;Q if apiKey exists\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:assertionComment>\n        </wsp:OneOrMore>\n    </wsp:All>\n</wsp:Policy>\n"
      }
    },
    {
      "goid": "11624bf3b45a541fd9ef61ccf1ff6351",
      "guid": "268c3f39-2342-41c6-bde5-1d732090d8d6",
      "name": "::l7.apim.system::Rate & Quota Mapping Lookup::2.0",
      "checksum": "b24b90b845ef3c33396385ae323df7cc4212a8cc",
      "folderPath": "/API Portal Integration/Rate and Quota/2.0",
      "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:CommentAssertion>\n            <L7p:Comment stringValue=\"Policy Fragment: Rate &amp; Quota Mapping Lookup\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"--------------------------------------------------------------\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"Expected input: ${lookup.entityMappingId}, ${lookup.mappingStoreName}\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"Expected cluster variable: ${cluster.rq.cacheid}\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"Expected output: ${lookup.rateQuotaUuid}, ${error.code}\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"--------------------------------------------------------------\"/>\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=\"${lookup.entityMappingId}\"/>\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:Negated booleanValue=\"true\"/>\n                            <L7p:Operator operator=\"EMPTY\"/>\n                            <L7p:RightValue stringValue=\"\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${lookup.mappingStoreName}\"/>\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:Negated booleanValue=\"true\"/>\n                            <L7p:Operator operator=\"EMPTY\"/>\n                            <L7p:RightValue stringValue=\"\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${gateway.cluster.rq.cacheid}\"/>\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:Negated booleanValue=\"true\"/>\n                            <L7p:Operator operator=\"EMPTY\"/>\n                            <L7p:RightValue stringValue=\"\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n            </wsp:All>\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"MTAz\"/>\n                    <L7p:VariableToSet stringValue=\"error.code\"/>\n                </L7p:SetVariable>\n                <L7p:AuditDetailAssertion>\n                    <L7p:Detail stringValue=\"input validation failure: lookup.entityMappingId=${lookup.entityMappingId}, lookup.storeName=${lookup.storeName}, gateway.cluster.rq.cacheid=${gateway.cluster.rq.cacheid}\"/>\n                    <L7p:Level stringValue=\"WARNING\"/>\n                    <L7p:LoggingOnly booleanValue=\"true\"/>\n                </L7p:AuditDetailAssertion>\n                <L7p:FalseAssertion/>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                            <L7p:value stringValue=\"error\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <L7p:assertionComment>\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                        <L7p:value stringValue=\"-------- validate inputs\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:assertionComment>\n        </wsp:OneOrMore>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"Policy Fragment: Rate &amp; Quota Mapping Lookup\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"------ lookup in cache for the rateQuotaUuid ---------\"/>\n        </L7p:CommentAssertion>\n        <wsp:All wsp:Usage=\"Required\">\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"JHtnYXRld2F5LmNsdXN0ZXIucnEuY2FjaGVpZH0=\"/>\n                <L7p:VariableToSet stringValue=\"cacheId\"/>\n            </L7p:SetVariable>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"\"/>\n                <L7p:VariableToSet stringValue=\"planId\"/>\n            </L7p:SetVariable>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"\"/>\n                <L7p:ContentType stringValue=\"text/plain; charset=utf-8\"/>\n                <L7p:DataType variableDataType=\"message\"/>\n                <L7p:VariableToSet stringValue=\"planIdMsg\"/>\n            </L7p:SetVariable>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"\"/>\n                <L7p:VariableToSet stringValue=\"lookup.rateQuotaUuid\"/>\n            </L7p:SetVariable>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"\"/>\n                <L7p:VariableToSet stringValue=\"lookup.source\"/>\n            </L7p:SetVariable>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"\"/>\n                <L7p:VariableToSet stringValue=\"error.code\"/>\n            </L7p:SetVariable>\n            <L7p:assertionComment>\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                        <L7p:value stringValue=\"-------- Context variables\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:assertionComment>\n        </wsp:All>\n        <wsp:OneOrMore wsp:Usage=\"Required\">\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:CacheLookup>\n                    <L7p:CacheEntryKey stringValue=\"${lookup.entityMappingId}\"/>\n                    <L7p:CacheId stringValue=\"${cacheId}\"/>\n                    <L7p:ContentTypeOverride stringValue=\"\"/>\n                    <L7p:MaxEntryAgeSeconds stringValue=\"${gateway.cluster.rq.cache.age}\"/>\n                    <L7p:OtherTargetMessageVariable stringValue=\"resp\"/>\n                    <L7p:Target target=\"OTHER\"/>\n                </L7p:CacheLookup>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtyZXNwLm1haW5wYXJ0fQ==\"/>\n                    <L7p:VariableToSet stringValue=\"lookup.rateQuotaUuid\"/>\n                </L7p:SetVariable>\n                <L7p:CommentAssertion>\n                    <L7p:Comment stringValue=\"------- everytime a lookup is used, we reset the expiration time of the cache----\"/>\n                </L7p:CommentAssertion>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtyZXNwLm1haW5wYXJ0fQ==\"/>\n                    <L7p:ContentType stringValue=\"text/plain; charset=utf-8\"/>\n                    <L7p:DataType variableDataType=\"message\"/>\n                    <L7p:VariableToSet stringValue=\"rqUuidMsg\"/>\n                </L7p:SetVariable>\n                <L7p:CacheStorage>\n                    <L7p:CacheEntryKey stringValue=\"${lookup.entityMappingId}\"/>\n                    <L7p:CacheId stringValue=\"${cacheId}\"/>\n                    <L7p:MaxEntries stringValue=\"10000\"/>\n                    <L7p:MaxEntryAgeSeconds stringValue=\"${gateway.cluster.rq.cache.age}\"/>\n                    <L7p:MaxEntrySizeBytes stringValue=\"1000\"/>\n                    <L7p:OtherTargetMessageVariable stringValue=\"rqUuidMsg\"/>\n                    <L7p:Target target=\"OTHER\"/>\n                </L7p:CacheStorage>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"MjAw\"/>\n                    <L7p:VariableToSet stringValue=\"error.code\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"T0s=\"/>\n                    <L7p:VariableToSet stringValue=\"error.msg\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"ZnJvbSBjYWNoZQ==\"/>\n                    <L7p:VariableToSet stringValue=\"lookup.source\"/>\n                </L7p:SetVariable>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"---------- if ${entityMappingId} already existed in cache ?\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <L7p:CommentAssertion>\n                <L7p:Comment stringValue=\"If the ${entityMappingId} doesn't exist then\"/>\n            </L7p:CommentAssertion>\n            <L7p:CommentAssertion>\n                <L7p:Comment stringValue=\"Lookup in the ${lookup.mappingStoreName} cluster-wide-property\"/>\n            </L7p:CommentAssertion>\n            <L7p:CommentAssertion>\n                <L7p:Comment stringValue=\"Parse the JSON to get rqUuid AND add this &lt;${entityMappingUuid}, ${rqUuid}> to cache\"/>\n            </L7p:CommentAssertion>\n            <wsp:All wsp:Usage=\"Required\">\n                <wsp:OneOrMore wsp:Usage=\"Required\">\n                    <L7p:Encapsulated>\n                        <L7p:EncapsulatedAssertionConfigGuid stringValue=\"392b2ad6-27e9-4969-b18b-9b77b898d1f3\"/>\n                        <L7p:EncapsulatedAssertionConfigName stringValue=\"::l7.apim.system::Portal Rate &amp; Quota Store Value Lookup::2.0\"/>\n                        <L7p:Parameters mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"lookup.entityMappingId\"/>\n                                <L7p:value stringValue=\"${lookup.entityMappingId}\"/>\n                            </L7p:entry>\n                            <L7p:entry>\n                                <L7p:key stringValue=\"lookup.id\"/>\n                                <L7p:value stringValue=\"${lookup.entityMappingId}\"/>\n                            </L7p:entry>\n                            <L7p:entry>\n                                <L7p:key stringValue=\"lookup.mappingStoreName\"/>\n                                <L7p:value stringValue=\"${lookup.mappingStoreName}\"/>\n                            </L7p:entry>\n                            <L7p:entry>\n                                <L7p:key stringValue=\"lookup.storeName\"/>\n                                <L7p:value stringValue=\"${lookup.mappingStoreName}\"/>\n                            </L7p:entry>\n                        </L7p:Parameters>\n                    </L7p:Encapsulated>\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:ComparisonAssertion>\n                            <L7p:CaseSensitive booleanValue=\"false\"/>\n                            <L7p:Expression1 stringValue=\"${lookup.defaultValue}\"/>\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: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=\"JHtsb29rdXAuZGVmYXVsdFZhbHVlfQ==\"/>\n                            <L7p:VariableToSet stringValue=\"lookup.value\"/>\n                        </L7p:SetVariable>\n                        <L7p:AuditDetailAssertion>\n                            <L7p:Detail stringValue=\"lookup from cache and CWP failed using Default: lookup.entityMappingId=${lookup.entityMappingId}, lookup.storeName=${lookup.storeName}, gateway.cluster.rq.cacheid=${gateway.cluster.rq.cacheid}\"/>\n                            <L7p:Enabled booleanValue=\"false\"/>\n                            <L7p:Level stringValue=\"WARNING\"/>\n                            <L7p:LoggingOnly booleanValue=\"true\"/>\n                        </L7p:AuditDetailAssertion>\n                    </wsp:All>\n                </wsp:OneOrMore>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtsb29rdXAudmFsdWV9\"/>\n                    <L7p:VariableToSet stringValue=\"lookup.rateQuotaUuid\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtsb29rdXAudmFsdWV9\"/>\n                    <L7p:ContentType stringValue=\"text/plain; charset=utf-8\"/>\n                    <L7p:DataType variableDataType=\"message\"/>\n                    <L7p:VariableToSet stringValue=\"rqUuidMsg\"/>\n                </L7p:SetVariable>\n                <L7p:CacheStorage>\n                    <L7p:CacheEntryKey stringValue=\"${lookup.entityMappingId}\"/>\n                    <L7p:CacheId stringValue=\"${cacheId}\"/>\n                    <L7p:MaxEntries stringValue=\"10000\"/>\n                    <L7p:MaxEntryAgeSeconds stringValue=\"${gateway.cluster.rq.cache.age}\"/>\n                    <L7p:MaxEntrySizeBytes stringValue=\"1000\"/>\n                    <L7p:OtherTargetMessageVariable stringValue=\"rqUuidMsg\"/>\n                    <L7p:Target target=\"OTHER\"/>\n                </L7p:CacheStorage>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"ZnJvbSAke2xvb2t1cC5tYXBwaW5nU3RvcmVOYW1lfSBDV1A=\"/>\n                    <L7p:VariableToSet stringValue=\"lookup.source\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"MjAw\"/>\n                    <L7p:VariableToSet stringValue=\"error.code\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"T0s=\"/>\n                    <L7p:VariableToSet stringValue=\"error.msg\"/>\n                </L7p:SetVariable>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"------- lookup ${entityMappingId} from store\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"MTA0\"/>\n                    <L7p:VariableToSet stringValue=\"error.code\"/>\n                </L7p:SetVariable>\n                <L7p:AuditDetailAssertion>\n                    <L7p:Detail stringValue=\"lookup from cache and CWP failed: lookup.entityMappingId=${lookup.entityMappingId}, lookup.storeName=${lookup.storeName}, gateway.cluster.rq.cacheid=${gateway.cluster.rq.cacheid}\"/>\n                    <L7p:Level stringValue=\"WARNING\"/>\n                    <L7p:LoggingOnly booleanValue=\"true\"/>\n                </L7p:AuditDetailAssertion>\n                <L7p:FalseAssertion/>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                            <L7p:value stringValue=\"error\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n        </wsp:OneOrMore>\n    </wsp:All>\n</wsp:Policy>\n"
      }
    },
    {
      "goid": "11624bf3b45a541fd9ef61ccf1ff6350",
      "guid": "b11632d5-7b91-461c-aeb5-fc702df83f09",
      "name": "::l7.apim.system::Rate & Quota Policy Enforcement Fragment::2.0",
      "checksum": "6167cf2ec44403ab3c452441ab3f4aa13bbbb9c5",
      "folderPath": "/API Portal Integration/Rate and Quota/2.0",
      "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=\"JHtsNy5jb3VudGVySWR9\"/>\n            <L7p:VariableToSet stringValue=\"counterName\"/>\n        </L7p:SetVariable>\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=\"errorCode\"/>\n        </L7p:SetVariable>\n        <L7p:SetVariable>\n            <L7p:Base64Expression stringValue=\"MQ==\"/>\n            <L7p:DataType variableDataType=\"int\"/>\n            <L7p:VariableToSet stringValue=\"windowSizeInSeconds\"/>\n        </L7p:SetVariable>\n        <L7p:SetVariable>\n            <L7p:Base64Expression stringValue=\"dHJ1ZQ==\"/>\n            <L7p:VariableToSet stringValue=\"unlimitedMaxConcurrency\"/>\n        </L7p:SetVariable>\n        <wsp:OneOrMore wsp:Usage=\"Required\">\n            <L7p:ComparisonAssertion>\n                <L7p:CaseSensitive booleanValue=\"false\"/>\n                <L7p:Expression1 stringValue=\"${hardLimit}\"/>\n                <L7p:Operator operatorNull=\"null\"/>\n                <L7p:Predicates predicates=\"included\">\n                    <L7p:item dataType=\"included\">\n                        <L7p:Type variableDataType=\"boolean\"/>\n                    </L7p:item>\n                    <L7p:item binary=\"included\">\n                        <L7p:CaseSensitive booleanValue=\"false\"/>\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=\"${hardLimit}\"/>\n                <L7p:Operator operatorNull=\"null\"/>\n                <L7p:Predicates predicates=\"included\">\n                    <L7p:item dataType=\"included\">\n                        <L7p:Type variableDataType=\"boolean\"/>\n                    </L7p:item>\n                    <L7p:item binary=\"included\">\n                        <L7p:CaseSensitive booleanValue=\"false\"/>\n                        <L7p:RightValue stringValue=\"false\"/>\n                    </L7p:item>\n                </L7p:Predicates>\n            </L7p:ComparisonAssertion>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"ZmFsc2U=\"/>\n                <L7p:VariableToSet stringValue=\"hardLimit\"/>\n            </L7p:SetVariable>\n            <L7p:assertionComment>\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                        <L7p:value stringValue=\"//initialize hardLimit variable\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:assertionComment>\n        </wsp:OneOrMore>\n        <wsp:All wsp:Usage=\"Required\">\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"JHtsNy5yYXRlUXVvdGFKc29ufQ==\"/>\n                <L7p:ContentType stringValue=\"application/json; charset=utf-8\"/>\n                <L7p:DataType variableDataType=\"message\"/>\n                <L7p:VariableToSet stringValue=\"l7.rateQuotaJson\"/>\n            </L7p:SetVariable>\n            <wsp:OneOrMore wsp:Usage=\"Required\">\n                <wsp:All wsp:Usage=\"Required\">\n                    <L7p:EvaluateJsonPathExpression>\n                        <L7p:Expression stringValue=\"$.rateLimit\"/>\n                        <L7p:OtherTargetMessageVariable stringValue=\"l7.rateQuotaJson\"/>\n                        <L7p:Target target=\"OTHER\"/>\n                        <L7p:VariablePrefix stringValue=\"rateLimitJsonPath\"/>\n                    </L7p:EvaluateJsonPathExpression>\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"JHtyYXRlTGltaXRKc29uUGF0aC5yZXN1bHR9\"/>\n                        <L7p:VariableToSet stringValue=\"rateLimit\"/>\n                    </L7p:SetVariable>\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"dHJ1ZQ==\"/>\n                        <L7p:VariableToSet stringValue=\"rateLimitEnabled\"/>\n                    </L7p:SetVariable>\n                    <wsp:OneOrMore wsp:Usage=\"Required\">\n                        <wsp:All wsp:Usage=\"Required\">\n                            <L7p:EvaluateJsonPathExpression>\n                                <L7p:Expression stringValue=\"$.maxConcurrency\"/>\n                                <L7p:OtherTargetMessageVariable stringValue=\"l7.rateQuotaJson\"/>\n                                <L7p:Target target=\"OTHER\"/>\n                                <L7p:VariablePrefix stringValue=\"maxConcurrencyJsonPath\"/>\n                            </L7p:EvaluateJsonPathExpression>\n                            <L7p:SetVariable>\n                                <L7p:Base64Expression stringValue=\"JHttYXhDb25jdXJyZW5jeUpzb25QYXRoLnJlc3VsdH0=\"/>\n                                <L7p:DataType variableDataType=\"int\"/>\n                                <L7p:VariableToSet stringValue=\"maxConcurrency\"/>\n                            </L7p:SetVariable>\n                            <L7p:SetVariable>\n                                <L7p:Base64Expression stringValue=\"ZmFsc2U=\"/>\n                                <L7p:VariableToSet stringValue=\"unlimitedMaxConcurrency\"/>\n                            </L7p:SetVariable>\n                        </wsp:All>\n                        <L7p:TrueAssertion/>\n                        <L7p:assertionComment>\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                                    <L7p:value stringValue=\"//parse maxConcurrency\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:assertionComment>\n                    </wsp:OneOrMore>\n                    <wsp:OneOrMore wsp:Usage=\"Required\">\n                        <wsp:All wsp:Usage=\"Required\">\n                            <L7p:EvaluateJsonPathExpression>\n                                <L7p:Expression stringValue=\"$.windowSizeInSeconds\"/>\n                                <L7p:OtherTargetMessageVariable stringValue=\"l7.rateQuotaJson\"/>\n                                <L7p:Target target=\"OTHER\"/>\n                                <L7p:VariablePrefix stringValue=\"windowSizeInSecondsJsonPath\"/>\n                            </L7p:EvaluateJsonPathExpression>\n                            <L7p:SetVariable>\n                                <L7p:Base64Expression stringValue=\"JHt3aW5kb3dTaXplSW5TZWNvbmRzSnNvblBhdGgucmVzdWx0fQ==\"/>\n                                <L7p:DataType variableDataType=\"int\"/>\n                                <L7p:VariableToSet stringValue=\"windowSizeInSeconds\"/>\n                            </L7p:SetVariable>\n                            <L7p:SetVariable>\n                                <L7p:Base64Expression stringValue=\"ZmFsc2U=\"/>\n                                <L7p:VariableToSet stringValue=\"hardLimit\"/>\n                            </L7p:SetVariable>\n                        </wsp:All>\n                        <L7p:TrueAssertion/>\n                        <L7p:assertionComment>\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                                    <L7p:value stringValue=\"//parse windowSizeInSeconds\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:assertionComment>\n                    </wsp:OneOrMore>\n                </wsp:All>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"ZmFsc2U=\"/>\n                    <L7p:VariableToSet stringValue=\"rateLimitEnabled\"/>\n                </L7p:SetVariable>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"//parse rateLimit value\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:OneOrMore>\n            <wsp:OneOrMore wsp:Usage=\"Required\">\n                <wsp:All wsp:Usage=\"Required\">\n                    <L7p:EvaluateJsonPathExpression>\n                        <L7p:Expression stringValue=\"$.quota\"/>\n                        <L7p:OtherTargetMessageVariable stringValue=\"l7.rateQuotaJson\"/>\n                        <L7p:Target target=\"OTHER\"/>\n                        <L7p:VariablePrefix stringValue=\"quotaJsonPath\"/>\n                    </L7p:EvaluateJsonPathExpression>\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"JHtxdW90YUpzb25QYXRoLnJlc3VsdH0=\"/>\n                        <L7p:VariableToSet stringValue=\"quota\"/>\n                    </L7p:SetVariable>\n                    <L7p:EvaluateJsonPathExpression>\n                        <L7p:Expression stringValue=\"$.quotaInterval\"/>\n                        <L7p:OtherTargetMessageVariable stringValue=\"l7.rateQuotaJson\"/>\n                        <L7p:Target target=\"OTHER\"/>\n                        <L7p:VariablePrefix stringValue=\"quotaIntervalJsonPath\"/>\n                    </L7p:EvaluateJsonPathExpression>\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"JHtxdW90YUludGVydmFsSnNvblBhdGgucmVzdWx0fQ==\"/>\n                        <L7p:VariableToSet stringValue=\"quotaInterval\"/>\n                    </L7p:SetVariable>\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"dHJ1ZQ==\"/>\n                        <L7p:VariableToSet stringValue=\"quotaEnabled\"/>\n                    </L7p:SetVariable>\n                </wsp:All>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"ZmFsc2U=\"/>\n                    <L7p:VariableToSet stringValue=\"quotaEnabled\"/>\n                </L7p:SetVariable>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"//parse quota value\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:OneOrMore>\n            <L7p:assertionComment>\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                        <L7p:value stringValue=\"//parse rate and quota config\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:assertionComment>\n        </wsp:All>\n        <L7p:SetVariable>\n            <L7p:Base64Expression stringValue=\"bDcuaW5jcmVtZW50ZWRDb3VudGVycz0ke2w3LmluY3JlbWVudGVkQ291bnRlcnN9LGw3LnJxTGV2ZWw9JHtsNy5ycUxldmVsfSxjb3VudGVyTmFtZT0ke2NvdW50ZXJOYW1lfSxsNy5yYXRlUXVvdGFVdWlkPSR7bDcucmF0ZVF1b3RhVXVpZH0scmF0ZUxpbWl0RW5hYmxlZD0ke3JhdGVMaW1pdEVuYWJsZWR9LHJhdGVMaW1pdD0ke3JhdGVMaW1pdH0sdW5saW1pdGVkTWF4Q29uY3VycmVuY3k9JHt1bmxpbWl0ZWRNYXhDb25jdXJyZW5jeX0sbWF4Q29uY3VycmVuY3k9JHttYXhDb25jdXJyZW5jeX0saGFyZExpbWl0PSR7aGFyZExpbWl0fSx3aW5kb3dTaXplSW5TZWNvbmRzPSR7d2luZG93U2l6ZUluU2Vjb25kc30scXVvdGFFbmFibGVkPSR7cXVvdGFFbmFibGVkfSxxdW90YT0ke3F1b3RhfSxxdW90YUludGVydmFsPSR7cXVvdGFJbnRlcnZhbH0=\"/>\n            <L7p:VariableToSet stringValue=\"parsedRqConfig\"/>\n        </L7p:SetVariable>\n        <wsp:OneOrMore wsp:Usage=\"Required\">\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${rateLimitEnabled}\"/>\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:RightValue stringValue=\"true\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <wsp:OneOrMore wsp:Usage=\"Required\">\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:ComparisonAssertion>\n                            <L7p:CaseSensitive booleanValue=\"false\"/>\n                            <L7p:Expression1 stringValue=\"${hardLimit}\"/>\n                            <L7p:Operator operatorNull=\"null\"/>\n                            <L7p:Predicates predicates=\"included\">\n                                <L7p:item dataType=\"included\">\n                                    <L7p:Type variableDataType=\"boolean\"/>\n                                </L7p:item>\n                                <L7p:item binary=\"included\">\n                                    <L7p:CaseSensitive booleanValue=\"false\"/>\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=\"${unlimitedMaxConcurrency}\"/>\n                            <L7p:Operator operatorNull=\"null\"/>\n                            <L7p:Predicates predicates=\"included\">\n                                <L7p:item dataType=\"included\">\n                                    <L7p:Type variableDataType=\"boolean\"/>\n                                </L7p:item>\n                                <L7p:item binary=\"included\">\n                                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                                    <L7p:RightValue stringValue=\"true\"/>\n                                </L7p:item>\n                            </L7p:Predicates>\n                        </L7p:ComparisonAssertion>\n                        <wsp:OneOrMore wsp:Usage=\"Required\">\n                            <L7p:RateLimit>\n                                <L7p:CounterName stringValue=\"${counterName}\"/>\n                                <L7p:HardLimit booleanValue=\"true\"/>\n                                <L7p:MaxRequestsPerSecond stringValue=\"${rateLimit}\"/>\n                            </L7p:RateLimit>\n                            <wsp:All wsp:Usage=\"Required\">\n                                <L7p:SetVariable>\n                                    <L7p:Base64Expression stringValue=\"ewogICJlcnJvci5tZXNzYWdlIiA6ICIke2w3LnJxTGV2ZWx9IHJhdGUgbGltaXQgZXhjZWVkZWQiCn0=\"/>\n                                    <L7p:VariableToSet stringValue=\"error.msg\"/>\n                                </L7p:SetVariable>\n                                <L7p:AuditDetailAssertion>\n                                    <L7p:Detail stringValue=\"${error.msg},${parsedRqConfig}\"/>\n                                    <L7p:Level stringValue=\"WARNING\"/>\n                                    <L7p:LoggingOnly booleanValue=\"true\"/>\n                                </L7p:AuditDetailAssertion>\n                                <L7p:CustomizeErrorResponse>\n                                    <L7p:Content stringValue=\"${error.msg}\"/>\n                                    <L7p:ContentType stringValue=\"application/json\"/>\n                                    <L7p:ExtraHeaders nameValuePairArray=\"included\"/>\n                                    <L7p:HttpStatus stringValue=\"429\"/>\n                                </L7p:CustomizeErrorResponse>\n                                <L7p:RaiseError/>\n                            </wsp:All>\n                        </wsp:OneOrMore>\n                        <L7p:assertionComment>\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"//hard limit == true &amp;&amp; unlimitedMaxConcurrency == true\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:assertionComment>\n                    </wsp:All>\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:ComparisonAssertion>\n                            <L7p:CaseSensitive booleanValue=\"false\"/>\n                            <L7p:Expression1 stringValue=\"${hardLimit}\"/>\n                            <L7p:Operator operatorNull=\"null\"/>\n                            <L7p:Predicates predicates=\"included\">\n                                <L7p:item dataType=\"included\">\n                                    <L7p:Type variableDataType=\"boolean\"/>\n                                </L7p:item>\n                                <L7p:item binary=\"included\">\n                                    <L7p:CaseSensitive booleanValue=\"false\"/>\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=\"${unlimitedMaxConcurrency}\"/>\n                            <L7p:Operator operatorNull=\"null\"/>\n                            <L7p:Predicates predicates=\"included\">\n                                <L7p:item dataType=\"included\">\n                                    <L7p:Type variableDataType=\"boolean\"/>\n                                </L7p:item>\n                                <L7p:item binary=\"included\">\n                                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                                    <L7p:RightValue stringValue=\"false\"/>\n                                </L7p:item>\n                            </L7p:Predicates>\n                        </L7p:ComparisonAssertion>\n                        <wsp:OneOrMore wsp:Usage=\"Required\">\n                            <L7p:RateLimit>\n                                <L7p:CounterName stringValue=\"${counterName}\"/>\n                                <L7p:HardLimit booleanValue=\"true\"/>\n                                <L7p:MaxConcurrency stringValue=\"${maxConcurrency}\"/>\n                                <L7p:MaxRequestsPerSecond stringValue=\"${rateLimit}\"/>\n                            </L7p:RateLimit>\n                            <wsp:All wsp:Usage=\"Required\">\n                                <L7p:SetVariable>\n                                    <L7p:Base64Expression stringValue=\"ewogICJlcnJvci5tZXNzYWdlIiA6ICIke2w3LnJxTGV2ZWx9IHJhdGUgbGltaXQgZXhjZWVkZWQiCn0=\"/>\n                                    <L7p:VariableToSet stringValue=\"error.msg\"/>\n                                </L7p:SetVariable>\n                                <L7p:AuditDetailAssertion>\n                                    <L7p:Detail stringValue=\"${error.msg},${parsedRqConfig}\"/>\n                                    <L7p:Level stringValue=\"WARNING\"/>\n                                    <L7p:LoggingOnly booleanValue=\"true\"/>\n                                </L7p:AuditDetailAssertion>\n                                <L7p:CustomizeErrorResponse>\n                                    <L7p:Content stringValue=\"${error.msg}\"/>\n                                    <L7p:ContentType stringValue=\"application/json\"/>\n                                    <L7p:ExtraHeaders nameValuePairArray=\"included\"/>\n                                    <L7p:HttpStatus stringValue=\"429\"/>\n                                </L7p:CustomizeErrorResponse>\n                                <L7p:RaiseError/>\n                            </wsp:All>\n                        </wsp:OneOrMore>\n                        <L7p:assertionComment>\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"//hard limit == true &amp;&amp; unlimitedMaxConcurrency == false\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:assertionComment>\n                    </wsp:All>\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:ComparisonAssertion>\n                            <L7p:CaseSensitive booleanValue=\"false\"/>\n                            <L7p:Expression1 stringValue=\"${hardLimit}\"/>\n                            <L7p:Operator operatorNull=\"null\"/>\n                            <L7p:Predicates predicates=\"included\">\n                                <L7p:item dataType=\"included\">\n                                    <L7p:Type variableDataType=\"boolean\"/>\n                                </L7p:item>\n                                <L7p:item binary=\"included\">\n                                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                                    <L7p:RightValue stringValue=\"false\"/>\n                                </L7p:item>\n                            </L7p:Predicates>\n                        </L7p:ComparisonAssertion>\n                        <L7p:ComparisonAssertion>\n                            <L7p:CaseSensitive booleanValue=\"false\"/>\n                            <L7p:Expression1 stringValue=\"${unlimitedMaxConcurrency}\"/>\n                            <L7p:Operator operatorNull=\"null\"/>\n                            <L7p:Predicates predicates=\"included\">\n                                <L7p:item dataType=\"included\">\n                                    <L7p:Type variableDataType=\"boolean\"/>\n                                </L7p:item>\n                                <L7p:item binary=\"included\">\n                                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                                    <L7p:RightValue stringValue=\"true\"/>\n                                </L7p:item>\n                            </L7p:Predicates>\n                        </L7p:ComparisonAssertion>\n                        <wsp:OneOrMore wsp:Usage=\"Required\">\n                            <L7p:RateLimit>\n                                <L7p:CounterName stringValue=\"${counterName}\"/>\n                                <L7p:MaxRequestsPerSecond stringValue=\"${rateLimit}\"/>\n                                <L7p:WindowSizeInSeconds stringValue=\"${windowSizeInSeconds}\"/>\n                            </L7p:RateLimit>\n                            <wsp:All wsp:Usage=\"Required\">\n                                <L7p:SetVariable>\n                                    <L7p:Base64Expression stringValue=\"ewogICJlcnJvci5tZXNzYWdlIiA6ICIke2w3LnJxTGV2ZWx9IHJhdGUgbGltaXQgZXhjZWVkZWQiCn0=\"/>\n                                    <L7p:VariableToSet stringValue=\"error.msg\"/>\n                                </L7p:SetVariable>\n                                <L7p:AuditDetailAssertion>\n                                    <L7p:Detail stringValue=\"${error.msg},${parsedRqConfig}\"/>\n                                    <L7p:Level stringValue=\"WARNING\"/>\n                                    <L7p:LoggingOnly booleanValue=\"true\"/>\n                                </L7p:AuditDetailAssertion>\n                                <L7p:CustomizeErrorResponse>\n                                    <L7p:Content stringValue=\"${error.msg}\"/>\n                                    <L7p:ContentType stringValue=\"application/json\"/>\n                                    <L7p:ExtraHeaders nameValuePairArray=\"included\"/>\n                                    <L7p:HttpStatus stringValue=\"429\"/>\n                                </L7p:CustomizeErrorResponse>\n                                <L7p:RaiseError/>\n                            </wsp:All>\n                        </wsp:OneOrMore>\n                        <L7p:assertionComment>\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"//hard limit == false &amp;&amp; unlimitedMaxConcurrency == true\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:assertionComment>\n                    </wsp:All>\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:ComparisonAssertion>\n                            <L7p:CaseSensitive booleanValue=\"false\"/>\n                            <L7p:Expression1 stringValue=\"${hardLimit}\"/>\n                            <L7p:Operator operatorNull=\"null\"/>\n                            <L7p:Predicates predicates=\"included\">\n                                <L7p:item dataType=\"included\">\n                                    <L7p:Type variableDataType=\"boolean\"/>\n                                </L7p:item>\n                                <L7p:item binary=\"included\">\n                                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                                    <L7p:RightValue stringValue=\"false\"/>\n                                </L7p:item>\n                            </L7p:Predicates>\n                        </L7p:ComparisonAssertion>\n                        <L7p:ComparisonAssertion>\n                            <L7p:CaseSensitive booleanValue=\"false\"/>\n                            <L7p:Expression1 stringValue=\"${unlimitedMaxConcurrency}\"/>\n                            <L7p:Operator operatorNull=\"null\"/>\n                            <L7p:Predicates predicates=\"included\">\n                                <L7p:item dataType=\"included\">\n                                    <L7p:Type variableDataType=\"boolean\"/>\n                                </L7p:item>\n                                <L7p:item binary=\"included\">\n                                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                                    <L7p:RightValue stringValue=\"false\"/>\n                                </L7p:item>\n                            </L7p:Predicates>\n                        </L7p:ComparisonAssertion>\n                        <wsp:OneOrMore wsp:Usage=\"Required\">\n                            <L7p:RateLimit>\n                                <L7p:CounterName stringValue=\"${counterName}\"/>\n                                <L7p:MaxConcurrency stringValue=\"${maxConcurrency}\"/>\n                                <L7p:MaxRequestsPerSecond stringValue=\"${rateLimit}\"/>\n                                <L7p:WindowSizeInSeconds stringValue=\"${windowSizeInSeconds}\"/>\n                            </L7p:RateLimit>\n                            <wsp:All wsp:Usage=\"Required\">\n                                <L7p:SetVariable>\n                                    <L7p:Base64Expression stringValue=\"ewogICJlcnJvci5tZXNzYWdlIiA6ICIke2w3LnJxTGV2ZWx9IHJhdGUgbGltaXQgZXhjZWVkZWQiCn0=\"/>\n                                    <L7p:VariableToSet stringValue=\"error.msg\"/>\n                                </L7p:SetVariable>\n                                <L7p:AuditDetailAssertion>\n                                    <L7p:Detail stringValue=\"${error.msg},${parsedRqConfig}\"/>\n                                    <L7p:Level stringValue=\"WARNING\"/>\n                                    <L7p:LoggingOnly booleanValue=\"true\"/>\n                                </L7p:AuditDetailAssertion>\n                                <L7p:CustomizeErrorResponse>\n                                    <L7p:Content stringValue=\"${error.msg}\"/>\n                                    <L7p:ContentType stringValue=\"application/json\"/>\n                                    <L7p:ExtraHeaders nameValuePairArray=\"included\"/>\n                                    <L7p:HttpStatus stringValue=\"429\"/>\n                                </L7p:CustomizeErrorResponse>\n                                <L7p:RaiseError/>\n                            </wsp:All>\n                        </wsp:OneOrMore>\n                        <L7p:assertionComment>\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"//hard limit == false &amp;&amp; unlimitedMaxConcurrency == false\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:assertionComment>\n                    </wsp:All>\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"ewogICJoYXJkTGltaXQiIDogIiR7aGFyZExpbWl0fSIsCiAgImVycm9yLm1lc3NhZ2UiIDogImhhcmRMaW1pdCBtdXN0IGJlIGEgYm9vbGVhbiB3aXRoIGEgdmFsdWUgb2YgdHJ1ZSBvciBmYWxzZSIKfQ==\"/>\n                            <L7p:VariableToSet stringValue=\"error.msg\"/>\n                        </L7p:SetVariable>\n                        <L7p:AuditDetailAssertion>\n                            <L7p:Detail stringValue=\"${error.msg},${parsedRqConfig}\"/>\n                            <L7p:Level stringValue=\"WARNING\"/>\n                            <L7p:LoggingOnly booleanValue=\"true\"/>\n                        </L7p:AuditDetailAssertion>\n                        <L7p:CustomizeErrorResponse>\n                            <L7p:Content stringValue=\"${error.msg}\"/>\n                            <L7p:ContentType stringValue=\"application/json\"/>\n                            <L7p:ExtraHeaders nameValuePairArray=\"included\"/>\n                        </L7p:CustomizeErrorResponse>\n                        <L7p:RaiseError/>\n                    </wsp:All>\n                </wsp:OneOrMore>\n            </wsp:All>\n            <L7p:TrueAssertion/>\n            <L7p:assertionComment>\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                        <L7p:value stringValue=\"//apply rate limit if enabled\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:assertionComment>\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=\"${quotaEnabled}\"/>\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:RightValue stringValue=\"true\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\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:CaseSensitive booleanValue=\"false\"/>\n                            <L7p:Operator operator=\"EMPTY\"/>\n                            <L7p:RightValue stringValue=\"true\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <wsp:OneOrMore wsp:Usage=\"Required\">\n                    <L7p:ThroughputQuota>\n                        <L7p:CounterName stringValue=\"${counterName}\"/>\n                        <L7p:Global booleanValue=\"true\"/>\n                        <L7p:Quota stringValue=\"${quota}\"/>\n                        <L7p:ReadSynchronous booleanValue=\"false\"/>\n                        <L7p:Synchronous booleanValue=\"false\"/>\n                        <L7p:TimeUnit stringValue=\"${quotaInterval}\"/>\n                    </L7p:ThroughputQuota>\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"ewogICJlcnJvci5tZXNzYWdlIiA6ICIke2w3LnJxTGV2ZWx9IHF1b3RhIGV4Y2VlZGVkIgp9\"/>\n                            <L7p:VariableToSet stringValue=\"error.msg\"/>\n                        </L7p:SetVariable>\n                        <wsp:OneOrMore wsp:Usage=\"Required\">\n                            <wsp:All wsp:Usage=\"Required\">\n                                <L7p:ComparisonAssertion>\n                                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                                    <L7p:Expression1 stringValue=\"${l7.incrementedCounters}\"/>\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=\"true\"/>\n                                    </L7p:item>\n                                    </L7p:Predicates>\n                                </L7p:ComparisonAssertion>\n                                <L7p:ForEachLoop L7p:Usage=\"Required\"\n                                    loopVariable=\"l7.incrementedCounters\" variablePrefix=\"incrementedCounter\">\n                                    <L7p:ThroughputQuota>\n                                    <L7p:CounterName stringValue=\"${incrementedCounter.current}\"/>\n                                    <L7p:CounterStrategy intValue=\"3\"/>\n                                    <L7p:Global booleanValue=\"true\"/>\n                                    <L7p:Quota stringValue=\"${quota}\"/>\n                                    <L7p:ReadSynchronous booleanValue=\"false\"/>\n                                    <L7p:Synchronous booleanValue=\"false\"/>\n                                    </L7p:ThroughputQuota>\n                                    <L7p:AuditDetailAssertion>\n                                    <L7p:Detail stringValue=\"decrementing previously incremented counter due to quota being reached: ${incrementedCOunter.current}\"/>\n                                    <L7p:Level stringValue=\"WARNING\"/>\n                                    <L7p:LoggingOnly booleanValue=\"true\"/>\n                                    </L7p:AuditDetailAssertion>\n                                </L7p:ForEachLoop>\n                            </wsp:All>\n                            <L7p:TrueAssertion/>\n                            <L7p:assertionComment>\n                                <L7p:Properties mapValue=\"included\">\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"//decrement previously incremented counters\"/>\n                                    </L7p:entry>\n                                </L7p:Properties>\n                            </L7p:assertionComment>\n                        </wsp:OneOrMore>\n                        <L7p:AuditDetailAssertion>\n                            <L7p:Detail stringValue=\"${error.msg},${parsedRqConfig}\"/>\n                            <L7p:Level stringValue=\"WARNING\"/>\n                            <L7p:LoggingOnly booleanValue=\"true\"/>\n                        </L7p:AuditDetailAssertion>\n                        <L7p:CustomizeErrorResponse>\n                            <L7p:Content stringValue=\"${error.msg}\"/>\n                            <L7p:ContentType stringValue=\"application/json\"/>\n                            <L7p:ExtraHeaders nameValuePairArray=\"included\"/>\n                            <L7p:HttpStatus stringValue=\"429\"/>\n                        </L7p:CustomizeErrorResponse>\n                        <L7p:RaiseError/>\n                        <L7p:assertionComment>\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"//error - quota reached\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:assertionComment>\n                    </wsp:All>\n                </wsp:OneOrMore>\n            </wsp:All>\n            <L7p:TrueAssertion/>\n            <L7p:assertionComment>\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                        <L7p:value stringValue=\"//apply quota if enabled and rate limit passes\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:assertionComment>\n        </wsp:OneOrMore>\n    </wsp:All>\n</wsp:Policy>\n"
      }
    },
    {
      "goid": "11624bf3b45a541fd9ef61ccf1ff634e",
      "guid": "ce777735-5b2f-423c-ad62-88eb2d5a1834",
      "name": "::l7.apim.system::Rate & Quota Store Value Lookup::2.0",
      "checksum": "a6faccdba0814b3740e790f68f0e06cea540badf",
      "folderPath": "/API Portal Integration/Rate and Quota/2.0",
      "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:CommentAssertion>\n            <L7p:Comment stringValue=\"Policy Fragment: Rate &amp; Quota Store Value Lookup\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"--------------------------------------------\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"Expect Inputs: ${lookup.id}, ${lookup.storeName}\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"Expect Outputs: ${lookup.value}, ${error.code}\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"--------------------------------------------\"/>\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=\"${lookup.id}\"/>\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:Negated booleanValue=\"true\"/>\n                            <L7p:Operator operator=\"EMPTY\"/>\n                            <L7p:RightValue stringValue=\"\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${lookup.storeName}\"/>\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:Negated booleanValue=\"true\"/>\n                            <L7p:Operator operator=\"EMPTY\"/>\n                            <L7p:RightValue stringValue=\"\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n            </wsp:All>\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"MTAz\"/>\n                    <L7p:VariableToSet stringValue=\"error.code\"/>\n                </L7p:SetVariable>\n                <L7p:AuditDetailAssertion>\n                    <L7p:Detail stringValue=\"input validation failure: lookup.id=${lookup.id}, lookup.storeName=${lookup.storeName}\"/>\n                    <L7p:Level stringValue=\"WARNING\"/>\n                    <L7p:LoggingOnly booleanValue=\"true\"/>\n                </L7p:AuditDetailAssertion>\n                <L7p:FalseAssertion/>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                            <L7p:value stringValue=\"error\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <L7p:assertionComment>\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                        <L7p:value stringValue=\"-------- validate inputs\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:assertionComment>\n        </wsp:OneOrMore>\n        <wsp:OneOrMore wsp:Usage=\"Required\">\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:LookupDynamicContextVariables>\n                    <L7p:SourceVariable stringValue=\"gateway.${lookup.storeName}\"/>\n                    <L7p:TargetDataType variableDataType=\"string\"/>\n                    <L7p:TargetOutputVariablePrefix stringValue=\"rqStoreValueCwp\"/>\n                </L7p:LookupDynamicContextVariables>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtycVN0b3JlVmFsdWVDd3Aub3V0cHV0fQ==\"/>\n                    <L7p:ContentType stringValue=\"application/json; charset=utf-8\"/>\n                    <L7p:DataType variableDataType=\"message\"/>\n                    <L7p:VariableToSet stringValue=\"rqStoreValueJson\"/>\n                </L7p:SetVariable>\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${rqStoreValueJson.mainpart}\"/>\n                    <L7p:Expression2 stringValue=\"\"/>\n                    <L7p:Negate booleanValue=\"true\"/>\n                    <L7p:Operator operator=\"EMPTY\"/>\n                    <L7p:Predicates predicates=\"included\">\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:EvaluateJsonPathExpressionV2>\n                    <L7p:Evaluator stringValue=\"JsonPath\"/>\n                    <L7p:Expression stringValue=\"$.${lookup.id}\"/>\n                    <L7p:OtherTargetMessageVariable stringValue=\"rqStoreValueJson\"/>\n                    <L7p:Target target=\"OTHER\"/>\n                    <L7p:VariablePrefix stringValue=\"rqValueJsonObject\"/>\n                </L7p:EvaluateJsonPathExpressionV2>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtycVZhbHVlSnNvbk9iamVjdC5yZXN1bHR9\"/>\n                    <L7p:ContentType stringValue=\"application/json; charset=utf-8\"/>\n                    <L7p:DataType variableDataType=\"message\"/>\n                    <L7p:VariableToSet stringValue=\"rqValueJson\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtycVZhbHVlSnNvbi5tYWlucGFydH0=\"/>\n                    <L7p:VariableToSet stringValue=\"lookup.value\"/>\n                </L7p:SetVariable>\n            </wsp:All>\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"MTAz\"/>\n                    <L7p:VariableToSet stringValue=\"error.code\"/>\n                </L7p:SetVariable>\n                <L7p:AuditDetailAssertion>\n                    <L7p:Detail stringValue=\"lookup from CWP failed: lookup.id=${lookup.id}, lookup.storeName=${lookup.storeName}\"/>\n                    <L7p:Level stringValue=\"WARNING\"/>\n                    <L7p:LoggingOnly booleanValue=\"true\"/>\n                </L7p:AuditDetailAssertion>\n                <L7p:FalseAssertion/>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                            <L7p:value stringValue=\"error\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <L7p:assertionComment>\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                        <L7p:value stringValue=\"// lookup id from storeName CWP\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:assertionComment>\n        </wsp:OneOrMore>\n    </wsp:All>\n</wsp:Policy>\n"
      }
    },
    {
      "goid": "c75906be17960a7d528dc0550a0f8e85",
      "guid": "2e10d3d7-ac7d-46a3-9594-7dcf586dc1b4",
      "name": "API Key Record Lookup",
      "checksum": "684f37eb0cd35c5150cccb4a6928a9a6a92d99ea",
      "folderPath": "/API Portal Integration",
      "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:CommentAssertion>\n            <L7p:Comment stringValue=\"Policy Fragment: API Key Record Lookup\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"--------------------------------------------------------------\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"Expected input: ${apiKey} and ${apiId}\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"Expected cluster variable: ${cluster.apiplan.cacheid}\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"Expected output: ${lookup.planId}, ${error.code}\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"--------------------------------------------------------------\"/>\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=\"${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:Negated booleanValue=\"true\"/>\n                            <L7p:Operator operator=\"EMPTY\"/>\n                            <L7p:RightValue stringValue=\"\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${apiId}\"/>\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:Negated booleanValue=\"true\"/>\n                            <L7p:Operator operator=\"EMPTY\"/>\n                            <L7p:RightValue stringValue=\"\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${gateway.cluster.apiplan.cacheid}\"/>\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:Negated booleanValue=\"true\"/>\n                            <L7p:Operator operator=\"EMPTY\"/>\n                            <L7p:RightValue stringValue=\"\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n            </wsp:All>\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"MTAz\"/>\n                    <L7p:VariableToSet stringValue=\"error.code\"/>\n                </L7p:SetVariable>\n                <L7p:FalseAssertion/>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                            <L7p:value stringValue=\"error\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <L7p:assertionComment>\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                        <L7p:value stringValue=\"-------- validate inputs\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:assertionComment>\n        </wsp:OneOrMore>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"Policy Fragment: API Plan Config Lookup\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"------ lookup in cache for the apiKey and apiId ---------\"/>\n        </L7p:CommentAssertion>\n        <wsp:All wsp:Usage=\"Required\">\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"JHtnYXRld2F5LmNsdXN0ZXIuYXBpcGxhbi5jYWNoZWlkfQ==\"/>\n                <L7p:VariableToSet stringValue=\"cacheId\"/>\n            </L7p:SetVariable>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"\"/>\n                <L7p:VariableToSet stringValue=\"planId\"/>\n            </L7p:SetVariable>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"\"/>\n                <L7p:ContentType stringValue=\"text/plain; charset=utf-8\"/>\n                <L7p:DataType variableDataType=\"message\"/>\n                <L7p:VariableToSet stringValue=\"planIdMsg\"/>\n            </L7p:SetVariable>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"\"/>\n                <L7p:VariableToSet stringValue=\"lookup.planId\"/>\n            </L7p:SetVariable>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"\"/>\n                <L7p:VariableToSet stringValue=\"lookup.source\"/>\n            </L7p:SetVariable>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"\"/>\n                <L7p:VariableToSet stringValue=\"error.code\"/>\n            </L7p:SetVariable>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"\"/>\n                <L7p:VariableToSet stringValue=\"error.message\"/>\n            </L7p:SetVariable>\n            <L7p:assertionComment>\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                        <L7p:value stringValue=\"-------- Context variables\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:assertionComment>\n        </wsp:All>\n        <wsp:OneOrMore wsp:Usage=\"Required\">\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:Encapsulated>\n                    <L7p:EncapsulatedAssertionConfigGuid stringValue=\"68ad78a1-f4a1-4568-91e1-0980d95c75cd\"/>\n                    <L7p:EncapsulatedAssertionConfigName stringValue=\"OTK Cache Look Up\"/>\n                    <L7p:Parameters mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"cacheID\"/>\n                            <L7p:value stringValue=\"${cacheId}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"cacheKey\"/>\n                            <L7p:value stringValue=\"${apiKey}#${apiId}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"maxEntryAge\"/>\n                            <L7p:value stringValue=\"${gateway.cluster.apiplan.cache.age}\"/>\n                        </L7p:entry>\n                    </L7p:Parameters>\n                </L7p:Encapsulated>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtyZXNwLm1haW5wYXJ0fQ==\"/>\n                    <L7p:VariableToSet stringValue=\"lookup.planId\"/>\n                </L7p:SetVariable>\n                <L7p:CommentAssertion>\n                    <L7p:Comment stringValue=\"------- everytime a lookup is used, we reset the expiration time of the cache----\"/>\n                </L7p:CommentAssertion>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtyZXNwLm1haW5wYXJ0fQ==\"/>\n                    <L7p:ContentType stringValue=\"text/plain; charset=utf-8\"/>\n                    <L7p:DataType variableDataType=\"message\"/>\n                    <L7p:VariableToSet stringValue=\"planIdMsg\"/>\n                </L7p:SetVariable>\n                <L7p:Encapsulated>\n                    <L7p:EncapsulatedAssertionConfigGuid stringValue=\"e5ee8bcf-1796-4297-88dd-c838031a6f6a\"/>\n                    <L7p:EncapsulatedAssertionConfigName stringValue=\"OTK Cache Store\"/>\n                    <L7p:Parameters mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"cacheID\"/>\n                            <L7p:value stringValue=\"${cacheId}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"cacheKey\"/>\n                            <L7p:value stringValue=\"${apiKey}#${apiId}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"maxEntries\"/>\n                            <L7p:value stringValue=\"10000\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"maxEntryAge\"/>\n                            <L7p:value stringValue=\"${gateway.cluster.apiplan.cache.age}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"maxEntrySize\"/>\n                            <L7p:value stringValue=\"1000\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"msg\"/>\n                            <L7p:value stringValue=\"planIdMsg\"/>\n                        </L7p:entry>\n                    </L7p:Parameters>\n                </L7p:Encapsulated>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"MjAw\"/>\n                    <L7p:VariableToSet stringValue=\"error.code\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"T0s=\"/>\n                    <L7p:VariableToSet stringValue=\"error.msg\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"ZnJvbSBjYWNoZQ==\"/>\n                    <L7p:VariableToSet stringValue=\"lookup.source\"/>\n                </L7p:SetVariable>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"---------- if ${apiKey}#${apiId} already existed in cache ?\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <L7p:CommentAssertion>\n                <L7p:Comment stringValue=\"If the ${apiKey}#${apiId} doesn't exist then\"/>\n            </L7p:CommentAssertion>\n            <L7p:CommentAssertion>\n                <L7p:Comment stringValue=\"Lookup in the db which will return the xml \"/>\n            </L7p:CommentAssertion>\n            <L7p:CommentAssertion>\n                <L7p:Comment stringValue=\"Parse the XML to get planId AND add this &lt;${apiKey}#${apiId}, ${planId}> to cache\"/>\n            </L7p:CommentAssertion>\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:Encapsulated>\n                    <L7p:AssertionComment assertionComment=\"included\">\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                <L7p:value stringValue=\"---------- Look up xml using apiKey and apiId. Output will be in apiKeyRecord.xml\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:AssertionComment>\n                    <L7p:EncapsulatedAssertionConfigGuid stringValue=\"d6b48093-4288-44b3-977e-712fdac328e6\"/>\n                    <L7p:EncapsulatedAssertionConfigName stringValue=\"Portal Look Up API Key\"/>\n                    <L7p:Parameters mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"apikey\"/>\n                            <L7p:value stringValue=\"${apiKey}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"serviceid\"/>\n                            <L7p:value stringValue=\"${apiId}\"/>\n                        </L7p:entry>\n                    </L7p:Parameters>\n                </L7p:Encapsulated>\n                <L7p:SetVariable>\n                    <L7p:AssertionComment assertionComment=\"included\">\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                <L7p:value stringValue=\"// Create XML message with xml-apikey-details\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:AssertionComment>\n                    <L7p:Base64Expression stringValue=\"JHthcGlLZXlSZWNvcmQueG1sfQ==\"/>\n                    <L7p:ContentType stringValue=\"text/xml; charset=utf-8\"/>\n                    <L7p:DataType variableDataType=\"message\"/>\n                    <L7p:VariableToSet stringValue=\"apiKeyRecord\"/>\n                </L7p:SetVariable>\n                <wsp:All wsp:Usage=\"Required\">\n                    <L7p:SetVariable>\n                        <L7p:AssertionComment assertionComment=\"included\">\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"// make xpath expression\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:AssertionComment>\n                        <L7p:Base64Expression stringValue=\"L2w3OkFwaUtleS9sNzpBcGlzL2w3OkFwaVtAYXBpSWQ9IiR7YXBpSWR9Il0vQHBsYW5JZA==\"/>\n                        <L7p:VariableToSet stringValue=\"xpathExp\"/>\n                    </L7p:SetVariable>\n                    <L7p:ResponseXpathAssertion>\n                        <L7p:AssertionComment assertionComment=\"included\">\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"// find the plan id of the given api id in the xml message\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:AssertionComment>\n                        <L7p:VariablePrefix stringValue=\"xpathPlanId\"/>\n                        <L7p:XmlMsgSrc stringValue=\"apiKeyRecord\"/>\n                        <L7p:XpathExpression xpathExpressionValue=\"included\">\n                            <L7p:Expression stringValue=\"${xpathExp}\"/>\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:assertionComment>\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                <L7p:value stringValue=\"// Extract planId from apiKeyRecord xml\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:assertionComment>\n                </wsp:All>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHt4cGF0aFBsYW5JZC5yZXN1bHR9\"/>\n                    <L7p:ContentType stringValue=\"text/plain; charset=utf-8\"/>\n                    <L7p:DataType variableDataType=\"message\"/>\n                    <L7p:VariableToSet stringValue=\"planIdMsg\"/>\n                </L7p:SetVariable>\n                <L7p:Encapsulated>\n                    <L7p:AssertionComment assertionComment=\"included\">\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                <L7p:value stringValue=\"// Cache planId for apiKey\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:AssertionComment>\n                    <L7p:EncapsulatedAssertionConfigGuid stringValue=\"e5ee8bcf-1796-4297-88dd-c838031a6f6a\"/>\n                    <L7p:EncapsulatedAssertionConfigName stringValue=\"OTK Cache Store\"/>\n                    <L7p:Parameters mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"cacheID\"/>\n                            <L7p:value stringValue=\"${cacheId}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"cacheKey\"/>\n                            <L7p:value stringValue=\"${apiKey}#${apiId}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"custom\"/>\n                            <L7p:value stringValue=\"\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"maxEntries\"/>\n                            <L7p:value stringValue=\"10000\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"maxEntryAge\"/>\n                            <L7p:value stringValue=\"${gateway.cluster.apiplan.cache.age}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"maxEntrySize\"/>\n                            <L7p:value stringValue=\"1000\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"msg\"/>\n                            <L7p:value stringValue=\"planIdMsg\"/>\n                        </L7p:entry>\n                    </L7p:Parameters>\n                </L7p:Encapsulated>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHt4cGF0aFBsYW5JZC5yZXN1bHR9\"/>\n                    <L7p:VariableToSet stringValue=\"lookup.planId\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"ZnJvbSBPVEsgREI=\"/>\n                    <L7p:VariableToSet stringValue=\"lookup.source\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"MjAw\"/>\n                    <L7p:VariableToSet stringValue=\"error.code\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"T0s=\"/>\n                    <L7p:VariableToSet stringValue=\"error.msg\"/>\n                </L7p:SetVariable>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"------- lookup ${apiKey} and ${apiId} from DB\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"MTAz\"/>\n                    <L7p:VariableToSet stringValue=\"error.code\"/>\n                </L7p:SetVariable>\n                <L7p:FalseAssertion/>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                            <L7p:value stringValue=\"error\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n        </wsp:OneOrMore>\n    </wsp:All>\n</wsp:Policy>\n\n      "
      }
    },
    {
      "goid": "c75906be17960a7d528dc0550a0f8ea7",
      "guid": "54f029b9-08de-4136-9d39-b84d6ed82b86",
      "name": "API Plan Config Lookup",
      "checksum": "c0ecd10ef4f13b67ee9357d8fd77427398e41b75",
      "folderPath": "/API Portal Integration",
      "soap": false,
      "policy": {
        "xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<wsp:Policy\n    xmlns:L7p=\"http://www.layer7tech.com/ws/policy\"\n    xmlns:wsp=\"http://schemas.xmlsoap.org/ws/2002/12/policy\">\n    <wsp:All wsp:Usage=\"Required\">\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"Policy Fragment: API Plan Config Lookup\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"--------------------------------------------\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"Expect Inputs: ${lookup.planId}, ${gateway.cluster.apiplan.cacheid}\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"Expect Outputs: ${lookup.quota}, ${lookup.timeunit}, ${lookup.maxrequestrate}, ${lookup.windowsizeinseconds}, ${error.code}\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"--------------------------------------------\"/>\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=\"${lookup.planId}\"/>\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:Negated booleanValue=\"true\"/>\n                            <L7p:Operator operator=\"EMPTY\"/>\n                            <L7p:RightValue stringValue=\"\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${gateway.cluster.apiplan.cacheid}\"/>\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:Negated booleanValue=\"true\"/>\n                            <L7p:Operator operator=\"EMPTY\"/>\n                            <L7p:RightValue stringValue=\"\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n            </wsp:All>\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"MTAz\"/>\n                    <L7p:VariableToSet stringValue=\"error.code\"/>\n                </L7p:SetVariable>\n                <L7p:FalseAssertion/>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                            <L7p:value stringValue=\"error\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <L7p:assertionComment>\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                        <L7p:value stringValue=\"----- validate inputs\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:assertionComment>\n        </wsp:OneOrMore>\n        <wsp:All wsp:Usage=\"Required\">\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"JHtnYXRld2F5LmNsdXN0ZXIuYXBpcGxhbi5jYWNoZWlkfQ==\"/>\n                <L7p:VariableToSet stringValue=\"cacheId\"/>\n            </L7p:SetVariable>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"JHtsb29rdXAucGxhbklkfQ==\"/>\n                <L7p:VariableToSet stringValue=\"planId\"/>\n            </L7p:SetVariable>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"\"/>\n                <L7p:VariableToSet stringValue=\"lookup.source\"/>\n            </L7p:SetVariable>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"\"/>\n                <L7p:VariableToSet stringValue=\"error.code\"/>\n            </L7p:SetVariable>\n            <L7p:SetVariable>\n                <L7p:Base64Expression stringValue=\"\"/>\n                <L7p:VariableToSet stringValue=\"error.message\"/>\n            </L7p:SetVariable>\n            <L7p:assertionComment>\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                        <L7p:value stringValue=\"---------- context variables used\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:assertionComment>\n        </wsp:All>\n        <wsp:OneOrMore wsp:Usage=\"Required\">\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:Encapsulated>\n                    <L7p:AssertionComment assertionComment=\"included\">\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                <L7p:value stringValue=\"--- lookup ${cacheId} key=${planId}\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:AssertionComment>\n                    <L7p:EncapsulatedAssertionConfigGuid stringValue=\"68ad78a1-f4a1-4568-91e1-0980d95c75cd\"/>\n                    <L7p:EncapsulatedAssertionConfigName stringValue=\"OTK Cache Look Up\"/>\n                    <L7p:Parameters mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"cacheID\"/>\n                            <L7p:value stringValue=\"${cacheId}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"cacheKey\"/>\n                            <L7p:value stringValue=\"${planId}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"maxEntryAge\"/>\n                            <L7p:value stringValue=\"${gateway.cluster.apiplan.cache.age}\"/>\n                        </L7p:entry>\n                    </L7p:Parameters>\n                </L7p:Encapsulated>\n                <L7p:CommentAssertion>\n                    <L7p:Comment stringValue=\"--------------------------------------------------------------\"/>\n                </L7p:CommentAssertion>\n                <L7p:CommentAssertion>\n                    <L7p:Comment stringValue=\"----- plan config record is stored in cache as commas seperated string of the following format\"/>\n                </L7p:CommentAssertion>\n                <L7p:CommentAssertion>\n                    <L7p:Comment stringValue=\"----- Quota,TimeUnit,MaxRequestRate,WindowSizeInSeconds\"/>\n                </L7p:CommentAssertion>\n                <L7p:CommentAssertion>\n                    <L7p:Comment stringValue=\"--------------------------------------------------------------\"/>\n                </L7p:CommentAssertion>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtyZXNwLm1haW5wYXJ0fQ==\"/>\n                    <L7p:VariableToSet stringValue=\"lookup.planConfig\"/>\n                </L7p:SetVariable>\n                <L7p:CommentAssertion>\n                    <L7p:Comment stringValue=\"----- parse the commas separated plan config into variables\"/>\n                </L7p:CommentAssertion>\n                <L7p:Split>\n                    <L7p:InputVariable stringValue=\"lookup.planConfig\"/>\n                    <L7p:OutputVariable stringValue=\"planIdConfig\"/>\n                </L7p:Split>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtwbGFuSWRDb25maWdbMF19\"/>\n                    <L7p:VariableToSet stringValue=\"lookup.quota\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtwbGFuSWRDb25maWdbMV19\"/>\n                    <L7p:VariableToSet stringValue=\"lookup.timeunit\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtwbGFuSWRDb25maWdbMl19\"/>\n                    <L7p:VariableToSet stringValue=\"lookup.maxrequestrate\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtwbGFuSWRDb25maWdbM119\"/>\n                    <L7p:VariableToSet stringValue=\"lookup.windowsizeinseconds\"/>\n                </L7p:SetVariable>\n                <L7p:CommentAssertion>\n                    <L7p:Comment stringValue=\"------- everytime a lookup is used, we reset the expiration time of the cache----\"/>\n                </L7p:CommentAssertion>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtyZXNwLm1haW5wYXJ0fQ==\"/>\n                    <L7p:ContentType stringValue=\"text/plain; charset=utf-8\"/>\n                    <L7p:DataType variableDataType=\"message\"/>\n                    <L7p:VariableToSet stringValue=\"planIdMsg\"/>\n                </L7p:SetVariable>\n                <L7p:Encapsulated>\n                    <L7p:AssertionComment assertionComment=\"included\">\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                <L7p:value stringValue=\"----- reset the age of the cache entry everytime it is used.\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:AssertionComment>\n                    <L7p:EncapsulatedAssertionConfigGuid stringValue=\"e5ee8bcf-1796-4297-88dd-c838031a6f6a\"/>\n                    <L7p:EncapsulatedAssertionConfigName stringValue=\"OTK Cache Store\"/>\n                    <L7p:Parameters mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"cacheID\"/>\n                            <L7p:value stringValue=\"${cacheId}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"cacheKey\"/>\n                            <L7p:value stringValue=\"${planId}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"maxEntries\"/>\n                            <L7p:value stringValue=\"10000\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"maxEntryAge\"/>\n                            <L7p:value stringValue=\"${gateway.cluster.apiplan.cache.age}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"maxEntrySize\"/>\n                            <L7p:value stringValue=\"1000\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"msg\"/>\n                            <L7p:value stringValue=\"planIdMsg\"/>\n                        </L7p:entry>\n                    </L7p:Parameters>\n                </L7p:Encapsulated>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"MjAw\"/>\n                    <L7p:VariableToSet stringValue=\"error.code\"/>\n                </L7p:SetVariable>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"---------- if ${planId} already existed in cache ?\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:SetVariable>\n                    <L7p:AssertionComment assertionComment=\"included\">\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                <L7p:value stringValue=\"//query all API Plans for processing\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:AssertionComment>\n                    <L7p:Base64Expression stringValue=\"LzEvYXBpL3BsYW5zLyR7cGxhbklkfQ==\"/>\n                    <L7p:VariableToSet stringValue=\"pman.resUri\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"R0VU\"/>\n                    <L7p:VariableToSet stringValue=\"pman.operation\"/>\n                </L7p:SetVariable>\n                <L7p:ManagePortalResource/>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtwbWFuLnJlc3AucmVzb3VyY2V9\"/>\n                    <L7p:ContentType stringValue=\"text/xml; charset=utf-8\"/>\n                    <L7p:DataType variableDataType=\"message\"/>\n                    <L7p:VariableToSet stringValue=\"apiPlans\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:AssertionComment assertionComment=\"included\">\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                <L7p:value stringValue=\"// Create XML message with xml-apikey-details\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:AssertionComment>\n                    <L7p:Base64Expression stringValue=\"JHthcGlQbGFuc30=\"/>\n                    <L7p:ContentType stringValue=\"text/xml; charset=utf-8\"/>\n                    <L7p:DataType variableDataType=\"message\"/>\n                    <L7p:VariableToSet stringValue=\"apiPlansRecord\"/>\n                </L7p:SetVariable>\n                <L7p:CommentAssertion>\n                    <L7p:Comment stringValue=\"------- parse api plan for plan config data ---\"/>\n                </L7p:CommentAssertion>\n                <wsp:All wsp:Usage=\"Required\">\n                    <L7p:ResponseXpathAssertion>\n                        <L7p:AssertionComment assertionComment=\"included\">\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"// parse for Quota in the xml message\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:AssertionComment>\n                        <L7p:VariablePrefix stringValue=\"xpathAPIPlan\"/>\n                        <L7p:XmlMsgSrc stringValue=\"apiPlansRecord\"/>\n                        <L7p:XpathExpression xpathExpressionValue=\"included\">\n                            <L7p:Expression stringValue=\"/l7:ApiPlans/l7:ApiPlan/l7:PlanDetails/l7:ThroughputQuota/@l7:enabled\"/>\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:CommentAssertion>\n                        <L7p:Comment stringValue=\"--------- parsing throughput ---------\"/>\n                    </L7p:CommentAssertion>\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"JHt4cGF0aEFQSVBsYW4ucmVzdWx0fQ==\"/>\n                        <L7p:VariableToSet stringValue=\"lookup.quota.enabled\"/>\n                    </L7p:SetVariable>\n                    <wsp:OneOrMore wsp:Usage=\"Required\">\n                        <wsp:All wsp:Usage=\"Required\">\n                            <L7p:ComparisonAssertion>\n                                <L7p:CaseSensitive booleanValue=\"false\"/>\n                                <L7p:Expression1 stringValue=\"${lookup.quota.enabled}\"/>\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=\"false\"/>\n                                    </L7p:item>\n                                </L7p:Predicates>\n                            </L7p:ComparisonAssertion>\n                            <L7p:SetVariable>\n                                <L7p:Base64Expression stringValue=\"LTE=\"/>\n                                <L7p:VariableToSet stringValue=\"lookup.quota\"/>\n                            </L7p:SetVariable>\n                            <L7p:SetVariable>\n                                <L7p:Base64Expression stringValue=\"LTE=\"/>\n                                <L7p:VariableToSet stringValue=\"lookup.timeunit\"/>\n                            </L7p:SetVariable>\n                        </wsp:All>\n                        <wsp:All wsp:Usage=\"Required\">\n                            <L7p:ResponseXpathAssertion>\n                                <L7p:AssertionComment assertionComment=\"included\">\n                                    <L7p:Properties mapValue=\"included\">\n                                        <L7p:entry>\n                                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                            <L7p:value stringValue=\"// parse for Quota in the xml message\"/>\n                                        </L7p:entry>\n                                    </L7p:Properties>\n                                </L7p:AssertionComment>\n                                <L7p:VariablePrefix stringValue=\"xpathAPIPlan\"/>\n                                <L7p:XmlMsgSrc stringValue=\"apiPlansRecord\"/>\n                                <L7p:XpathExpression xpathExpressionValue=\"included\">\n                                    <L7p:Expression stringValue=\"/l7:ApiPlans/l7:ApiPlan/l7:PlanDetails/l7:ThroughputQuota/l7:Quota\"/>\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=\"JHt4cGF0aEFQSVBsYW4ucmVzdWx0fQ==\"/>\n                                <L7p:VariableToSet stringValue=\"lookup.quota\"/>\n                            </L7p:SetVariable>\n                            <L7p:ResponseXpathAssertion>\n                                <L7p:AssertionComment assertionComment=\"included\">\n                                    <L7p:Properties mapValue=\"included\">\n                                        <L7p:entry>\n                                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                            <L7p:value stringValue=\"// parse for TimeUnit in the xml message\"/>\n                                        </L7p:entry>\n                                    </L7p:Properties>\n                                </L7p:AssertionComment>\n                                <L7p:VariablePrefix stringValue=\"xpathAPIPlan\"/>\n                                <L7p:XmlMsgSrc stringValue=\"apiPlansRecord\"/>\n                                <L7p:XpathExpression xpathExpressionValue=\"included\">\n                                    <L7p:Expression stringValue=\"/l7:ApiPlans/l7:ApiPlan/l7:PlanDetails/l7:ThroughputQuota/l7:TimeUnit\"/>\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=\"JHt4cGF0aEFQSVBsYW4ucmVzdWx0fQ==\"/>\n                                <L7p:VariableToSet stringValue=\"lookup.timeunit\"/>\n                            </L7p:SetVariable>\n                        </wsp:All>\n                        <L7p:assertionComment>\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"-------- THROUGHPUT detail logic\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:assertionComment>\n                    </wsp:OneOrMore>\n                    <L7p:CommentAssertion>\n                        <L7p:Comment stringValue=\"--------- parsing ratelimit ---------\"/>\n                    </L7p:CommentAssertion>\n                    <L7p:ResponseXpathAssertion>\n                        <L7p:AssertionComment assertionComment=\"included\">\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"// parse for Quota in the xml message\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:AssertionComment>\n                        <L7p:VariablePrefix stringValue=\"xpathAPIPlan\"/>\n                        <L7p:XmlMsgSrc stringValue=\"apiPlansRecord\"/>\n                        <L7p:XpathExpression xpathExpressionValue=\"included\">\n                            <L7p:Expression stringValue=\"/l7:ApiPlans/l7:ApiPlan/l7:PlanDetails/l7:RateLimit/@l7:enabled\"/>\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=\"JHt4cGF0aEFQSVBsYW4ucmVzdWx0fQ==\"/>\n                        <L7p:VariableToSet stringValue=\"lookup.ratelimit.enabled\"/>\n                    </L7p:SetVariable>\n                    <wsp:OneOrMore wsp:Usage=\"Required\">\n                        <wsp:All wsp:Usage=\"Required\">\n                            <L7p:ComparisonAssertion>\n                                <L7p:CaseSensitive booleanValue=\"false\"/>\n                                <L7p:Expression1 stringValue=\"${lookup.ratelimit.enabled}\"/>\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=\"false\"/>\n                                    </L7p:item>\n                                </L7p:Predicates>\n                            </L7p:ComparisonAssertion>\n                            <L7p:SetVariable>\n                                <L7p:Base64Expression stringValue=\"LTE=\"/>\n                                <L7p:VariableToSet stringValue=\"lookup.maxrequestrate\"/>\n                            </L7p:SetVariable>\n                            <L7p:SetVariable>\n                                <L7p:Base64Expression stringValue=\"LTE=\"/>\n                                <L7p:VariableToSet stringValue=\"lookup.windowsizeinseconds\"/>\n                            </L7p:SetVariable>\n                        </wsp:All>\n                        <wsp:All wsp:Usage=\"Required\">\n                            <L7p:ResponseXpathAssertion>\n                                <L7p:AssertionComment assertionComment=\"included\">\n                                    <L7p:Properties mapValue=\"included\">\n                                        <L7p:entry>\n                                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                            <L7p:value stringValue=\"// parse for MaxRequestRate in the xml message\"/>\n                                        </L7p:entry>\n                                    </L7p:Properties>\n                                </L7p:AssertionComment>\n                                <L7p:VariablePrefix stringValue=\"xpathAPIPlan\"/>\n                                <L7p:XmlMsgSrc stringValue=\"apiPlansRecord\"/>\n                                <L7p:XpathExpression xpathExpressionValue=\"included\">\n                                    <L7p:Expression stringValue=\"/l7:ApiPlans/l7:ApiPlan/l7:PlanDetails/l7:RateLimit/l7:MaxRequestRate\"/>\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=\"JHt4cGF0aEFQSVBsYW4ucmVzdWx0fQ==\"/>\n                                <L7p:VariableToSet stringValue=\"lookup.maxrequestrate\"/>\n                            </L7p:SetVariable>\n                            <L7p:ResponseXpathAssertion>\n                                <L7p:AssertionComment assertionComment=\"included\">\n                                    <L7p:Properties mapValue=\"included\">\n                                        <L7p:entry>\n                                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                            <L7p:value stringValue=\"// parse for WindowSizeInSeconds in the xml message\"/>\n                                        </L7p:entry>\n                                    </L7p:Properties>\n                                </L7p:AssertionComment>\n                                <L7p:VariablePrefix stringValue=\"xpathAPIPlan\"/>\n                                <L7p:XmlMsgSrc stringValue=\"apiPlansRecord\"/>\n                                <L7p:XpathExpression xpathExpressionValue=\"included\">\n                                    <L7p:Expression stringValue=\"/l7:ApiPlans/l7:ApiPlan/l7:PlanDetails/l7:RateLimit/l7:WindowSizeInSeconds\"/>\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=\"JHt4cGF0aEFQSVBsYW4ucmVzdWx0fQ==\"/>\n                                <L7p:VariableToSet stringValue=\"lookup.windowsizeinseconds\"/>\n                            </L7p:SetVariable>\n                        </wsp:All>\n                        <L7p:assertionComment>\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"--------- RATELIMIT detail logic\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:assertionComment>\n                    </wsp:OneOrMore>\n                    <L7p:assertionComment>\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                <L7p:value stringValue=\"-------- parsing api plan and set ${lookup.quota},${lookup.timeunit},${lookup.maxrequestrate},${lookup.windowsizeinseconds}\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:assertionComment>\n                </wsp:All>\n                <wsp:All wsp:Usage=\"Required\">\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"JHtsb29rdXAucXVvdGF9LCR7bG9va3VwLnRpbWV1bml0fSwke2xvb2t1cC5tYXhyZXF1ZXN0UmF0ZX0sJHtsb29rdXAud2luZG93c2l6ZWluc2Vjb25kc30=\"/>\n                        <L7p:VariableToSet stringValue=\"planConfig\"/>\n                    </L7p:SetVariable>\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"JHtwbGFuQ29uZmlnfQ==\"/>\n                        <L7p:ContentType stringValue=\"text/plain; charset=utf-8\"/>\n                        <L7p:DataType variableDataType=\"message\"/>\n                        <L7p:VariableToSet stringValue=\"planIdMsg\"/>\n                    </L7p:SetVariable>\n                    <L7p:Encapsulated>\n                        <L7p:EncapsulatedAssertionConfigGuid stringValue=\"e5ee8bcf-1796-4297-88dd-c838031a6f6a\"/>\n                        <L7p:EncapsulatedAssertionConfigName stringValue=\"OTK Cache Store\"/>\n                        <L7p:Parameters mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"cacheID\"/>\n                                <L7p:value stringValue=\"${cacheId}\"/>\n                            </L7p:entry>\n                            <L7p:entry>\n                                <L7p:key stringValue=\"cacheKey\"/>\n                                <L7p:value stringValue=\"${planId}\"/>\n                            </L7p:entry>\n                            <L7p:entry>\n                                <L7p:key stringValue=\"maxEntries\"/>\n                                <L7p:value stringValue=\"10000\"/>\n                            </L7p:entry>\n                            <L7p:entry>\n                                <L7p:key stringValue=\"maxEntryAge\"/>\n                                <L7p:value stringValue=\"${gateway.cluster.apiplan.cache.age}\"/>\n                            </L7p:entry>\n                            <L7p:entry>\n                                <L7p:key stringValue=\"maxEntrySize\"/>\n                                <L7p:value stringValue=\"1000\"/>\n                            </L7p:entry>\n                            <L7p:entry>\n                                <L7p:key stringValue=\"msg\"/>\n                                <L7p:value stringValue=\"planIdMsg\"/>\n                            </L7p:entry>\n                        </L7p:Parameters>\n                    </L7p:Encapsulated>\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"MjAw\"/>\n                        <L7p:VariableToSet stringValue=\"error.code\"/>\n                    </L7p:SetVariable>\n                    <L7p:assertionComment>\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                <L7p:value stringValue=\"-------- store ${lookup.quota},${lookup.timeunit},${lookup.maxrequestrate},${lookup.windowsizeinseconds} in the cache\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:assertionComment>\n                </wsp:All>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"-------- If the plan config doesn't exist in cache then Lookup in the portal resource\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"MTAz\"/>\n                    <L7p:VariableToSet stringValue=\"error.code\"/>\n                </L7p:SetVariable>\n                <L7p:FalseAssertion/>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                            <L7p:value stringValue=\"error\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <L7p:assertionComment>\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                        <L7p:value stringValue=\"---------- lookup ${lookup.planId} for plan config details\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:assertionComment>\n        </wsp:OneOrMore>\n    </wsp:All>\n</wsp:Policy>\n        "
      }
    },
    {
      "goid": "c75906be17960a7d528dc0550a0f8ecb",
      "guid": "5a82043a-94f1-47e9-bcaa-b4378b8b766d",
      "name": "API Plan Lookup",
      "checksum": "37f568a9f9c51b27dedc8ad51c677ee77d89e878",
      "folderPath": "/API Portal Integration",
      "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:CommentAssertion>\n            <L7p:Comment stringValue=\"Policy Fragment: API Plan Lookup\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"------------------------------------------------------------------------------\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"Description: \"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"This is the API Plan lookup interface which will call\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"- API Key Record Lookup\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"---- INPUT: ${apiKey} and ${apiId}\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"---- OUTPUT: ${lookup.quota}, ${lookup.timeunit}, ${lookup.maxrequestrate}, ${lookup.windownsizeinseconds} and ${error.code}\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"------------------------------------------------------------------------------\"/>\n        </L7p:CommentAssertion>\n        <wsp:OneOrMore wsp:Usage=\"Required\">\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:Encapsulated>\n                    <L7p:AssertionComment assertionComment=\"included\">\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                <L7p:value stringValue=\"Input: ${apiKey} and ${apiId} Output: ${lookup.planId}\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:AssertionComment>\n                    <L7p:EncapsulatedAssertionConfigGuid stringValue=\"8b765e69-af82-4bc3-9764-291be4d1bbf4\"/>\n                    <L7p:EncapsulatedAssertionConfigName stringValue=\"API Key Record Lookup\"/>\n                </L7p:Encapsulated>\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${lookup.planId}\"/>\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:Negated booleanValue=\"true\"/>\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:ComparisonAssertion>\n                            <L7p:CaseSensitive booleanValue=\"false\"/>\n                            <L7p:Expression1 stringValue=\"${lookup.planId}\"/>\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:RightValue stringValue=\"no-api-plan\"/>\n                                </L7p:item>\n                            </L7p:Predicates>\n                        </L7p:ComparisonAssertion>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"LTE=\"/>\n                            <L7p:VariableToSet stringValue=\"lookup.quota\"/>\n                        </L7p:SetVariable>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"LTE=\"/>\n                            <L7p:VariableToSet stringValue=\"lookup.timeunit\"/>\n                        </L7p:SetVariable>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"LTE=\"/>\n                            <L7p:VariableToSet stringValue=\"lookup.maxrequestrate\"/>\n                        </L7p:SetVariable>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"LTE=\"/>\n                            <L7p:VariableToSet stringValue=\"lookup.windowsizeinseconds\"/>\n                        </L7p:SetVariable>\n                        <L7p:assertionComment>\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"// if ${lookup.planId} is &quot;no-api-plan&quot;\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:assertionComment>\n                    </wsp:All>\n                    <L7p:Encapsulated>\n                        <L7p:AssertionComment assertionComment=\"included\">\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"Input: ${lookup.planId} Output: ${lookup.quota}, ${lookup.timeunit}, ${lookup.maxrequestrate}, ${lookup.windownsizeinseconds} and ${error.code}\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:AssertionComment>\n                        <L7p:EncapsulatedAssertionConfigGuid stringValue=\"c925831a-e8e9-46e9-8952-19efa5a1b4dd\"/>\n                        <L7p:EncapsulatedAssertionConfigName stringValue=\"API Plan Config Lookup\"/>\n                    </L7p:Encapsulated>\n                    <L7p:assertionComment>\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                                <L7p:value stringValue=\"API Plan details lookup\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:assertionComment>\n                </wsp:OneOrMore>\n            </wsp:All>\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"MTAz\"/>\n                    <L7p:VariableToSet stringValue=\"error.code\"/>\n                </L7p:SetVariable>\n                <L7p:FalseAssertion/>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                            <L7p:value stringValue=\"error\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n        </wsp:OneOrMore>\n    </wsp:All>\n</wsp:Policy>\n\n        "
      }
    },
    {
      "goid": "b4bff64ea3a845db60b78151a87dc05e",
      "guid": "f8a5669d-831e-4417-9225-f52527f90212",
      "name": "API Plans Traffic Enforcement Fragment",
      "checksum": "541f61bed36c6b7449f3a3e211e6c6c9627da374",
      "folderPath": "/API Portal Integration",
      "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=\"ZmFsc2U=\"/>\n            <L7p:VariableToSet stringValue=\"apiAuthz\"/>\n        </L7p:SetVariable>\n        <L7p:SetVariable>\n            <L7p:Base64Expression stringValue=\"Tm90IFNldA==\"/>\n            <L7p:VariableToSet stringValue=\"apiAuthzDetails\"/>\n        </L7p:SetVariable>\n        <wsp:OneOrMore wsp:Usage=\"Required\">\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtwb3J0YWwubWFuYWdlZC5zZXJ2aWNlLmFwaUlkfQ==\"/>\n                    <L7p:VariableToSet stringValue=\"apiId\"/>\n                </L7p:SetVariable>\n                <wsp:OneOrMore wsp:Usage=\"Required\">\n                    <L7p:ComparisonAssertion>\n                        <L7p:AssertionComment assertionComment=\"included\">\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                                    <L7p:value stringValue=\"// Skip API Plan lookup for unit testing\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:AssertionComment>\n                        <L7p:CaseSensitive booleanValue=\"false\"/>\n                        <L7p:Expression1 stringValue=\"${api.plans.traffic.enforce.skip.lookup}\"/>\n                        <L7p:MultivaluedComparison multivaluedComparison=\"FIRST\"/>\n                        <L7p:Operator operatorNull=\"null\"/>\n                        <L7p:Predicates predicates=\"included\">\n                            <L7p:item dataType=\"included\">\n                                <L7p:Type variableDataType=\"boolean\"/>\n                            </L7p:item>\n                            <L7p:item binary=\"included\">\n                                <L7p:CaseSensitive booleanValue=\"false\"/>\n                                <L7p:RightValue stringValue=\"true\"/>\n                            </L7p:item>\n                        </L7p:Predicates>\n                    </L7p:ComparisonAssertion>\n                    <L7p:Encapsulated>\n                        <L7p:EncapsulatedAssertionConfigGuid stringValue=\"18fee60c-88aa-4551-b197-602e9abd5996\"/>\n                        <L7p:EncapsulatedAssertionConfigName stringValue=\"API Plan Lookup\"/>\n                    </L7p:Encapsulated>\n                </wsp:OneOrMore>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHthcGlBdXRoekRldGFpbHN9fCR7YXBpS2V5fXwke2FjY291bnRQbGFuTWFwcGluZ0lkfXxxdW90YT8=\"/>\n                    <L7p:VariableToSet stringValue=\"apiAuthzDetails\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"MA==\"/>\n                    <L7p:VariableToSet stringValue=\"quota\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHtsb29rdXAudGltZXVuaXR9\"/>\n                    <L7p:VariableToSet stringValue=\"timeUnit\"/>\n                </L7p:SetVariable>\n                <L7p:Encapsulated>\n                    <L7p:EncapsulatedAssertionConfigGuid stringValue=\"c76b0b8a-364b-4a14-b232-1aaafb210da2\"/>\n                    <L7p:EncapsulatedAssertionConfigName stringValue=\"Portal Require API Plan\"/>\n                    <L7p:Parameters mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"apiId\"/>\n                            <L7p:value stringValue=\"${portal.managed.service.apiId}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"apiKey\"/>\n                            <L7p:value stringValue=\"${request.http.parameter.apikey}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"quota\"/>\n                            <L7p:value stringValue=\"${lookup.quota}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"ratelimit\"/>\n                            <L7p:value stringValue=\"${lookup.maxrequestrate}\"/>\n                        </L7p:entry>\n                        <L7p:entry>\n                            <L7p:key stringValue=\"timeUnit\"/>\n                            <L7p:value stringValue=\"${timeUnit}\"/>\n                        </L7p:entry>\n                    </L7p:Parameters>\n                </L7p:Encapsulated>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHthcGlBdXRoekRldGFpbHN9b2t8cmF0ZT8=\"/>\n                    <L7p:VariableToSet stringValue=\"apiAuthzDetails\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"dHJ1ZQ==\"/>\n                    <L7p:VariableToSet stringValue=\"apiAuthz\"/>\n                </L7p:SetVariable>\n            </wsp:All>\n            <wsp:All wsp:Usage=\"Required\">\n                <wsp:OneOrMore wsp:Usage=\"Required\">\n                    <L7p:ComparisonAssertion>\n                        <L7p:CaseSensitive booleanValue=\"false\"/>\n                        <L7p:Expression1 stringValue=\"${error.code}\"/>\n                        <L7p:Operator operatorNull=\"null\"/>\n                        <L7p:Predicates predicates=\"included\">\n                            <L7p:item dataType=\"included\">\n                                <L7p:Type variableDataType=\"int\"/>\n                            </L7p:item>\n                            <L7p:item binary=\"included\">\n                                <L7p:RightValue stringValue=\"0\"/>\n                            </L7p:item>\n                        </L7p:Predicates>\n                    </L7p:ComparisonAssertion>\n                    <L7p:SetVariable>\n                        <L7p:Base64Expression stringValue=\"JHthcGlBdXRoekRldGFpbHN9JHtlcnJvci5tc2d9\"/>\n                        <L7p:VariableToSet stringValue=\"apiAuthzDetails\"/>\n                    </L7p:SetVariable>\n                </wsp:OneOrMore>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHthcGlBdXRoekRldGFpbHN9ZmFpbGVk\"/>\n                    <L7p:VariableToSet stringValue=\"apiAuthzDetails\"/>\n                </L7p:SetVariable>\n            </wsp:All>\n        </wsp:OneOrMore>\n        <L7p:ExportVariables>\n            <L7p:ExportedVars stringArrayValue=\"included\">\n                <L7p:item stringValue=\"apiAuthz\"/>\n                <L7p:item stringValue=\"apiAuthzDetails\"/>\n                <L7p:item stringValue=\"quota\"/>\n                <L7p:item stringValue=\"timeUnit\"/>\n            </L7p:ExportedVars>\n        </L7p:ExportVariables>\n    </wsp:All>\n</wsp:Policy>\n\n                        "
      }
    },
    {
      "goid": "b4bff64ea3a845db60b78151a87dc16f",
      "guid": "f8a5669d-831e-4417-9225-f52527f90323",
      "name": "Account Plans Fragment",
      "checksum": "219c9d22c480ca4d623e0241ba3f598aadfc760b",
      "folderPath": "/API Portal Integration",
      "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:AuditDetailAssertion>\n            <L7p:Detail stringValue=\"Policy Fragment: Account Plans Fragment\"/>\n            <L7p:LoggingOnly booleanValue=\"true\"/>\n        </L7p:AuditDetailAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"// This fragment is auto generated by the gateway. DO NOT MODIFY\"/>\n        </L7p:CommentAssertion>\n        <L7p:SetVariable>\n            <L7p:Base64Expression stringValue=\"JHthcGlLZXl9\"/>\n            <L7p:VariableToSet stringValue=\"apiKey\"/>\n        </L7p:SetVariable>\n        <L7p:SetVariable>\n            <L7p:Base64Expression stringValue=\"JHthY2NvdW50UGxhbk1hcHBpbmdJZH0=\"/>\n            <L7p:VariableToSet stringValue=\"accountPlanMappingId\"/>\n        </L7p:SetVariable>\n        <L7p:SetVariable>\n            <L7p:Base64Expression stringValue=\"ZmFsc2U=\"/>\n            <L7p:VariableToSet stringValue=\"apiAuthz\"/>\n        </L7p:SetVariable>\n        <L7p:SetVariable>\n            <L7p:Base64Expression stringValue=\"Tm90IFNldA==\"/>\n            <L7p:VariableToSet stringValue=\"apiAuthzDetails\"/>\n        </L7p:SetVariable>\n        <wsp:OneOrMore wsp:Usage=\"Required\">\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${accountPlanMappingId}\"/>\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:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${apiAuthzDetails}\"/>\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=\"Not Set\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <wsp:OneOrMore wsp:Usage=\"Required\">\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"NDdjZDdjZDktZGJlZC00OTAzLWExZDUtYTg5NWZkYTJhZDRhLDcxZmZlN2MxLWI0ZDQtNDA5MC1hOTI4LTg0ZTJlYzY2OTQ0MSxiYzExMWM4NC1jNWMwLTQzNzMtYmY5MS1lOThmYTI0NDJkYjUsZmQ5MjI5ZWMtNTM5NS00YmU1LWJmZTUtZjFiY2IwMDZkYzFl\"/>\n                            <L7p:VariableToSet stringValue=\"orgIds\"/>\n                        </L7p:SetVariable>\n                        <L7p:Split>\n                            <L7p:IgnoreEmptyValues booleanValue=\"true\"/>\n                            <L7p:InputVariable stringValue=\"orgIds\"/>\n                            <L7p:OutputVariable stringValue=\"orgIdsSplit\"/>\n                        </L7p:Split>\n                        <L7p:IndexLookupByItem>\n                            <L7p:MultivaluedVariableName stringValue=\"orgIdsSplit\"/>\n                            <L7p:OutputVariableName stringValue=\"matchIndex\"/>\n                            <L7p:ValueToSearchForVariableName stringValue=\"accountPlanMappingId\"/>\n                        </L7p:IndexLookupByItem>\n                    </wsp:All>\n                </wsp:OneOrMore>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"NzFlYzhhMzctOTM2Mi0xMWUzLWI3NDItMDAwYzI5MTFhNGRi\"/>\n                    <L7p:VariableToSet stringValue=\"accountPlanId\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"SW50ZXJuYWwgUGxhbg==\"/>\n                    <L7p:VariableToSet stringValue=\"accountPlanName\"/>\n                </L7p:SetVariable>\n                <wsp:OneOrMore wsp:Usage=\"Required\">\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHthcGlBdXRoekRldGFpbHN9fCR7YXBpS2V5fXwke2FjY291bnRQbGFuTWFwcGluZ0lkfXxxdW90YT8=\"/>\n                            <L7p:VariableToSet stringValue=\"apiAuthzDetails\"/>\n                        </L7p:SetVariable>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"MA==\"/>\n                            <L7p:VariableToSet stringValue=\"quota\"/>\n                        </L7p:SetVariable>\n                        <L7p:ThroughputQuota>\n                            <L7p:CounterName stringValue=\"${accountPlanMappingId}\"/>\n                            <L7p:Enabled booleanValue=\"false\"/>\n                            <L7p:Global booleanValue=\"true\"/>\n                            <L7p:Quota stringValue=\"${quota}\"/>\n                            <L7p:ReadSynchronous booleanValue=\"false\"/>\n                            <L7p:Synchronous booleanValue=\"false\"/>\n                        </L7p:ThroughputQuota>\n                        <L7p:RateLimit>\n                            <L7p:CounterName stringValue=\"${accountPlanMappingId}\"/>\n                            <L7p:Enabled booleanValue=\"false\"/>\n                        </L7p:RateLimit>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHthcGlBdXRoekRldGFpbHN9b2t8cmF0ZT8=\"/>\n                            <L7p:VariableToSet stringValue=\"apiAuthzDetails\"/>\n                        </L7p:SetVariable>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"dHJ1ZQ==\"/>\n                            <L7p:VariableToSet stringValue=\"apiAuthz\"/>\n                        </L7p:SetVariable>\n                    </wsp:All>\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHthcGlBdXRoekRldGFpbHN9ZmFpbGVk\"/>\n                            <L7p:VariableToSet stringValue=\"apiAuthzDetails\"/>\n                        </L7p:SetVariable>\n                    </wsp:All>\n                </wsp:OneOrMore>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"Internal Plan:71ec8a37-9362-11e3-b742-000c2911a4db\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${accountPlanMappingId}\"/>\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:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${apiAuthzDetails}\"/>\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=\"Not Set\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <wsp:OneOrMore wsp:Usage=\"Required\">\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"\"/>\n                            <L7p:VariableToSet stringValue=\"orgIds\"/>\n                        </L7p:SetVariable>\n                        <L7p:Split>\n                            <L7p:IgnoreEmptyValues booleanValue=\"true\"/>\n                            <L7p:InputVariable stringValue=\"orgIds\"/>\n                            <L7p:OutputVariable stringValue=\"orgIdsSplit\"/>\n                        </L7p:Split>\n                        <L7p:IndexLookupByItem>\n                            <L7p:MultivaluedVariableName stringValue=\"orgIdsSplit\"/>\n                            <L7p:OutputVariableName stringValue=\"matchIndex\"/>\n                            <L7p:ValueToSearchForVariableName stringValue=\"accountPlanMappingId\"/>\n                        </L7p:IndexLookupByItem>\n                    </wsp:All>\n                </wsp:OneOrMore>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"YWMxNjk1ZmMtYWIwOS00YmU5LWJkMTQtMzliYTdmOWMxZTY5\"/>\n                    <L7p:VariableToSet stringValue=\"accountPlanId\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"UGxhdGludW0=\"/>\n                    <L7p:VariableToSet stringValue=\"accountPlanName\"/>\n                </L7p:SetVariable>\n                <wsp:OneOrMore wsp:Usage=\"Required\">\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHthcGlBdXRoekRldGFpbHN9fCR7YXBpS2V5fXwke2FjY291bnRQbGFuTWFwcGluZ0lkfXxxdW90YT8=\"/>\n                            <L7p:VariableToSet stringValue=\"apiAuthzDetails\"/>\n                        </L7p:SetVariable>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"MA==\"/>\n                            <L7p:VariableToSet stringValue=\"quota\"/>\n                        </L7p:SetVariable>\n                        <L7p:ThroughputQuota>\n                            <L7p:CounterName stringValue=\"${accountPlanMappingId}\"/>\n                            <L7p:Enabled booleanValue=\"false\"/>\n                            <L7p:Global booleanValue=\"true\"/>\n                            <L7p:Quota stringValue=\"${quota}\"/>\n                            <L7p:ReadSynchronous booleanValue=\"false\"/>\n                            <L7p:Synchronous booleanValue=\"false\"/>\n                        </L7p:ThroughputQuota>\n                        <L7p:RateLimit>\n                            <L7p:CounterName stringValue=\"${accountPlanMappingId}\"/>\n                            <L7p:Enabled booleanValue=\"false\"/>\n                        </L7p:RateLimit>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHthcGlBdXRoekRldGFpbHN9b2t8cmF0ZT8=\"/>\n                            <L7p:VariableToSet stringValue=\"apiAuthzDetails\"/>\n                        </L7p:SetVariable>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"dHJ1ZQ==\"/>\n                            <L7p:VariableToSet stringValue=\"apiAuthz\"/>\n                        </L7p:SetVariable>\n                    </wsp:All>\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHthcGlBdXRoekRldGFpbHN9ZmFpbGVk\"/>\n                            <L7p:VariableToSet stringValue=\"apiAuthzDetails\"/>\n                        </L7p:SetVariable>\n                    </wsp:All>\n                </wsp:OneOrMore>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"Platinum:ac1695fc-ab09-4be9-bd14-39ba7f9c1e69\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${accountPlanMappingId}\"/>\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:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${apiAuthzDetails}\"/>\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=\"Not Set\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <wsp:OneOrMore wsp:Usage=\"Required\">\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"\"/>\n                            <L7p:VariableToSet stringValue=\"orgIds\"/>\n                        </L7p:SetVariable>\n                        <L7p:Split>\n                            <L7p:IgnoreEmptyValues booleanValue=\"true\"/>\n                            <L7p:InputVariable stringValue=\"orgIds\"/>\n                            <L7p:OutputVariable stringValue=\"orgIdsSplit\"/>\n                        </L7p:Split>\n                        <L7p:IndexLookupByItem>\n                            <L7p:MultivaluedVariableName stringValue=\"orgIdsSplit\"/>\n                            <L7p:OutputVariableName stringValue=\"matchIndex\"/>\n                            <L7p:ValueToSearchForVariableName stringValue=\"accountPlanMappingId\"/>\n                        </L7p:IndexLookupByItem>\n                    </wsp:All>\n                </wsp:OneOrMore>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"ZjIyZGE0M2ItMDBkMS00ZDY5LWI1NDYtZTYyMzM3MTc2NGMz\"/>\n                    <L7p:VariableToSet stringValue=\"accountPlanId\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"V1RG\"/>\n                    <L7p:VariableToSet stringValue=\"accountPlanName\"/>\n                </L7p:SetVariable>\n                <wsp:OneOrMore wsp:Usage=\"Required\">\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHthcGlBdXRoekRldGFpbHN9fCR7YXBpS2V5fXwke2FjY291bnRQbGFuTWFwcGluZ0lkfXxxdW90YT8=\"/>\n                            <L7p:VariableToSet stringValue=\"apiAuthzDetails\"/>\n                        </L7p:SetVariable>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"MA==\"/>\n                            <L7p:VariableToSet stringValue=\"quota\"/>\n                        </L7p:SetVariable>\n                        <L7p:ThroughputQuota>\n                            <L7p:CounterName stringValue=\"${accountPlanMappingId}\"/>\n                            <L7p:Enabled booleanValue=\"false\"/>\n                            <L7p:Global booleanValue=\"true\"/>\n                            <L7p:Quota stringValue=\"${quota}\"/>\n                            <L7p:ReadSynchronous booleanValue=\"false\"/>\n                            <L7p:Synchronous booleanValue=\"false\"/>\n                        </L7p:ThroughputQuota>\n                        <L7p:RateLimit>\n                            <L7p:CounterName stringValue=\"${accountPlanMappingId}\"/>\n                            <L7p:Enabled booleanValue=\"false\"/>\n                        </L7p:RateLimit>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHthcGlBdXRoekRldGFpbHN9b2t8cmF0ZT8=\"/>\n                            <L7p:VariableToSet stringValue=\"apiAuthzDetails\"/>\n                        </L7p:SetVariable>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"dHJ1ZQ==\"/>\n                            <L7p:VariableToSet stringValue=\"apiAuthz\"/>\n                        </L7p:SetVariable>\n                    </wsp:All>\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHthcGlBdXRoekRldGFpbHN9ZmFpbGVk\"/>\n                            <L7p:VariableToSet stringValue=\"apiAuthzDetails\"/>\n                        </L7p:SetVariable>\n                    </wsp:All>\n                </wsp:OneOrMore>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"WTF:f22da43b-00d1-4d69-b546-e623371764c3\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${accountPlanMappingId}\"/>\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:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${apiAuthzDetails}\"/>\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=\"Not Set\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <wsp:OneOrMore wsp:Usage=\"Required\">\n                    <L7p:TrueAssertion/>\n                </wsp:OneOrMore>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"M2Y0ZDJkMDAtOTFjOC0xMWVkLTk5NTItMDI0MmMwYThkMDAy\"/>\n                    <L7p:VariableToSet stringValue=\"accountPlanId\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"UmVuYW1lZCBBZ2FpbiBCcm9uemUgUkxRIGZvciBPcmdz\"/>\n                    <L7p:VariableToSet stringValue=\"accountPlanName\"/>\n                </L7p:SetVariable>\n                <wsp:OneOrMore wsp:Usage=\"Required\">\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHthcGlBdXRoekRldGFpbHN9fCR7YXBpS2V5fXwke2FjY291bnRQbGFuTWFwcGluZ0lkfXxxdW90YT8=\"/>\n                            <L7p:VariableToSet stringValue=\"apiAuthzDetails\"/>\n                        </L7p:SetVariable>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"MTAwMA==\"/>\n                            <L7p:VariableToSet stringValue=\"quota\"/>\n                        </L7p:SetVariable>\n                        <L7p:ThroughputQuota>\n                            <L7p:CounterName stringValue=\"${accountPlanMappingId}\"/>\n                            <L7p:Global booleanValue=\"true\"/>\n                            <L7p:Quota stringValue=\"${quota}\"/>\n                            <L7p:ReadSynchronous booleanValue=\"false\"/>\n                            <L7p:Synchronous booleanValue=\"false\"/>\n                            <L7p:TimeUnit stringValue=\"day\"/>\n                        </L7p:ThroughputQuota>\n                        <L7p:RateLimit>\n                            <L7p:CounterName stringValue=\"${accountPlanMappingId}\"/>\n                            <L7p:MaxRequestsPerSecond stringValue=\"50\"/>\n                            <L7p:WindowSizeInSeconds stringValue=\"10\"/>\n                        </L7p:RateLimit>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHthcGlBdXRoekRldGFpbHN9b2t8cmF0ZT8=\"/>\n                            <L7p:VariableToSet stringValue=\"apiAuthzDetails\"/>\n                        </L7p:SetVariable>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"dHJ1ZQ==\"/>\n                            <L7p:VariableToSet stringValue=\"apiAuthz\"/>\n                        </L7p:SetVariable>\n                    </wsp:All>\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"JHthcGlBdXRoekRldGFpbHN9ZmFpbGVk\"/>\n                            <L7p:VariableToSet stringValue=\"apiAuthzDetails\"/>\n                        </L7p:SetVariable>\n                    </wsp:All>\n                </wsp:OneOrMore>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"Renamed Again Bronze RLQ for Orgs:3f4d2d00-91c8-11ed-9952-0242c0a8d002:(default)\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n            <wsp:All wsp:Usage=\"Required\">\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${apiAuthzDetails}\"/>\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=\"Not Set\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"ZmFsc2U=\"/>\n                    <L7p:VariableToSet stringValue=\"apiAuthz\"/>\n                </L7p:SetVariable>\n                <L7p:SetVariable>\n                    <L7p:Base64Expression stringValue=\"JHthcGlLZXl9fCR7YWNjb3VudFBsYW5NYXBwaW5nSWR9IEFjY291bnRQbGFuTWFwcGluZ0lkIG5vdCBmb3VuZA==\"/>\n                    <L7p:VariableToSet stringValue=\"apiAuthzDetails\"/>\n                </L7p:SetVariable>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"RIGHT.COMMENT\"/>\n                            <L7p:value stringValue=\"//accountPlanMappingId not found\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:All>\n        </wsp:OneOrMore>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"Updated on August 9, 2023 10:50:31 PM GMT\"/>\n        </L7p:CommentAssertion>\n        <L7p:ExportVariables>\n            <L7p:ExportedVars stringArrayValue=\"included\">\n                <L7p:item stringValue=\"apiAuthz\"/>\n                <L7p:item stringValue=\"apiAuthzDetails\"/>\n                <L7p:item stringValue=\"accountPlanId\"/>\n                <L7p:item stringValue=\"accountPlanName\"/>\n                <L7p:item stringValue=\"quota\"/>\n                <L7p:item stringValue=\"timeUnit\"/>\n            </L7p:ExportedVars>\n        </L7p:ExportVariables>\n    </wsp:All>\n</wsp:Policy>\n"
      }
    },
    {
      "goid": "51b41dca9eec541b35ae23d02d0e15cd",
      "guid": "bee15aa5-1c50-41a2-bff7-af1deaf03593",
      "name": "Portal API Key Create Hash",
      "checksum": "f46a80e9933853112387492bf582db5e89adc0f8",
      "folderPath": "/API Portal Integration",
      "soap": false,
      "policy": {
        "xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><wsp:Policy xmlns:L7p=\"http://www.layer7tech.com/ws/policy\" xmlns:wsp=\"http://schemas.xmlsoap.org/ws/2002/12/policy\">  <wsp:All wsp:Usage=\"Required\">    <L7p:CommentAssertion>      <L7p:Comment stringValue=\" ============================================\"/>    </L7p:CommentAssertion>    <L7p:CommentAssertion>      <L7p:Comment stringValue=\" === ***  THIS POLICY IS READ ONLY ***\"/>    </L7p:CommentAssertion>    <L7p:CommentAssertion>      <L7p:Comment stringValue=\" === If you have the need to customize this policy\"/>    </L7p:CommentAssertion>    <L7p:CommentAssertion>      <L7p:Comment stringValue=\" === please contact CA APIM Support so we can improve customization capability\"/>    </L7p:CommentAssertion>    <L7p:CommentAssertion>      <L7p:Comment stringValue=\" ============================================\"/>    </L7p:CommentAssertion>    <L7p:CommentAssertion>      <L7p:Comment stringValue=\"Used at two positions within the clientstore policy\"/>    </L7p:CommentAssertion>    <L7p:CommentAssertion>      <L7p:Comment stringValue=\"Policy Fragment: OTK Create Hash\"/>    </L7p:CommentAssertion>    <wsp:OneOrMore wsp:Usage=\"Required\">      <wsp:All wsp:Usage=\"Required\">        <L7p:ComparisonAssertion>          <L7p:CaseSensitive booleanValue=\"false\"/>          <L7p:Expression1 stringValue=\"${inputPlaintext}\"/>          <L7p:Operator operatorNull=\"null\"/>          <L7p:Predicates predicates=\"included\">            <L7p:item dataType=\"included\">              <L7p:Type variableDataType=\"string\"/>            </L7p:item>            <L7p:item binary=\"included\">              <L7p:Negated booleanValue=\"true\"/>              <L7p:Operator operator=\"EMPTY\"/>              <L7p:RightValue stringValue=\"\"/>            </L7p:item>          </L7p:Predicates>        </L7p:ComparisonAssertion>        <L7p:ComparisonAssertion>          <L7p:CaseSensitive booleanValue=\"false\"/>          <L7p:Expression1 stringValue=\"${salt}\"/>          <L7p:Operator operatorNull=\"null\"/>          <L7p:Predicates predicates=\"included\">            <L7p:item dataType=\"included\">              <L7p:Type variableDataType=\"string\"/>            </L7p:item>            <L7p:item binary=\"included\">              <L7p:Negated booleanValue=\"true\"/>              <L7p:Operator operator=\"EMPTY\"/>              <L7p:RightValue stringValue=\"\"/>            </L7p:item>          </L7p:Predicates>        </L7p:ComparisonAssertion>        <L7p:ComparisonAssertion>          <L7p:CaseSensitive booleanValue=\"false\"/>          <L7p:Expression1 stringValue=\"${algorithm}\"/>          <L7p:Operator operatorNull=\"null\"/>          <L7p:Predicates predicates=\"included\">            <L7p:item dataType=\"included\">              <L7p:Type variableDataType=\"string\"/>            </L7p:item>            <L7p:item binary=\"included\">              <L7p:Negated booleanValue=\"true\"/>              <L7p:Operator operator=\"EMPTY\"/>              <L7p:RightValue stringValue=\"\"/>            </L7p:item>          </L7p:Predicates>        </L7p:ComparisonAssertion>      </wsp:All>      <wsp:All wsp:Usage=\"Required\">        <L7p:SetVariable>          <L7p:Base64Expression stringValue=\"JHtpbnB1dFBsYWludGV4dH0=\"/>          <L7p:VariableToSet stringValue=\"hashedValue\"/>        </L7p:SetVariable>      </wsp:All>    </wsp:OneOrMore>    <wsp:OneOrMore wsp:Usage=\"Required\">      <wsp:All wsp:Usage=\"Required\">        <L7p:ComparisonAssertion>          <L7p:CaseSensitive booleanValue=\"false\"/>          <L7p:Expression1 stringValue=\"${algorithm}\"/>          <L7p:Operator operatorNull=\"null\"/>          <L7p:Predicates predicates=\"included\">            <L7p:item dataType=\"included\">              <L7p:Type variableDataType=\"string\"/>            </L7p:item>            <L7p:item binary=\"included\">              <L7p:RightValue stringValue=\"MD5\"/>            </L7p:item>          </L7p:Predicates>        </L7p:ComparisonAssertion>        <L7p:GenerateSecurityHash>          <L7p:Algorithm stringValue=\"MD5\"/>          <L7p:Base64Data stringValue=\"JHtpbnB1dFBsYWludGV4dH0ke3NhbHR9\"/>          <L7p:LineBreak lineBreak=\"CR-LF\"/>          <L7p:TargetOutputVariable stringValue=\"hashedValue\"/>        </L7p:GenerateSecurityHash>      </wsp:All>      <wsp:All wsp:Usage=\"Required\">        <L7p:ComparisonAssertion>          <L7p:CaseSensitive booleanValue=\"false\"/>          <L7p:Expression1 stringValue=\"${algorithm}\"/>          <L7p:Operator operatorNull=\"null\"/>          <L7p:Predicates predicates=\"included\">            <L7p:item dataType=\"included\">              <L7p:Type variableDataType=\"string\"/>            </L7p:item>            <L7p:item binary=\"included\">              <L7p:RightValue stringValue=\"SHA-1\"/>            </L7p:item>          </L7p:Predicates>        </L7p:ComparisonAssertion>        <L7p:GenerateSecurityHash>          <L7p:Algorithm stringValue=\"SHA-1\"/>          <L7p:Base64Data stringValue=\"JHtpbnB1dFBsYWludGV4dH0ke3NhbHR9\"/>          <L7p:LineBreak lineBreak=\"CR-LF\"/>          <L7p:TargetOutputVariable stringValue=\"hashedValue\"/>        </L7p:GenerateSecurityHash>      </wsp:All>      <wsp:All wsp:Usage=\"Required\">        <L7p:ComparisonAssertion>          <L7p:CaseSensitive booleanValue=\"false\"/>          <L7p:Expression1 stringValue=\"${algorithm}\"/>          <L7p:Operator operatorNull=\"null\"/>          <L7p:Predicates predicates=\"included\">            <L7p:item dataType=\"included\">              <L7p:Type variableDataType=\"string\"/>            </L7p:item>            <L7p:item binary=\"included\">              <L7p:RightValue stringValue=\"SHA-256\"/>            </L7p:item>          </L7p:Predicates>        </L7p:ComparisonAssertion>        <L7p:GenerateSecurityHash>          <L7p:Algorithm stringValue=\"SHA-256\"/>          <L7p:Base64Data stringValue=\"JHtpbnB1dFBsYWludGV4dH0ke3NhbHR9\"/>          <L7p:LineBreak lineBreak=\"CR-LF\"/>          <L7p:TargetOutputVariable stringValue=\"hashedValue\"/>        </L7p:GenerateSecurityHash>      </wsp:All>      <wsp:All wsp:Usage=\"Required\">        <L7p:ComparisonAssertion>          <L7p:CaseSensitive booleanValue=\"false\"/>          <L7p:Expression1 stringValue=\"${algorithm}\"/>          <L7p:Operator operatorNull=\"null\"/>          <L7p:Predicates predicates=\"included\">            <L7p:item dataType=\"included\">              <L7p:Type variableDataType=\"string\"/>            </L7p:item>            <L7p:item binary=\"included\">              <L7p:RightValue stringValue=\"SHA-384\"/>            </L7p:item>          </L7p:Predicates>        </L7p:ComparisonAssertion>        <L7p:GenerateSecurityHash>          <L7p:Algorithm stringValue=\"SHA-384\"/>          <L7p:Base64Data stringValue=\"JHtpbnB1dFBsYWludGV4dH0ke3NhbHR9\"/>          <L7p:LineBreak lineBreak=\"CR-LF\"/>          <L7p:TargetOutputVariable stringValue=\"hashedValue\"/>        </L7p:GenerateSecurityHash>      </wsp:All>      <wsp:All wsp:Usage=\"Required\">        <L7p:ComparisonAssertion>          <L7p:CaseSensitive booleanValue=\"false\"/>          <L7p:Expression1 stringValue=\"${algorithm}\"/>          <L7p:Operator operatorNull=\"null\"/>          <L7p:Predicates predicates=\"included\">            <L7p:item dataType=\"included\">              <L7p:Type variableDataType=\"string\"/>            </L7p:item>            <L7p:item binary=\"included\">              <L7p:RightValue stringValue=\"SHA-512\"/>            </L7p:item>          </L7p:Predicates>        </L7p:ComparisonAssertion>        <L7p:GenerateSecurityHash>          <L7p:Algorithm stringValue=\"SHA-512\"/>          <L7p:Base64Data stringValue=\"JHtpbnB1dFBsYWludGV4dH0ke3NhbHR9\"/>          <L7p:LineBreak lineBreak=\"CR-LF\"/>          <L7p:TargetOutputVariable stringValue=\"hashedValue\"/>        </L7p:GenerateSecurityHash>      </wsp:All>      <wsp:All wsp:Usage=\"Required\">        <L7p:AuditDetailAssertion>          <L7p:Detail stringValue=\"INFO: unsupported hash algorithm: '${algorithm}'\"/>        </L7p:AuditDetailAssertion>        <L7p:FalseAssertion/>      </wsp:All>    </wsp:OneOrMore>  </wsp:All></wsp:Policy>"
      }
    },
    {
      "goid": "856ba8e3a5daa1ef23ed658905e4bea2",
      "guid": "cba7ee16-b83d-4a66-a227-de170b4b2b09",
      "name": "Portal API Key Lookup (Local Store) Fragment",
      "checksum": "27ee6c1899ea408598eebf367ad5327c36d4a6cf",
      "folderPath": "/API Portal Integration",
      "soap": false,
      "policy": {
        "xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><wsp:Policy\txmlns:L7p=\"http://www.layer7tech.com/ws/policy\"\txmlns:wsp=\"http://schemas.xmlsoap.org/ws/2002/12/policy\">\t<wsp:All wsp:Usage=\"Required\">\t\t<L7p:CommentAssertion>\t\t\t<L7p:Comment stringValue=\" ============================================\"/>\t\t</L7p:CommentAssertion>\t\t<L7p:CommentAssertion>\t\t\t<L7p:Comment stringValue=\" === *** THIS POLICY IS READ ONLY ***\"/>\t\t</L7p:CommentAssertion>\t\t<L7p:CommentAssertion>\t\t\t<L7p:Comment stringValue=\" === If you have the need to customize this policy\"/>\t\t</L7p:CommentAssertion>\t\t<L7p:CommentAssertion>\t\t\t<L7p:Comment stringValue=\" === please contact CA APIM Support so we can improve customization capability\"/>\t\t</L7p:CommentAssertion>\t\t<L7p:CommentAssertion>\t\t\t<L7p:Comment stringValue=\" ============================================\"/>\t\t</L7p:CommentAssertion>\t\t<L7p:CommentAssertion>\t\t\t<L7p:Comment stringValue=\"This policy can be found and should be used as 'Encapsulated Assertion'!\"/>\t\t</L7p:CommentAssertion>\t\t<L7p:CommentAssertion>\t\t\t<L7p:Comment stringValue=\"This policy retrieves an API Key. Either on the local Key Value Store\"/>\t\t</L7p:CommentAssertion>\t\t<L7p:SetVariable>\t\t\t<L7p:AssertionComment assertionComment=\"included\">\t\t\t\t<L7p:Properties mapValue=\"included\">\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t<L7p:key stringValue=\"LEFT.COMMENT\"/>\t\t\t\t\t\t<L7p:value stringValue=\"error code\"/>\t\t\t\t\t</L7p:entry>\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t<L7p:key stringValue=\"RIGHT.COMMENT\"/>\t\t\t\t\t\t<L7p:value stringValue=\"overwritten in case of an error\"/>\t\t\t\t\t</L7p:entry>\t\t\t\t</L7p:Properties>\t\t\t</L7p:AssertionComment>\t\t\t<L7p:Base64Expression stringValue=\"\"/>\t\t\t<L7p:VariableToSet stringValue=\"error.code\"/>\t\t</L7p:SetVariable>\t\t<L7p:SetVariable>\t\t\t<L7p:AssertionComment assertionComment=\"included\">\t\t\t\t<L7p:Properties mapValue=\"included\">\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t<L7p:key stringValue=\"LEFT.COMMENT\"/>\t\t\t\t\t\t<L7p:value stringValue=\"intialize\"/>\t\t\t\t\t</L7p:entry>\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t<L7p:key stringValue=\"RIGHT.COMMENT\"/>\t\t\t\t\t\t<L7p:value stringValue=\"Make sure this variable is always set\"/>\t\t\t\t\t</L7p:entry>\t\t\t\t</L7p:Properties>\t\t\t</L7p:AssertionComment>\t\t\t<L7p:Base64Expression stringValue=\"dHJ1ZQ==\"/>\t\t\t<L7p:VariableToSet stringValue=\"apiKeyRecord.found\"/>\t\t</L7p:SetVariable>\t\t<wsp:OneOrMore wsp:Usage=\"Required\">\t\t\t<wsp:All wsp:Usage=\"Required\">\t\t\t\t<wsp:All wsp:Usage=\"Required\">\t\t\t\t\t<L7p:SetVariable>\t\t\t\t\t\t<L7p:Base64Expression stringValue=\"bG9jYWw=\"/>\t\t\t\t\t\t<L7p:VariableToSet stringValue=\"kvstore.provider\"/>\t\t\t\t\t</L7p:SetVariable>\t\t\t\t\t<L7p:SetVariable>\t\t\t\t\t\t<L7p:Base64Expression stringValue=\"YXBpa2V5cw==\"/>\t\t\t\t\t\t<L7p:VariableToSet stringValue=\"kvstore.name\"/>\t\t\t\t\t</L7p:SetVariable>\t\t\t\t\t<L7p:SetVariable>\t\t\t\t\t\t<L7p:AssertionComment assertionComment=\"included\">\t\t\t\t\t\t\t<L7p:Properties mapValue=\"included\">\t\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t\t<L7p:key stringValue=\"LEFT.COMMENT\"/>\t\t\t\t\t\t\t\t\t<L7p:value stringValue=\"intialize\"/>\t\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t\t<L7p:key stringValue=\"RIGHT.COMMENT\"/>\t\t\t\t\t\t\t\t\t<L7p:value stringValue=\"Make sure this variable is always set\"/>\t\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t</L7p:Properties>\t\t\t\t\t\t</L7p:AssertionComment>\t\t\t\t\t\t<L7p:Base64Expression stringValue=\"\"/>\t\t\t\t\t\t<L7p:VariableToSet stringValue=\"kvstore\"/>\t\t\t\t\t</L7p:SetVariable>\t\t\t\t\t<L7p:KeyValueLookup>\t\t\t\t\t\t<L7p:Key stringValue=\"${apikey}\"/>\t\t\t\t\t</L7p:KeyValueLookup>\t\t\t\t</wsp:All>\t\t\t\t<wsp:All wsp:Usage=\"Required\">\t\t\t\t\t<L7p:ComparisonAssertion>\t\t\t\t\t\t<L7p:AssertionComment assertionComment=\"included\">\t\t\t\t\t\t\t<L7p:Properties mapValue=\"included\">\t\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t\t<L7p:key stringValue=\"RIGHT.COMMENT\"/>\t\t\t\t\t\t\t\t\t<L7p:value stringValue=\"// Current empty ${serviceid} is still a valid business case for OTK\"/>\t\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t</L7p:Properties>\t\t\t\t\t\t</L7p:AssertionComment>\t\t\t\t\t\t<L7p:CaseSensitive booleanValue=\"false\"/>\t\t\t\t\t\t<L7p:Expression1 stringValue=\"${serviceid}\"/>\t\t\t\t\t\t<L7p:Expression2 stringValue=\"\"/>\t\t\t\t\t\t<L7p:Negate booleanValue=\"true\"/>\t\t\t\t\t\t<L7p:Operator operator=\"EMPTY\"/>\t\t\t\t\t\t<L7p:Predicates predicates=\"included\">\t\t\t\t\t\t\t<L7p:item binary=\"included\">\t\t\t\t\t\t\t\t<L7p:CaseSensitive booleanValue=\"false\"/>\t\t\t\t\t\t\t\t<L7p:Negated booleanValue=\"true\"/>\t\t\t\t\t\t\t\t<L7p:Operator operator=\"EMPTY\"/>\t\t\t\t\t\t\t\t<L7p:RightValue stringValue=\"\"/>\t\t\t\t\t\t\t</L7p:item>\t\t\t\t\t\t</L7p:Predicates>\t\t\t\t\t</L7p:ComparisonAssertion>\t\t\t\t\t<L7p:ResponseXpathAssertion>\t\t\t\t\t\t<L7p:VariablePrefix stringValue=\"xApiIds\"/>\t\t\t\t\t\t<L7p:XmlMsgSrc stringValue=\"response\"/>\t\t\t\t\t\t<L7p:XpathExpression xpathExpressionValue=\"included\">\t\t\t\t\t\t\t<L7p:Expression stringValue=\"/l7:ApiKey/l7:ApiIds\"/>\t\t\t\t\t\t\t<L7p:Namespaces mapValue=\"included\">\t\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t\t<L7p:key stringValue=\"l7\"/>\t\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/04/api-management\"/>\t\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t\t<L7p:key stringValue=\"s\"/>\t\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://schemas.xmlsoap.org/soap/envelope/\"/>\t\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t\t<L7p:key stringValue=\"ns\"/>\t\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/11/otk-clientstore\"/>\t\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t</L7p:Namespaces>\t\t\t\t\t\t\t<L7p:XpathVersion xpathVersion=\"XPATH_1_0\"/>\t\t\t\t\t\t</L7p:XpathExpression>\t\t\t\t\t</L7p:ResponseXpathAssertion>\t\t\t\t\t<L7p:ComparisonAssertion>\t\t\t\t\t\t<L7p:AssertionComment assertionComment=\"included\">\t\t\t\t\t\t\t<L7p:Properties mapValue=\"included\">\t\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t\t<L7p:key stringValue=\"RIGHT.COMMENT\"/>\t\t\t\t\t\t\t\t\t<L7p:value stringValue=\"// In case ${response.apis} contains single api id\"/>\t\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t</L7p:Properties>\t\t\t\t\t\t</L7p:AssertionComment>\t\t\t\t\t\t<L7p:CaseSensitive booleanValue=\"false\"/>\t\t\t\t\t\t<L7p:Expression1 stringValue=\"${xApiIds.result}\"/>\t\t\t\t\t\t<L7p:Expression2 stringValue=\"${serviceid}\"/>\t\t\t\t\t\t<L7p:Operator operator=\"CONTAINS\"/>\t\t\t\t\t\t<L7p:Predicates predicates=\"included\">\t\t\t\t\t\t\t<L7p:item binary=\"included\">\t\t\t\t\t\t\t\t<L7p:CaseSensitive booleanValue=\"false\"/>\t\t\t\t\t\t\t\t<L7p:Operator operator=\"CONTAINS\"/>\t\t\t\t\t\t\t\t<L7p:RightValue stringValue=\"${serviceid}\"/>\t\t\t\t\t\t\t</L7p:item>\t\t\t\t\t\t</L7p:Predicates>\t\t\t\t\t</L7p:ComparisonAssertion>\t\t\t\t</wsp:All>\t\t\t</wsp:All>\t\t\t<wsp:All wsp:Usage=\"Required\">\t\t\t\t<L7p:SetVariable>\t\t\t\t\t<L7p:Base64Expression stringValue=\"NDA0\"/>\t\t\t\t\t<L7p:VariableToSet stringValue=\"error.code\"/>\t\t\t\t</L7p:SetVariable>\t\t\t\t<L7p:SetVariable>\t\t\t\t\t<L7p:Base64Expression stringValue=\"ZmFsc2U=\"/>\t\t\t\t\t<L7p:VariableToSet stringValue=\"apiKeyRecord.found\"/>\t\t\t\t</L7p:SetVariable>\t\t\t</wsp:All>\t\t</wsp:OneOrMore>\t\t<wsp:All wsp:Usage=\"Required\">\t\t\t<L7p:ComparisonAssertion>\t\t\t\t<L7p:CaseSensitive booleanValue=\"false\"/>\t\t\t\t<L7p:Expression1 stringValue=\"${error.code}\"/>\t\t\t\t<L7p:Expression2 stringValue=\"true\"/>\t\t\t\t<L7p:Operator operator=\"EMPTY\"/>\t\t\t\t<L7p:Predicates predicates=\"included\">\t\t\t\t\t<L7p:item binary=\"included\">\t\t\t\t\t\t<L7p:CaseSensitive booleanValue=\"false\"/>\t\t\t\t\t\t<L7p:Operator operator=\"EMPTY\"/>\t\t\t\t\t\t<L7p:RightValue stringValue=\"true\"/>\t\t\t\t\t</L7p:item>\t\t\t\t</L7p:Predicates>\t\t\t</L7p:ComparisonAssertion>\t\t\t<wsp:All wsp:Usage=\"Required\">\t\t\t\t<L7p:ResponseXpathAssertion>\t\t\t\t\t<L7p:VariablePrefix stringValue=\"xKey\"/>\t\t\t\t\t<L7p:XpathExpression xpathExpressionValue=\"included\">\t\t\t\t\t\t<L7p:Expression stringValue=\"/l7:ApiKey/l7:Id\"/>\t\t\t\t\t\t<L7p:Namespaces mapValue=\"included\">\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"l7\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/04/api-management\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"s\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://schemas.xmlsoap.org/soap/envelope/\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"ns\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/11/otk-clientstore\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t</L7p:Namespaces>\t\t\t\t\t\t<L7p:XpathVersion xpathVersion=\"XPATH_1_0\"/>\t\t\t\t\t</L7p:XpathExpression>\t\t\t\t</L7p:ResponseXpathAssertion>\t\t\t\t<L7p:ResponseXpathAssertion>\t\t\t\t\t<L7p:VariablePrefix stringValue=\"xKey\"/>\t\t\t\t\t<L7p:XmlMsgSrc stringValue=\"response\"/>\t\t\t\t\t<L7p:XpathExpression xpathExpressionValue=\"included\">\t\t\t\t\t\t<L7p:Expression stringValue=\"/l7:ApiKey/l7:Key\"/>\t\t\t\t\t\t<L7p:Namespaces mapValue=\"included\">\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"l7\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/04/api-management\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"s\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://schemas.xmlsoap.org/soap/envelope/\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"ns\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/11/otk-clientstore\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t</L7p:Namespaces>\t\t\t\t\t\t<L7p:XpathVersion xpathVersion=\"XPATH_1_0\"/>\t\t\t\t\t</L7p:XpathExpression>\t\t\t\t</L7p:ResponseXpathAssertion>\t\t\t\t<L7p:ResponseXpathAssertion>\t\t\t\t\t<L7p:VariablePrefix stringValue=\"xsecret\"/>\t\t\t\t\t<L7p:XmlMsgSrc stringValue=\"response\"/>\t\t\t\t\t<L7p:XpathExpression xpathExpressionValue=\"included\">\t\t\t\t\t\t<L7p:Expression stringValue=\"/l7:ApiKey/l7:Secret\"/>\t\t\t\t\t\t<L7p:Namespaces mapValue=\"included\">\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"l7\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/04/api-management\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"s\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://schemas.xmlsoap.org/soap/envelope/\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"ns\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/11/otk-clientstore\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t</L7p:Namespaces>\t\t\t\t\t\t<L7p:XpathVersion xpathVersion=\"XPATH_1_0\"/>\t\t\t\t\t</L7p:XpathExpression>\t\t\t\t</L7p:ResponseXpathAssertion>\t\t\t\t<L7p:ResponseXpathAssertion>\t\t\t\t\t<L7p:VariablePrefix stringValue=\"xAccountPlanMappingId\"/>\t\t\t\t\t<L7p:XmlMsgSrc stringValue=\"response\"/>\t\t\t\t\t<L7p:XpathExpression xpathExpressionValue=\"included\">\t\t\t\t\t\t<L7p:Expression stringValue=\"/l7:ApiKey/l7:AccountPlanMappingId\"/>\t\t\t\t\t\t<L7p:Namespaces mapValue=\"included\">\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"l7\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/04/api-management\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"s\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://schemas.xmlsoap.org/soap/envelope/\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"ns\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/11/otk-clientstore\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t</L7p:Namespaces>\t\t\t\t\t\t<L7p:XpathVersion xpathVersion=\"XPATH_1_0\"/>\t\t\t\t\t</L7p:XpathExpression>\t\t\t\t</L7p:ResponseXpathAssertion>\t\t\t\t<L7p:ResponseXpathAssertion>\t\t\t\t\t<L7p:VariablePrefix stringValue=\"xAccountPlanMappingName\"/>\t\t\t\t\t<L7p:XmlMsgSrc stringValue=\"response\"/>\t\t\t\t\t<L7p:XpathExpression xpathExpressionValue=\"included\">\t\t\t\t\t\t<L7p:Expression stringValue=\"/l7:ApiKey/l7:AccountPlanMappingName\"/>\t\t\t\t\t\t<L7p:Namespaces mapValue=\"included\">\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"l7\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/04/api-management\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"s\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://schemas.xmlsoap.org/soap/envelope/\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"ns\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/11/otk-clientstore\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t</L7p:Namespaces>\t\t\t\t\t\t<L7p:XpathVersion xpathVersion=\"XPATH_1_0\"/>\t\t\t\t\t</L7p:XpathExpression>\t\t\t\t</L7p:ResponseXpathAssertion>\t\t\t\t<L7p:ResponseXpathAssertion>\t\t\t\t\t<L7p:VariablePrefix stringValue=\"xLabel\"/>\t\t\t\t\t<L7p:XmlMsgSrc stringValue=\"response\"/>\t\t\t\t\t<L7p:XpathExpression xpathExpressionValue=\"included\">\t\t\t\t\t\t<L7p:Expression stringValue=\"/l7:ApiKey/l7:Label\"/>\t\t\t\t\t\t<L7p:Namespaces mapValue=\"included\">\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"l7\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/04/api-management\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"s\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://schemas.xmlsoap.org/soap/envelope/\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"ns\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/11/otk-clientstore\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t</L7p:Namespaces>\t\t\t\t\t\t<L7p:XpathVersion xpathVersion=\"XPATH_1_0\"/>\t\t\t\t\t</L7p:XpathExpression>\t\t\t\t</L7p:ResponseXpathAssertion>\t\t\t\t<L7p:ResponseXpathAssertion>\t\t\t\t\t<L7p:VariablePrefix stringValue=\"xStatus\"/>\t\t\t\t\t<L7p:XmlMsgSrc stringValue=\"response\"/>\t\t\t\t\t<L7p:XpathExpression xpathExpressionValue=\"included\">\t\t\t\t\t\t<L7p:Expression stringValue=\"/l7:ApiKey/l7:Status\"/>\t\t\t\t\t\t<L7p:Namespaces mapValue=\"included\">\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"l7\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/04/api-management\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"s\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://schemas.xmlsoap.org/soap/envelope/\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"ns\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/11/otk-clientstore\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t</L7p:Namespaces>\t\t\t\t\t\t<L7p:XpathVersion xpathVersion=\"XPATH_1_0\"/>\t\t\t\t\t</L7p:XpathExpression>\t\t\t\t</L7p:ResponseXpathAssertion>\t\t\t\t<L7p:ResponseXpathAssertion>\t\t\t\t\t<L7p:VariablePrefix stringValue=\"xPlatform\"/>\t\t\t\t\t<L7p:XmlMsgSrc stringValue=\"response\"/>\t\t\t\t\t<L7p:XpathExpression xpathExpressionValue=\"included\">\t\t\t\t\t\t<L7p:Expression stringValue=\"/l7:ApiKey/l7:Platform\"/>\t\t\t\t\t\t<L7p:Namespaces mapValue=\"included\">\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"l7\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/04/api-management\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"s\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://schemas.xmlsoap.org/soap/envelope/\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"ns\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/11/otk-clientstore\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t</L7p:Namespaces>\t\t\t\t\t\t<L7p:XpathVersion xpathVersion=\"XPATH_1_0\"/>\t\t\t\t\t</L7p:XpathExpression>\t\t\t\t</L7p:ResponseXpathAssertion>\t\t\t\t<L7p:ResponseXpathAssertion>\t\t\t\t\t<L7p:VariablePrefix stringValue=\"xScope\"/>\t\t\t\t\t<L7p:XmlMsgSrc stringValue=\"response\"/>\t\t\t\t\t<L7p:XpathExpression xpathExpressionValue=\"included\">\t\t\t\t\t\t<L7p:Expression stringValue=\"/l7:ApiKey/l7:Security/l7:OAuth/l7:Scope\"/>\t\t\t\t\t\t<L7p:Namespaces mapValue=\"included\">\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"l7\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/04/api-management\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"s\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://schemas.xmlsoap.org/soap/envelope/\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"ns\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/11/otk-clientstore\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t</L7p:Namespaces>\t\t\t\t\t\t<L7p:XpathVersion xpathVersion=\"XPATH_1_0\"/>\t\t\t\t\t</L7p:XpathExpression>\t\t\t\t</L7p:ResponseXpathAssertion>\t\t\t\t<L7p:ResponseXpathAssertion>\t\t\t\t\t<L7p:VariablePrefix stringValue=\"xCallbackUrl\"/>\t\t\t\t\t<L7p:XmlMsgSrc stringValue=\"response\"/>\t\t\t\t\t<L7p:XpathExpression xpathExpressionValue=\"included\">\t\t\t\t\t\t<L7p:Expression stringValue=\"/l7:ApiKey/l7:Security/l7:OAuth/l7:CallbackUrl\"/>\t\t\t\t\t\t<L7p:Namespaces mapValue=\"included\">\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"l7\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/04/api-management\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"s\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://schemas.xmlsoap.org/soap/envelope/\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"ns\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/11/otk-clientstore\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t</L7p:Namespaces>\t\t\t\t\t\t<L7p:XpathVersion xpathVersion=\"XPATH_1_0\"/>\t\t\t\t\t</L7p:XpathExpression>\t\t\t\t</L7p:ResponseXpathAssertion>\t\t\t\t<L7p:ResponseXpathAssertion>\t\t\t\t\t<L7p:VariablePrefix stringValue=\"xType\"/>\t\t\t\t\t<L7p:XmlMsgSrc stringValue=\"response\"/>\t\t\t\t\t<L7p:XpathExpression xpathExpressionValue=\"included\">\t\t\t\t\t\t<L7p:Expression stringValue=\"/l7:ApiKey/l7:Security/l7:OAuth/l7:Type\"/>\t\t\t\t\t\t<L7p:Namespaces mapValue=\"included\">\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"l7\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/04/api-management\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"s\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://schemas.xmlsoap.org/soap/envelope/\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"ns\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/11/otk-clientstore\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t</L7p:Namespaces>\t\t\t\t\t\t<L7p:XpathVersion xpathVersion=\"XPATH_1_0\"/>\t\t\t\t\t</L7p:XpathExpression>\t\t\t\t</L7p:ResponseXpathAssertion>\t\t\t\t<L7p:ResponseXpathAssertion>\t\t\t\t\t<L7p:VariablePrefix stringValue=\"xHashingMetadata\"/>\t\t\t\t\t<L7p:XpathExpression xpathExpressionValue=\"included\">\t\t\t\t\t\t<L7p:Expression stringValue=\"/l7:ApiKey/l7:HashingMetadata\"/>\t\t\t\t\t\t<L7p:Namespaces mapValue=\"included\">\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"l7\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/04/api-management\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"s\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://schemas.xmlsoap.org/soap/envelope/\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"ns\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"http://ns.l7tech.com/2012/11/otk-clientstore\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t</L7p:Namespaces>\t\t\t\t\t\t<L7p:XpathVersion xpathVersion=\"XPATH_1_0\"/>\t\t\t\t\t</L7p:XpathExpression>\t\t\t\t</L7p:ResponseXpathAssertion>\t\t\t\t<L7p:assertionComment>\t\t\t\t\t<L7p:Properties mapValue=\"included\">\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t<L7p:key stringValue=\"LEFT.COMMENT\"/>\t\t\t\t\t\t\t<L7p:value stringValue=\"xPath\"/>\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t<L7p:key stringValue=\"RIGHT.COMMENT\"/>\t\t\t\t\t\t\t<L7p:value stringValue=\"extract values from Xml response\"/>\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t</L7p:Properties>\t\t\t\t</L7p:assertionComment>\t\t\t</wsp:All>\t\t\t<wsp:All wsp:Usage=\"Required\">\t\t\t\t<L7p:SetVariable>\t\t\t\t\t<L7p:AssertionComment assertionComment=\"included\">\t\t\t\t\t\t<L7p:Properties mapValue=\"included\">\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"LEFT.COMMENT\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"intialize\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t\t<L7p:key stringValue=\"RIGHT.COMMENT\"/>\t\t\t\t\t\t\t\t<L7p:value stringValue=\"Make sure this variable is always set\"/>\t\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t</L7p:Properties>\t\t\t\t\t</L7p:AssertionComment>\t\t\t\t\t<L7p:Base64Expression stringValue=\"dHJ1ZQ==\"/>\t\t\t\t\t<L7p:VariableToSet stringValue=\"apiKeyRecord.found\"/>\t\t\t\t</L7p:SetVariable>\t\t\t\t<L7p:SetVariable>\t\t\t\t\t<L7p:Base64Expression stringValue=\"JHt4SWQucmVzdWx0fQ==\"/>\t\t\t\t\t<L7p:VariableToSet stringValue=\"apiKeyRecord.id\"/>\t\t\t\t</L7p:SetVariable>\t\t\t\t<L7p:SetVariable>\t\t\t\t\t<L7p:Base64Expression stringValue=\"JHt4S2V5LnJlc3VsdH0=\"/>\t\t\t\t\t<L7p:VariableToSet stringValue=\"apiKeyRecord.key\"/>\t\t\t\t</L7p:SetVariable>\t\t\t\t<L7p:SetVariable>\t\t\t\t\t<L7p:Base64Expression stringValue=\"JHt4TGFiZWwucmVzdWx0fQ==\"/>\t\t\t\t\t<L7p:VariableToSet stringValue=\"apiKeyRecord.label\"/>\t\t\t\t</L7p:SetVariable>\t\t\t\t<L7p:SetVariable>\t\t\t\t\t<L7p:Base64Expression stringValue=\"JHt4Q2FsbGJhY2tVcmwucmVzdWx0fQ==\"/>\t\t\t\t\t<L7p:VariableToSet stringValue=\"apiKeyRecord.oauthCallbackUrl\"/>\t\t\t\t</L7p:SetVariable>\t\t\t\t<L7p:SetVariable>\t\t\t\t\t<L7p:Base64Expression stringValue=\"JHt4U2NvcGUucmVzdWx0fQ==\"/>\t\t\t\t\t<L7p:VariableToSet stringValue=\"apiKeyRecord.oauthScope\"/>\t\t\t\t</L7p:SetVariable>\t\t\t\t<L7p:SetVariable>\t\t\t\t\t<L7p:Base64Expression stringValue=\"JHt4VHlwZS5yZXN1bHR9\"/>\t\t\t\t\t<L7p:VariableToSet stringValue=\"apiKeyRecord.oauthType\"/>\t\t\t\t</L7p:SetVariable>\t\t\t\t<L7p:SetVariable>\t\t\t\t\t<L7p:Base64Expression stringValue=\"\"/>\t\t\t\t\t<L7p:VariableToSet stringValue=\"apiKeyRecord.plan\"/>\t\t\t\t</L7p:SetVariable>\t\t\t\t<L7p:SetVariable>\t\t\t\t\t<L7p:Base64Expression stringValue=\"JHt4UGxhdGZvcm0ucmVzdWx0fQ==\"/>\t\t\t\t\t<L7p:VariableToSet stringValue=\"apiKeyRecord.platform\"/>\t\t\t\t</L7p:SetVariable>\t\t\t\t<L7p:SetVariable>\t\t\t\t\t<L7p:Base64Expression stringValue=\"JHt4U2VjcmV0LnJlc3VsdH0=\"/>\t\t\t\t\t<L7p:VariableToSet stringValue=\"apiKeyRecord.secret\"/>\t\t\t\t</L7p:SetVariable>\t\t\t\t<L7p:SetVariable>\t\t\t\t\t<L7p:Base64Expression stringValue=\"JHtzZXJ2aWNlSWR9\"/>\t\t\t\t\t<L7p:VariableToSet stringValue=\"apiKeyRecord.service\"/>\t\t\t\t</L7p:SetVariable>\t\t\t\t<L7p:SetVariable>\t\t\t\t\t<L7p:Base64Expression stringValue=\"JHt4U3RhdHVzLnJlc3VsdH0=\"/>\t\t\t\t\t<L7p:VariableToSet stringValue=\"apiKeyRecord.status\"/>\t\t\t\t</L7p:SetVariable>\t\t\t\t<L7p:SetVariable>\t\t\t\t\t<L7p:Base64Expression stringValue=\"JHt4QWNjb3VudFBsYW5NYXBwaW5nSWQucmVzdWx0fQ==\"/>\t\t\t\t\t<L7p:VariableToSet stringValue=\"apiKeyRecord.accountPlanMappingId\"/>\t\t\t\t</L7p:SetVariable>\t\t\t\t<L7p:SetVariable>\t\t\t\t\t<L7p:Base64Expression stringValue=\"JHt4QWNjb3VudFBsYW5NYXBwaW5nTmFtZS5yZXN1bHR9\"/>\t\t\t\t\t<L7p:VariableToSet stringValue=\"apiKeyRecord.accountPlanMappingName\"/>\t\t\t\t</L7p:SetVariable>\t\t\t\t<L7p:SetVariable>\t\t\t\t\t<L7p:Base64Expression stringValue=\"\"/>\t\t\t\t\t<L7p:VariableToSet stringValue=\"apiKeyRecord.version\"/>\t\t\t\t</L7p:SetVariable>\t\t\t\t<L7p:SetVariable>\t\t\t\t\t<L7p:Base64Expression stringValue=\"JHtyZXNwb25zZS5tYWlucGFydH0=\"/>\t\t\t\t\t<L7p:VariableToSet stringValue=\"apiKeyRecord.xml\"/>\t\t\t\t</L7p:SetVariable>\t\t\t\t<L7p:SetVariable>\t\t\t\t\t<L7p:Base64Expression stringValue=\"JHt4SGFzaGluZ01ldGFkYXRhLnJlc3VsdH0=\"/>\t\t\t\t\t<L7p:VariableToSet stringValue=\"apiKeyRecord.hashingMetadata\"/>\t\t\t\t</L7p:SetVariable>\t\t\t\t<L7p:assertionComment>\t\t\t\t\t<L7p:Properties mapValue=\"included\">\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t<L7p:key stringValue=\"LEFT.COMMENT\"/>\t\t\t\t\t\t\t<L7p:value stringValue=\"variables\"/>\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t\t<L7p:entry>\t\t\t\t\t\t\t<L7p:key stringValue=\"RIGHT.COMMENT\"/>\t\t\t\t\t\t\t<L7p:value stringValue=\"create response variables for this assertion\"/>\t\t\t\t\t\t</L7p:entry>\t\t\t\t\t</L7p:Properties>\t\t\t\t</L7p:assertionComment>\t\t\t</wsp:All>\t\t</wsp:All>\t</wsp:All></wsp:Policy>"
      }
    },
    {
      "goid": "51b41dca9eec541b35ae23d02d0e148c",
      "guid": "8af1e302-f70a-4391-8fe1-b8edb864b991",
      "name": "Portal API Key Read Hashed Metadata",
      "checksum": "7b7f38abd8e25074199241393a52382f9a6394ff",
      "folderPath": "/API Portal Integration",
      "soap": false,
      "policy": {
        "xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><wsp:Policy xmlns:L7p=\"http://www.layer7tech.com/ws/policy\" xmlns:wsp=\"http://schemas.xmlsoap.org/ws/2002/12/policy\">  <wsp:All wsp:Usage=\"Required\">    <L7p:CommentAssertion>      <L7p:Comment stringValue=\" ============================================\"/>    </L7p:CommentAssertion>    <L7p:CommentAssertion>      <L7p:Comment stringValue=\" === ***  THIS POLICY IS READ ONLY ***\"/>    </L7p:CommentAssertion>    <L7p:CommentAssertion>      <L7p:Comment stringValue=\" === If you have the need to customize this policy\"/>    </L7p:CommentAssertion>    <L7p:CommentAssertion>      <L7p:Comment stringValue=\" === please contact CA APIM Support so we can improve customization capability\"/>    </L7p:CommentAssertion>    <L7p:CommentAssertion>      <L7p:Comment stringValue=\" ============================================\"/>    </L7p:CommentAssertion>    <L7p:CommentAssertion>      <L7p:Comment stringValue=\"Policy Fragment: Portal API Key Read Hashed Metadata\"/>    </L7p:CommentAssertion>    <L7p:EvaluateJsonPathExpression>      <L7p:Expression stringValue=\"algorithm\"/>      <L7p:OtherTargetMessageVariable stringValue=\"hashing_metadata\"/>      <L7p:Target target=\"OTHER\"/>      <L7p:VariablePrefix stringValue=\"algorithm\"/>    </L7p:EvaluateJsonPathExpression>    <L7p:EvaluateJsonPathExpression>      <L7p:Expression stringValue=\"salt\"/>      <L7p:OtherTargetMessageVariable stringValue=\"hashing_metadata\"/>      <L7p:Target target=\"OTHER\"/>      <L7p:VariablePrefix stringValue=\"salt\"/>    </L7p:EvaluateJsonPathExpression>  </wsp:All></wsp:Policy>"
      }
    },
    {
      "goid": "b774eb7f46b5ced47e3108b462328dd3",
      "guid": "a3cb36ef-4fdb-4f1e-8552-a82265e9bb2c",
      "name": "Portal Require API Plan",
      "checksum": "6a095ecc0c4b5ae664f2025a18bcc7504304b81e",
      "folderPath": "/API Portal Integration",
      "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:CommentAssertion>\n            <L7p:Comment stringValue=\"// This fragment is auto generated by the gateway. DO NOT MODIFY\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"Discover the API Plan that an App (API Key) selected for a specific API ID, then apply the API Plan\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"Preconditions:\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"  - ${apiKey} is valid\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"  - ${apiId} = ${portal.managed.service.apiId}\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"  - ${lookup.ratelimit} returned by API Plan Lookup > 0 or = -1 (disabled)\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"  - ${lookup.quota} returned by API Plan Lookup > 0 or = -1 (disabled)\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"Postconditions:\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"  - ${error.code} != 0 if failed\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"  - ${error.code} == 0 if succeeded\"/>\n        </L7p:CommentAssertion>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"  - ${error.msg} != &quot;&quot; if failed with the detail of the error\"/>\n        </L7p:CommentAssertion>\n        <L7p:SetVariable>\n            <L7p:AssertionComment assertionComment=\"included\">\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                        <L7p:value stringValue=\"Argument\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:AssertionComment>\n            <L7p:Base64Expression stringValue=\"JHthcGlJZH0=\"/>\n            <L7p:VariableToSet stringValue=\"apiId\"/>\n        </L7p:SetVariable>\n        <L7p:SetVariable>\n            <L7p:AssertionComment assertionComment=\"included\">\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                        <L7p:value stringValue=\"Argument\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:AssertionComment>\n            <L7p:Base64Expression stringValue=\"JHthcGlLZXl9\"/>\n            <L7p:VariableToSet stringValue=\"apiKey\"/>\n        </L7p:SetVariable>\n        <L7p:SetVariable>\n            <L7p:AssertionComment assertionComment=\"included\">\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                        <L7p:value stringValue=\"Argument\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:AssertionComment>\n            <L7p:Base64Expression stringValue=\"JHtyYXRlbGltaXR9\"/>\n            <L7p:DataType variableDataType=\"int\"/>\n            <L7p:VariableToSet stringValue=\"lookup.ratelimit\"/>\n        </L7p:SetVariable>\n        <L7p:SetVariable>\n            <L7p:AssertionComment assertionComment=\"included\">\n                <L7p:Properties mapValue=\"included\">\n                    <L7p:entry>\n                        <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                        <L7p:value stringValue=\"Argument\"/>\n                    </L7p:entry>\n                </L7p:Properties>\n            </L7p:AssertionComment>\n            <L7p:Base64Expression stringValue=\"JHtxdW90YX0=\"/>\n            <L7p:DataType variableDataType=\"int\"/>\n            <L7p:VariableToSet stringValue=\"lookup.quota\"/>\n        </L7p:SetVariable>\n        <L7p:CommentAssertion>\n            <L7p:Comment stringValue=\"  Variables\"/>\n        </L7p:CommentAssertion>\n        <L7p:SetVariable>\n            <L7p:Base64Expression stringValue=\"JHthcGlLZXl9LiR7YXBpSWR9\"/>\n            <L7p:VariableToSet stringValue=\"counterName\"/>\n        </L7p:SetVariable>\n        <L7p:SetVariable>\n            <L7p:Base64Expression stringValue=\"MA==\"/>\n            <L7p:DataType variableDataType=\"int\"/>\n            <L7p:VariableToSet stringValue=\"error.code\"/>\n        </L7p:SetVariable>\n        <L7p:SetVariable>\n            <L7p:Base64Expression stringValue=\"\"/>\n            <L7p:VariableToSet stringValue=\"error.msg\"/>\n        </L7p:SetVariable>\n        <wsp:All wsp:Usage=\"Required\">\n            <wsp:OneOrMore wsp:Usage=\"Required\">\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${lookup.ratelimit}\"/>\n                    <L7p:MultivaluedComparison multivaluedComparison=\"FIRST\"/>\n                    <L7p:Operator operatorNull=\"null\"/>\n                    <L7p:Predicates predicates=\"included\">\n                        <L7p:item dataType=\"included\">\n                            <L7p:Type variableDataType=\"int\"/>\n                        </L7p:item>\n                        <L7p:item binary=\"included\">\n                            <L7p:RightValue stringValue=\"-1\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <wsp:OneOrMore wsp:Usage=\"Required\">\n                    <L7p:RateLimit>\n                        <L7p:CounterName stringValue=\"${counterName}\"/>\n                        <L7p:MaxRequestsPerSecond stringValue=\"${lookup.ratelimit}\"/>\n                    </L7p:RateLimit>\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"NDI5\"/>\n                            <L7p:DataType variableDataType=\"int\"/>\n                            <L7p:VariableToSet stringValue=\"error.code\"/>\n                        </L7p:SetVariable>\n                        <L7p:SetVariable>\n                            <L7p:Base64Expression stringValue=\"UmF0ZSBsaW1pdCBleGNlZWRlZA==\"/>\n                            <L7p:VariableToSet stringValue=\"error.msg\"/>\n                        </L7p:SetVariable>\n                        <L7p:FalseAssertion/>\n                        <L7p:assertionComment>\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                                    <L7p:value stringValue=\"Rate limit exceeded\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:assertionComment>\n                    </wsp:All>\n                    <L7p:assertionComment>\n                        <L7p:Properties mapValue=\"included\">\n                            <L7p:entry>\n                                <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                                <L7p:value stringValue=\"Rate limit\"/>\n                            </L7p:entry>\n                        </L7p:Properties>\n                    </L7p:assertionComment>\n                </wsp:OneOrMore>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                            <L7p:value stringValue=\"Check Rate limit enabled\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:OneOrMore>\n            <wsp:OneOrMore wsp:Usage=\"Required\">\n                <L7p:ComparisonAssertion>\n                    <L7p:CaseSensitive booleanValue=\"false\"/>\n                    <L7p:Expression1 stringValue=\"${lookup.quota}\"/>\n                    <L7p:MultivaluedComparison multivaluedComparison=\"FIRST\"/>\n                    <L7p:Operator operatorNull=\"null\"/>\n                    <L7p:Predicates predicates=\"included\">\n                        <L7p:item dataType=\"included\">\n                            <L7p:Type variableDataType=\"int\"/>\n                        </L7p:item>\n                        <L7p:item binary=\"included\">\n                            <L7p:RightValue stringValue=\"-1\"/>\n                        </L7p:item>\n                    </L7p:Predicates>\n                </L7p:ComparisonAssertion>\n                <wsp:OneOrMore wsp:Usage=\"Required\">\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:ComparisonAssertion>\n                            <L7p:CaseSensitive booleanValue=\"false\"/>\n                            <L7p:Expression1 stringValue=\"${timeUnit}\"/>\n                            <L7p:ExpressionIsVariable booleanValue=\"false\"/>\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=\"5\"/>\n                                </L7p:item>\n                            </L7p:Predicates>\n                        </L7p:ComparisonAssertion>\n                        <wsp:OneOrMore wsp:Usage=\"Required\">\n                            <L7p:ThroughputQuota>\n                                <L7p:CounterName stringValue=\"${counterName}\"/>\n                                <L7p:Global booleanValue=\"true\"/>\n                                <L7p:Quota stringValue=\"${lookup.quota}\"/>\n                                <L7p:ReadSynchronous booleanValue=\"false\"/>\n                                <L7p:Synchronous booleanValue=\"false\"/>\n                            </L7p:ThroughputQuota>\n                            <wsp:All wsp:Usage=\"Required\">\n                                <L7p:SetVariable>\n                                    <L7p:Base64Expression stringValue=\"NDI5\"/>\n                                    <L7p:DataType variableDataType=\"int\"/>\n                                    <L7p:VariableToSet stringValue=\"error.code\"/>\n                                </L7p:SetVariable>\n                                <L7p:SetVariable>\n                                    <L7p:Base64Expression stringValue=\"UXVvdGEgcGVyIG1vbnRoIGhhcyBleGNlZWRlZA==\"/>\n                                    <L7p:VariableToSet stringValue=\"error.msg\"/>\n                                </L7p:SetVariable>\n                                <L7p:FalseAssertion/>\n                                <L7p:assertionComment>\n                                    <L7p:Properties mapValue=\"included\">\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                                    <L7p:value stringValue=\"Throughput quota exceeded\"/>\n                                    </L7p:entry>\n                                    </L7p:Properties>\n                                </L7p:assertionComment>\n                            </wsp:All>\n                            <L7p:assertionComment>\n                                <L7p:Properties mapValue=\"included\">\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                                    <L7p:value stringValue=\"Throughput quota\"/>\n                                    </L7p:entry>\n                                </L7p:Properties>\n                            </L7p:assertionComment>\n                        </wsp:OneOrMore>\n                        <L7p:assertionComment>\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                                    <L7p:value stringValue=\"Quota per Month\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:assertionComment>\n                    </wsp:All>\n                    <wsp:All wsp:Usage=\"Required\">\n                        <L7p:ComparisonAssertion>\n                            <L7p:CaseSensitive booleanValue=\"false\"/>\n                            <L7p:Expression1 stringValue=\"${timeUnit}\"/>\n                            <L7p:ExpressionIsVariable booleanValue=\"false\"/>\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=\"4\"/>\n                                </L7p:item>\n                            </L7p:Predicates>\n                        </L7p:ComparisonAssertion>\n                        <wsp:OneOrMore wsp:Usage=\"Required\">\n                            <L7p:ThroughputQuota>\n                                <L7p:CounterName stringValue=\"${counterName}\"/>\n                                <L7p:Global booleanValue=\"true\"/>\n                                <L7p:Quota stringValue=\"${lookup.quota}\"/>\n                                <L7p:ReadSynchronous booleanValue=\"false\"/>\n                                <L7p:Synchronous booleanValue=\"false\"/>\n                                <L7p:TimeUnit intValue=\"4\"/>\n                            </L7p:ThroughputQuota>\n                            <wsp:All wsp:Usage=\"Required\">\n                                <L7p:SetVariable>\n                                    <L7p:Base64Expression stringValue=\"NDI5\"/>\n                                    <L7p:DataType variableDataType=\"int\"/>\n                                    <L7p:VariableToSet stringValue=\"error.code\"/>\n                                </L7p:SetVariable>\n                                <L7p:SetVariable>\n                                    <L7p:Base64Expression stringValue=\"UXVvdGEgcGVyIGRheSBoYXMgZXhjZWVkZWQ=\"/>\n                                    <L7p:VariableToSet stringValue=\"error.msg\"/>\n                                </L7p:SetVariable>\n                                <L7p:FalseAssertion/>\n                                <L7p:assertionComment>\n                                    <L7p:Properties mapValue=\"included\">\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                                    <L7p:value stringValue=\"Throughput quota exceeded\"/>\n                                    </L7p:entry>\n                                    </L7p:Properties>\n                                </L7p:assertionComment>\n                            </wsp:All>\n                            <L7p:assertionComment>\n                                <L7p:Properties mapValue=\"included\">\n                                    <L7p:entry>\n                                    <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                                    <L7p:value stringValue=\"Throughput quota\"/>\n                                    </L7p:entry>\n                                </L7p:Properties>\n                            </L7p:assertionComment>\n                        </wsp:OneOrMore>\n                        <L7p:assertionComment>\n                            <L7p:Properties mapValue=\"included\">\n                                <L7p:entry>\n                                    <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                                    <L7p:value stringValue=\"Quota per day\"/>\n                                </L7p:entry>\n                            </L7p:Properties>\n                        </L7p:assertionComment>\n                    </wsp:All>\n                </wsp:OneOrMore>\n                <L7p:assertionComment>\n                    <L7p:Properties mapValue=\"included\">\n                        <L7p:entry>\n                            <L7p:key stringValue=\"LEFT.COMMENT\"/>\n                            <L7p:value stringValue=\"Check throughput quota enabled\"/>\n                        </L7p:entry>\n                    </L7p:Properties>\n                </L7p:assertionComment>\n            </wsp:OneOrMore>\n        </wsp:All>\n    </wsp:All>\n</wsp:Policy>\n\n                        "
      }
    },
    {
      "goid": "b4bff64ea3a845db60b78151a87dc182",
      "guid": "5a1aa929-3c23-40f4-8558-146a916fe7bb",
      "name": "Standard Policy Template Fragment - API Key",
      "checksum": "542840597a0ef3457ae2ffa9b4e2be60791f2766",
      "folderPath": "/API Portal Integration",
      "soap": false,
      "policy": {
        "xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><wsp:Policy xmlns:L7p=\"http://www.layer7tech.com/ws/policy\" xmlns:wsp=\"http://schemas.xmlsoap.org/ws/2002/12/policy\">  <wsp:All wsp:Usage=\"Required\">    <L7p:AuditAssertion>      <L7p:Enabled booleanValue=\"false\"/>    </L7p:AuditAssertion>    <L7p:ApiPortalEncassIntegration/>    <L7p:AuditDetailAssertion>      <L7p:Detail stringValue=\"Policy Fragment: Standard Policy Template\"/>      <L7p:Enabled booleanValue=\"false\"/>      <L7p:LoggingOnly booleanValue=\"true\"/>    </L7p:AuditDetailAssertion>    <L7p:SetVariable>      <L7p:Base64Expression stringValue=\"\"/>      <L7p:VariableToSet stringValue=\"errorMsg\"/>    </L7p:SetVariable>    <L7p:SetVariable>      <L7p:Base64Expression stringValue=\"QVBJX0tFWQ==\"/>      <L7p:VariableToSet stringValue=\"portal.analytics.authType\"/>    </L7p:SetVariable>    <L7p:SetVariable>      <L7p:Base64Expression stringValue=\"JHtwb3J0YWwubWFuYWdlZC5zZXJ2aWNlLmFwaUlkfQ==\"/>      <L7p:VariableToSet stringValue=\"portal.analytics.api.uuid\"/>    </L7p:SetVariable>    <L7p:SetVariable>      <L7p:Base64Expression stringValue=\"MA==\"/>      <L7p:VariableToSet stringValue=\"portal.analytics.routingTotalTime\"/>    </L7p:SetVariable>    <L7p:SetVariable>      <L7p:Base64Expression stringValue=\"\"/>      <L7p:VariableToSet stringValue=\"portal.analytics.organization.name\"/>    </L7p:SetVariable>    <wsp:OneOrMore wsp:Usage=\"Required\">      <wsp:All wsp:Usage=\"Required\">        <L7p:ComparisonAssertion>          <L7p:CaseSensitive booleanValue=\"false\"/>          <L7p:Expression1 stringValue=\"${request.http.parameter.apikey}\"/>          <L7p:Operator operatorNull=\"null\"/>          <L7p:Predicates predicates=\"included\">            <L7p:item dataType=\"included\">              <L7p:Type variableDataType=\"string\"/>            </L7p:item>            <L7p:item binary=\"included\">              <L7p:CaseSensitive booleanValue=\"false\"/>              <L7p:Negated booleanValue=\"true\"/>              <L7p:Operator operator=\"EMPTY\"/>              <L7p:RightValue stringValue=\"\"/>            </L7p:item>          </L7p:Predicates>        </L7p:ComparisonAssertion>        <L7p:SetVariable>          <L7p:Base64Expression stringValue=\"JHtwb3J0YWwubWFuYWdlZC5zZXJ2aWNlLmFwaUlkfS0ke3JlcXVlc3QuaHR0cC5wYXJhbWV0ZXIuYXBpa2V5fQ==\"/>          <L7p:VariableToSet stringValue=\"counterName\"/>        </L7p:SetVariable>      </wsp:All>      <wsp:All wsp:Usage=\"Required\">        <L7p:ComparisonAssertion>          <L7p:CaseSensitive booleanValue=\"false\"/>          <L7p:Expression1 stringValue=\"${request.http.header.apikey}\"/>          <L7p:Operator operatorNull=\"null\"/>          <L7p:Predicates predicates=\"included\">            <L7p:item dataType=\"included\">              <L7p:Type variableDataType=\"string\"/>            </L7p:item>            <L7p:item binary=\"included\">              <L7p:CaseSensitive booleanValue=\"false\"/>              <L7p:Negated booleanValue=\"true\"/>              <L7p:Operator operator=\"EMPTY\"/>              <L7p:RightValue stringValue=\"\"/>            </L7p:item>          </L7p:Predicates>        </L7p:ComparisonAssertion>        <L7p:SetVariable>          <L7p:Base64Expression stringValue=\"JHtwb3J0YWwubWFuYWdlZC5zZXJ2aWNlLmFwaUlkfS0ke3JlcXVlc3QuaHR0cC5oZWFkZXIuYXBpa2V5fQ==\"/>          <L7p:VariableToSet stringValue=\"counterName\"/>        </L7p:SetVariable>      </wsp:All>      <wsp:All wsp:Usage=\"Required\">        <L7p:SetVariable>          <L7p:Base64Expression stringValue=\"JHtwb3J0YWwubWFuYWdlZC5zZXJ2aWNlLmFwaUlkfQ==\"/>          <L7p:VariableToSet stringValue=\"counterName\"/>        </L7p:SetVariable>      </wsp:All>    </wsp:OneOrMore>    <wsp:OneOrMore wsp:Usage=\"Required\">      <wsp:All wsp:Usage=\"Required\">        <L7p:CommentAssertion>          <L7p:Comment stringValue=\"For SOAP service, set action as SOAP action header.\"/>        </L7p:CommentAssertion>        <L7p:ComparisonAssertion>          <L7p:CaseSensitive booleanValue=\"false\"/>          <L7p:Expression1 stringValue=\"${request.http.header.soapaction}\"/>          <L7p:Operator operatorNull=\"null\"/>          <L7p:Predicates predicates=\"included\">            <L7p:item dataType=\"included\">              <L7p:Type variableDataType=\"string\"/>            </L7p:item>            <L7p:item stringLength=\"included\">              <L7p:Max intValue=\"-1\"/>              <L7p:Min intValue=\"1\"/>            </L7p:item>          </L7p:Predicates>        </L7p:ComparisonAssertion>        <L7p:SetVariable>          <L7p:Base64Expression stringValue=\"JHtyZXF1ZXN0Lmh0dHAuaGVhZGVyLnNvYXBhY3Rpb259\"/>          <L7p:VariableToSet stringValue=\"portal.analytics.action\"/>        </L7p:SetVariable>      </wsp:All>      <wsp:All wsp:Usage=\"Required\">        <L7p:CommentAssertion>          <L7p:Comment stringValue=\"For RESTful service, set action as request uri.\"/>        </L7p:CommentAssertion>        <L7p:SetVariable>          <L7p:Base64Expression stringValue=\"JHtyZXF1ZXN0Lmh0dHAudXJpfQ==\"/>          <L7p:VariableToSet stringValue=\"portal.analytics.action\"/>        </L7p:SetVariable>      </wsp:All>      <L7p:assertionComment>        <L7p:Properties mapValue=\"included\">          <L7p:entry>            <L7p:key stringValue=\"RIGHT.COMMENT\"/>            <L7p:value stringValue=\"// get request action\"/>          </L7p:entry>        </L7p:Properties>      </L7p:assertionComment>    </wsp:OneOrMore>    <L7p:ExportVariables>      <L7p:ExportedVars stringArrayValue=\"included\">        <L7p:item stringValue=\"counterName\"/>        <L7p:item stringValue=\"portal.analytics.action\"/>        <L7p:item stringValue=\"portal.analytics.api.uuid\"/>        <L7p:item stringValue=\"portal.analytics.authType\"/>        <L7p:item stringValue=\"portal.analytics.routingTotalTime\"/>      </L7p:ExportedVars>    </L7p:ExportVariables>    <wsp:OneOrMore wsp:Usage=\"Required\">      <wsp:All wsp:Usage=\"Required\">        <L7p:ComparisonAssertion>          <L7p:CaseSensitive booleanValue=\"false\"/>          <L7p:Expression1 stringValue=\"${sslEnabled}\"/>          <L7p:Operator operatorNull=\"null\"/>          <L7p:Predicates predicates=\"included\">            <L7p:item dataType=\"included\">              <L7p:Type variableDataType=\"boolean\"/>            </L7p:item>            <L7p:item binary=\"included\">              <L7p:CaseSensitive booleanValue=\"false\"/>              <L7p:RightValue stringValue=\"true\"/>            </L7p:item>          </L7p:Predicates>        </L7p:ComparisonAssertion>        <wsp:OneOrMore wsp:Usage=\"Required\">          <L7p:SslAssertion/>          <L7p:SetVariable>            <L7p:Base64Expression stringValue=\"U1NMIHJlcXVpcmVk\"/>            <L7p:VariableToSet stringValue=\"errorMsg\"/>          </L7p:SetVariable>        </wsp:OneOrMore>        <L7p:assertionComment>          <L7p:Properties mapValue=\"included\">            <L7p:entry>              <L7p:key stringValue=\"RIGHT.COMMENT\"/>              <L7p:value stringValue=\"//check SSL\"/>            </L7p:entry>          </L7p:Properties>        </L7p:assertionComment>      </wsp:All>      <L7p:TrueAssertion/>    </wsp:OneOrMore>    <wsp:OneOrMore wsp:Usage=\"Required\">      <wsp:All wsp:Usage=\"Required\">        <L7p:ComparisonAssertion>          <L7p:CaseSensitive booleanValue=\"false\"/>          <L7p:Expression1 stringValue=\"${errorMsg}\"/>          <L7p:Operator operatorNull=\"null\"/>          <L7p:Predicates predicates=\"included\">            <L7p:item dataType=\"included\">              <L7p:Type variableDataType=\"string\"/>            </L7p:item>            <L7p:item binary=\"included\">              <L7p:Operator operator=\"EMPTY\"/>              <L7p:RightValue stringValue=\"\"/>            </L7p:item>          </L7p:Predicates>        </L7p:ComparisonAssertion>        <L7p:CommentAssertion>          <L7p:Comment stringValue=\"============================\"/>        </L7p:CommentAssertion>        <L7p:CommentAssertion>          <L7p:Comment stringValue=\"= API Portal Integration components below =\"/>        </L7p:CommentAssertion>        <L7p:CommentAssertion>          <L7p:Comment stringValue=\"============================\"/>        </L7p:CommentAssertion>        <L7p:SetVariable>          <L7p:Base64Expression stringValue=\"SW52YWxpZCBBUEkgS2V5\"/>          <L7p:VariableToSet stringValue=\"errorMsg\"/>        </L7p:SetVariable>        <wsp:All wsp:Usage=\"Required\">          <L7p:SetVariable>            <L7p:AssertionComment assertionComment=\"included\">              <L7p:Properties mapValue=\"included\">                <L7p:entry>                  <L7p:key stringValue=\"LEFT.COMMENT\"/>                  <L7p:value stringValue=\"getRequestedApiResource()\"/>                </L7p:entry>                <L7p:entry>                  <L7p:key stringValue=\"RIGHT.COMMENT\"/>                  <L7p:value stringValue=\"// capture the API resource requested\"/>                </L7p:entry>              </L7p:Properties>            </L7p:AssertionComment>            <L7p:Base64Expression stringValue=\"JHtyZXF1ZXN0Lmh0dHAudXJpfQ==\"/>            <L7p:VariableToSet stringValue=\"apiResource\"/>          </L7p:SetVariable>          <wsp:OneOrMore wsp:Usage=\"Required\">            <wsp:All wsp:Usage=\"Required\">              <L7p:ComparisonAssertion>                <L7p:CaseSensitive booleanValue=\"false\"/>                <L7p:Expression1 stringValue=\"${request.http.parameter.apikey}\"/>                <L7p:Expression2 stringValue=\"\"/>                <L7p:Negate booleanValue=\"true\"/>                <L7p:Operator operator=\"EMPTY\"/>                <L7p:Predicates predicates=\"included\">                  <L7p:item binary=\"included\">                    <L7p:CaseSensitive booleanValue=\"false\"/>                    <L7p:Negated booleanValue=\"true\"/>                    <L7p:Operator operator=\"EMPTY\"/>                    <L7p:RightValue stringValue=\"\"/>                  </L7p:item>                </L7p:Predicates>              </L7p:ComparisonAssertion>              <L7p:SetVariable>                <L7p:AssertionComment assertionComment=\"included\">                  <L7p:Properties mapValue=\"included\">                    <L7p:entry>                      <L7p:key stringValue=\"LEFT.COMMENT\"/>                      <L7p:value stringValue=\"getRequestApiKey()\"/>                    </L7p:entry>                    <L7p:entry>                      <L7p:key stringValue=\"RIGHT.COMMENT\"/>                      <L7p:value stringValue=\"// parse API key from request\"/>                    </L7p:entry>                  </L7p:Properties>                </L7p:AssertionComment>                <L7p:Base64Expression stringValue=\"JHtyZXF1ZXN0Lmh0dHAucGFyYW1ldGVyLmFwaWtleX0=\"/>                <L7p:VariableToSet stringValue=\"lookupApiKey\"/>              </L7p:SetVariable>            </wsp:All>            <wsp:All wsp:Usage=\"Required\">              <L7p:ComparisonAssertion>                <L7p:CaseSensitive booleanValue=\"false\"/>                <L7p:Expression1 stringValue=\"${request.http.header.apikey}\"/>                <L7p:Expression2 stringValue=\"\"/>                <L7p:Negate booleanValue=\"true\"/>                <L7p:Operator operator=\"EMPTY\"/>                <L7p:Predicates predicates=\"included\">                  <L7p:item binary=\"included\">                    <L7p:CaseSensitive booleanValue=\"false\"/>                    <L7p:Negated booleanValue=\"true\"/>                    <L7p:Operator operator=\"EMPTY\"/>                    <L7p:RightValue stringValue=\"\"/>                  </L7p:item>                </L7p:Predicates>              </L7p:ComparisonAssertion>              <L7p:SetVariable>                <L7p:AssertionComment assertionComment=\"included\">                  <L7p:Properties mapValue=\"included\">                    <L7p:entry>                      <L7p:key stringValue=\"LEFT.COMMENT\"/>                      <L7p:value stringValue=\"getRequestApiKey()\"/>                    </L7p:entry>                    <L7p:entry>                      <L7p:key stringValue=\"RIGHT.COMMENT\"/>                      <L7p:value stringValue=\"// parse API key from request\"/>                    </L7p:entry>                  </L7p:Properties>                </L7p:AssertionComment>                <L7p:Base64Expression stringValue=\"JHtyZXF1ZXN0Lmh0dHAuaGVhZGVyLmFwaWtleX0=\"/>                <L7p:VariableToSet stringValue=\"lookupApiKey\"/>              </L7p:SetVariable>            </wsp:All>            <L7p:SetVariable>              <L7p:AssertionComment assertionComment=\"included\">                <L7p:Properties mapValue=\"included\">                  <L7p:entry>                    <L7p:key stringValue=\"LEFT.COMMENT\"/>                    <L7p:value stringValue=\"getRequestApiKey()\"/>                  </L7p:entry>                  <L7p:entry>                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>                    <L7p:value stringValue=\"// parse API key from request\"/>                  </L7p:entry>                </L7p:Properties>              </L7p:AssertionComment>              <L7p:Base64Expression stringValue=\"\"/>              <L7p:VariableToSet stringValue=\"lookupApiKey\"/>            </L7p:SetVariable>          </wsp:OneOrMore>          <L7p:SetVariable>            <L7p:AssertionComment assertionComment=\"included\">              <L7p:Properties mapValue=\"included\">                <L7p:entry>                  <L7p:key stringValue=\"LEFT.COMMENT\"/>                  <L7p:value stringValue=\"getRequestKeySecret()\"/>                </L7p:entry>                <L7p:entry>                  <L7p:key stringValue=\"RIGHT.COMMENT\"/>                  <L7p:value stringValue=\"// parse Key Secret from request\"/>                </L7p:entry>              </L7p:Properties>            </L7p:AssertionComment>            <L7p:Base64Expression stringValue=\"JHtyZXF1ZXN0Lmh0dHAucGFyYW1ldGVyLmtleVNlY3JldH0=\"/>            <L7p:VariableToSet stringValue=\"keySecret\"/>          </L7p:SetVariable>          <wsp:All wsp:Usage=\"Required\">            <wsp:OneOrMore wsp:Usage=\"Required\">              <wsp:All wsp:Usage=\"Required\">                <L7p:ComparisonAssertion>                  <L7p:CaseSensitive booleanValue=\"false\"/>                  <L7p:Expression1 stringValue=\"${apiKeyRecord.found}\"/>                  <L7p:Operator operatorNull=\"null\"/>                  <L7p:Predicates predicates=\"included\">                    <L7p:item dataType=\"included\">                      <L7p:Type variableDataType=\"string\"/>                    </L7p:item>                    <L7p:item binary=\"included\">                      <L7p:RightValue stringValue=\"true\"/>                    </L7p:item>                  </L7p:Predicates>                </L7p:ComparisonAssertion>                <L7p:ComparisonAssertion>                  <L7p:CaseSensitive booleanValue=\"false\"/>                  <L7p:Expression1 stringValue=\"${apiKeyRecord.platform}\"/>                  <L7p:Operator operatorNull=\"null\"/>                  <L7p:Predicates predicates=\"included\">                    <L7p:item dataType=\"included\">                      <L7p:Type variableDataType=\"string\"/>                    </L7p:item>                    <L7p:item binary=\"included\">                      <L7p:Negated booleanValue=\"true\"/>                      <L7p:Operator operator=\"EMPTY\"/>                      <L7p:RightValue stringValue=\"\"/>                    </L7p:item>                  </L7p:Predicates>                </L7p:ComparisonAssertion>                <L7p:ComparisonAssertion>                  <L7p:CaseSensitive booleanValue=\"false\"/>                  <L7p:Expression1 stringValue=\"${apiKeyRecord.service}\"/>                  <L7p:Operator operatorNull=\"null\"/>                  <L7p:Predicates predicates=\"included\">                    <L7p:item dataType=\"included\">                      <L7p:Type variableDataType=\"string\"/>                    </L7p:item>                    <L7p:item binary=\"included\">                      <L7p:Negated booleanValue=\"true\"/>                      <L7p:Operator operator=\"EMPTY\"/>                      <L7p:RightValue stringValue=\"\"/>                    </L7p:item>                    <L7p:item binary=\"included\">                      <L7p:RightValue stringValue=\"${portal.managed.service.apiId}\"/>                    </L7p:item>                  </L7p:Predicates>                </L7p:ComparisonAssertion>                <L7p:ComparisonAssertion>                  <L7p:CaseSensitive booleanValue=\"false\"/>                  <L7p:Expression1 stringValue=\"${apiKeyRecord.key}\"/>                  <L7p:Operator operatorNull=\"null\"/>                  <L7p:Predicates predicates=\"included\">                    <L7p:item dataType=\"included\">                      <L7p:Type variableDataType=\"string\"/>                    </L7p:item>                    <L7p:item binary=\"included\">                      <L7p:Negated booleanValue=\"true\"/>                      <L7p:Operator operator=\"EMPTY\"/>                      <L7p:RightValue stringValue=\"\"/>                    </L7p:item>                    <L7p:item binary=\"included\">                      <L7p:RightValue stringValue=\"${lookupApiKey}\"/>                    </L7p:item>                  </L7p:Predicates>                </L7p:ComparisonAssertion>                <L7p:ComparisonAssertion>                  <L7p:CaseSensitive booleanValue=\"false\"/>                  <L7p:Expression1 stringValue=\"${apiKeyRecord.id}\"/>                  <L7p:Operator operatorNull=\"null\"/>                  <L7p:Predicates predicates=\"included\">                    <L7p:item dataType=\"included\">                      <L7p:Type variableDataType=\"string\"/>                    </L7p:item>                    <L7p:item binary=\"included\">                      <L7p:Negated booleanValue=\"true\"/>                      <L7p:Operator operator=\"EMPTY\"/>                      <L7p:RightValue stringValue=\"\"/>                    </L7p:item>                  </L7p:Predicates>                </L7p:ComparisonAssertion>                <L7p:ComparisonAssertion>                  <L7p:CaseSensitive booleanValue=\"false\"/>                  <L7p:Expression1 stringValue=\"${apiKeyRecord.xml}\"/>                  <L7p:Operator operatorNull=\"null\"/>                  <L7p:Predicates predicates=\"included\">                    <L7p:item dataType=\"included\">                      <L7p:Type variableDataType=\"string\"/>                    </L7p:item>                    <L7p:item binary=\"included\">                      <L7p:Negated booleanValue=\"true\"/>                      <L7p:Operator operator=\"EMPTY\"/>                      <L7p:RightValue stringValue=\"\"/>                    </L7p:item>                  </L7p:Predicates>                </L7p:ComparisonAssertion>                <L7p:ComparisonAssertion>                  <L7p:CaseSensitive booleanValue=\"false\"/>                  <L7p:Expression1 stringValue=\"${apiKeyRecord.accountPlanMappingId}\"/>                  <L7p:Operator operatorNull=\"null\"/>                  <L7p:Predicates predicates=\"included\">                    <L7p:item dataType=\"included\">                      <L7p:Type variableDataType=\"string\"/>                    </L7p:item>                    <L7p:item binary=\"included\">                      <L7p:Negated booleanValue=\"true\"/>                      <L7p:Operator operator=\"EMPTY\"/>                      <L7p:RightValue stringValue=\"\"/>                    </L7p:item>                  </L7p:Predicates>                </L7p:ComparisonAssertion>                <L7p:ComparisonAssertion>                  <L7p:CaseSensitive booleanValue=\"false\"/>                  <L7p:Expression1 stringValue=\"${apiKeyRecord.accountPlanMappingName}\"/>                  <L7p:Operator operatorNull=\"null\"/>                  <L7p:Predicates predicates=\"included\">                    <L7p:item dataType=\"included\">                      <L7p:Type variableDataType=\"string\"/>                    </L7p:item>                    <L7p:item binary=\"included\">                      <L7p:Negated booleanValue=\"true\"/>                      <L7p:Operator operator=\"EMPTY\"/>                      <L7p:RightValue stringValue=\"\"/>                    </L7p:item>                  </L7p:Predicates>                </L7p:ComparisonAssertion>                <L7p:ComparisonAssertion>                  <L7p:CaseSensitive booleanValue=\"false\"/>                  <L7p:Expression1 stringValue=\"${apiKeyRecord.status}\"/>                  <L7p:Operator operatorNull=\"null\"/>                  <L7p:Predicates predicates=\"included\">                    <L7p:item dataType=\"included\">                      <L7p:Type variableDataType=\"string\"/>                    </L7p:item>                    <L7p:item binary=\"included\">                      <L7p:RightValue stringValue=\"active\"/>                    </L7p:item>                  </L7p:Predicates>                </L7p:ComparisonAssertion>                <L7p:assertionComment>                  <L7p:Properties mapValue=\"included\">                    <L7p:entry>                      <L7p:key stringValue=\"RIGHT.COMMENT\"/>                      <L7p:value stringValue=\"Check if apikey details are already in input params\"/>                    </L7p:entry>                  </L7p:Properties>                </L7p:assertionComment>              </wsp:All>              <wsp:All wsp:Usage=\"Required\">                <L7p:ComparisonAssertion>                  <L7p:CaseSensitive booleanValue=\"false\"/>                  <L7p:Expression1 stringValue=\"${gateway.cluster.apikey.kvstore.enabled}\"/>                  <L7p:Operator operatorNull=\"null\"/>                  <L7p:Predicates predicates=\"included\">                    <L7p:item dataType=\"included\">                      <L7p:Type variableDataType=\"string\"/>                    </L7p:item>                    <L7p:item binary=\"included\">                      <L7p:Negated booleanValue=\"true\"/>                      <L7p:Operator operator=\"EMPTY\"/>                      <L7p:RightValue stringValue=\"\"/>                    </L7p:item>                    <L7p:item binary=\"included\">                      <L7p:CaseSensitive booleanValue=\"false\"/>                      <L7p:RightValue stringValue=\"true\"/>                    </L7p:item>                  </L7p:Predicates>                </L7p:ComparisonAssertion>                <L7p:Encapsulated>                  <L7p:EncapsulatedAssertionConfigGuid stringValue=\"b25b6e50-76b7-4f16-9a3d-7ffcddc1a683\"/>                  <L7p:EncapsulatedAssertionConfigName stringValue=\"Portal API Key Lookup (Local Store)\"/>                  <L7p:Parameters mapValue=\"included\">                    <L7p:entry>                      <L7p:key stringValue=\"apikey\"/>                      <L7p:value stringValue=\"${lookupApiKey}\"/>                    </L7p:entry>                    <L7p:entry>                      <L7p:key stringValue=\"serviceid\"/>                      <L7p:value stringValue=\"${portal.managed.service.apiId}\"/>                    </L7p:entry>                  </L7p:Parameters>                </L7p:Encapsulated>              </wsp:All>              <L7p:Encapsulated>                <L7p:AssertionComment assertionComment=\"included\">                  <L7p:Properties mapValue=\"included\">                    <L7p:entry>                      <L7p:key stringValue=\"RIGHT.COMMENT\"/>                      <L7p:value stringValue=\"get apikey detail from OTK DB\"/>                    </L7p:entry>                  </L7p:Properties>                </L7p:AssertionComment>                <L7p:EncapsulatedAssertionConfigGuid stringValue=\"d6b48093-4288-44b3-977e-712fdac328e6\"/>                <L7p:EncapsulatedAssertionConfigName stringValue=\"Portal Look Up API Key\"/>                <L7p:Parameters mapValue=\"included\">                  <L7p:entry>                    <L7p:key stringValue=\"apikey\"/>                    <L7p:value stringValue=\"${lookupApiKey}\"/>                  </L7p:entry>                  <L7p:entry>                    <L7p:key stringValue=\"serviceid\"/>                    <L7p:value stringValue=\"${portal.managed.service.apiId}\"/>                  </L7p:entry>                </L7p:Parameters>              </L7p:Encapsulated>            </wsp:OneOrMore>            <wsp:OneOrMore wsp:Usage=\"Required\">              <wsp:All wsp:Usage=\"Required\">                <L7p:ComparisonAssertion>                  <L7p:CaseSensitive booleanValue=\"false\"/>                  <L7p:Expression1 stringValue=\"${apiKeyRecord.found}\"/>                  <L7p:Operator operatorNull=\"null\"/>                  <L7p:Predicates predicates=\"included\">                    <L7p:item dataType=\"included\">                      <L7p:Type variableDataType=\"string\"/>                    </L7p:item>                    <L7p:item binary=\"included\">                      <L7p:RightValue stringValue=\"true\"/>                    </L7p:item>                  </L7p:Predicates>                </L7p:ComparisonAssertion>                <L7p:ComparisonAssertion>                  <L7p:CaseSensitive booleanValue=\"false\"/>                  <L7p:Expression1 stringValue=\"${apiKeyRecord.service}\"/>                  <L7p:Operator operatorNull=\"null\"/>                  <L7p:Predicates predicates=\"included\">                    <L7p:item dataType=\"included\">                      <L7p:Type variableDataType=\"string\"/>                    </L7p:item>                    <L7p:item binary=\"included\">                      <L7p:RightValue stringValue=\"${portal.managed.service.apiId}\"/>                    </L7p:item>                  </L7p:Predicates>                </L7p:ComparisonAssertion>                <L7p:ComparisonAssertion>                  <L7p:CaseSensitive booleanValue=\"false\"/>                  <L7p:Expression1 stringValue=\"${apiKeyRecord.status}\"/>                  <L7p:Operator operatorNull=\"null\"/>                  <L7p:Predicates predicates=\"included\">                    <L7p:item dataType=\"included\">                      <L7p:Type variableDataType=\"string\"/>                    </L7p:item>                    <L7p:item binary=\"included\">                      <L7p:RightValue stringValue=\"active\"/>                    </L7p:item>                  </L7p:Predicates>                </L7p:ComparisonAssertion>                <wsp:OneOrMore wsp:Usage=\"Required\">                  <L7p:ComparisonAssertion>                    <L7p:Expression1 stringValue=\"${keySecret}\"/>                    <L7p:Expression2 stringValue=\"\"/>                    <L7p:Operator operator=\"EMPTY\"/>                    <L7p:Predicates predicates=\"included\">                      <L7p:item binary=\"included\">                        <L7p:Operator operator=\"EMPTY\"/>                        <L7p:RightValue stringValue=\"\"/>                      </L7p:item>                    </L7p:Predicates>                  </L7p:ComparisonAssertion>                  <wsp:All wsp:Usage=\"Required\">                    <L7p:ComparisonAssertion>                      <L7p:Expression1 stringValue=\"${keySecret}\"/>                      <L7p:Expression2 stringValue=\"\"/>                      <L7p:Negate booleanValue=\"true\"/>                      <L7p:Operator operator=\"EMPTY\"/>                      <L7p:Predicates predicates=\"included\">                        <L7p:item binary=\"included\">                          <L7p:Negated booleanValue=\"true\"/>                          <L7p:Operator operator=\"EMPTY\"/>                          <L7p:RightValue stringValue=\"\"/>                        </L7p:item>                      </L7p:Predicates>                    </L7p:ComparisonAssertion>                    <wsp:OneOrMore wsp:Usage=\"Required\">                      <L7p:ComparisonAssertion>                        <L7p:CaseSensitive booleanValue=\"false\"/>                        <L7p:Expression1 stringValue=\"${apiKeyRecord.secret}\"/>                        <L7p:Operator operatorNull=\"null\"/>                        <L7p:Predicates predicates=\"included\">                          <L7p:item dataType=\"included\">                            <L7p:Type variableDataType=\"string\"/>                          </L7p:item>                          <L7p:item binary=\"included\">                            <L7p:RightValue stringValue=\"${keySecret}\"/>                          </L7p:item>                        </L7p:Predicates>                      </L7p:ComparisonAssertion>                      <wsp:All wsp:Usage=\"Required\">                        <L7p:ComparisonAssertion>                          <L7p:CaseSensitive booleanValue=\"false\"/>                          <L7p:Expression1 stringValue=\"${apiKeyRecord.hashingMetadata}\"/>                          <L7p:Operator operatorNull=\"null\"/>                          <L7p:Predicates predicates=\"included\">                            <L7p:item dataType=\"included\">                              <L7p:Type variableDataType=\"string\"/>                            </L7p:item>                            <L7p:item binary=\"included\">                              <L7p:CaseSensitive booleanValue=\"false\"/>                              <L7p:Negated booleanValue=\"true\"/>                              <L7p:Operator operator=\"EMPTY\"/>                              <L7p:RightValue stringValue=\"\"/>                            </L7p:item>                          </L7p:Predicates>                        </L7p:ComparisonAssertion>                        <L7p:SetVariable>                          <L7p:Base64Expression stringValue=\"JHthcGlLZXlSZWNvcmQuaGFzaGluZ01ldGFkYXRhfQ==\"/>                          <L7p:ContentType stringValue=\"application/json; charset=utf-8\"/>                          <L7p:DataType variableDataType=\"message\"/>                          <L7p:VariableToSet stringValue=\"hashing_metadata\"/>                        </L7p:SetVariable>                        <L7p:Encapsulated>                          <L7p:EncapsulatedAssertionConfigGuid stringValue=\"1d682484-d9d7-47f7-9671-9ae9e10f5af4\"/>                          <L7p:EncapsulatedAssertionConfigName stringValue=\"Portal API Key Read Hashed Metadata\"/>                        </L7p:Encapsulated>                        <L7p:Encapsulated>                          <L7p:EncapsulatedAssertionConfigGuid stringValue=\"532dd6d5-7326-4e86-aaba-bd20f99ec899\"/>                          <L7p:EncapsulatedAssertionConfigName stringValue=\"Portal API Key Create Hash\"/>                          <L7p:Parameters mapValue=\"included\">                            <L7p:entry>                              <L7p:key stringValue=\"algorithm\"/>                              <L7p:value stringValue=\"${algorithm.result}\"/>                            </L7p:entry>                            <L7p:entry>                              <L7p:key stringValue=\"inputPlaintext\"/>                              <L7p:value stringValue=\"${keySecret}\"/>                            </L7p:entry>                            <L7p:entry>                              <L7p:key stringValue=\"salt\"/>                              <L7p:value stringValue=\"${salt.result}\"/>                            </L7p:entry>                          </L7p:Parameters>                        </L7p:Encapsulated>                        <L7p:ComparisonAssertion>                          <L7p:CaseSensitive booleanValue=\"false\"/>                          <L7p:Expression1 stringValue=\"${apiKeyRecord.secret}\"/>                          <L7p:Operator operatorNull=\"null\"/>                          <L7p:Predicates predicates=\"included\">                            <L7p:item dataType=\"included\">                              <L7p:Type variableDataType=\"string\"/>                            </L7p:item>                            <L7p:item binary=\"included\">                              <L7p:RightValue stringValue=\"${hashedValue}\"/>                            </L7p:item>                          </L7p:Predicates>                        </L7p:ComparisonAssertion>                      </wsp:All>                      <wsp:All wsp:Usage=\"Required\">                        <L7p:SetVariable>                          <L7p:Base64Expression stringValue=\"SW52YWxpZCBBUEkgS2V5IFNlY3JldA==\"/>                          <L7p:VariableToSet stringValue=\"errorMsg\"/>                        </L7p:SetVariable>                        <wsp:OneOrMore wsp:Usage=\"Required\">                          <L7p:ComparisonAssertion>                            <L7p:CaseSensitive booleanValue=\"false\"/>                            <L7p:Expression1 stringValue=\"${portal.analytics.response.code}\"/>                            <L7p:ExpressionIsVariable booleanValue=\"false\"/>                            <L7p:Operator operatorNull=\"null\"/>                            <L7p:Predicates predicates=\"included\">                              <L7p:item dataType=\"included\">                                <L7p:Type variableDataType=\"string\"/>                              </L7p:item>                              <L7p:item stringLength=\"included\">                                <L7p:Max intValue=\"-1\"/>                                <L7p:Min intValue=\"1\"/>                              </L7p:item>                            </L7p:Predicates>                          </L7p:ComparisonAssertion>                          <L7p:SetVariable>                            <L7p:Base64Expression stringValue=\"NDAw\"/>                            <L7p:VariableToSet stringValue=\"portal.analytics.response.code\"/>                          </L7p:SetVariable>                        </wsp:OneOrMore>                        <L7p:ExportVariables>                          <L7p:ExportedVars stringArrayValue=\"included\">                            <L7p:item stringValue=\"counterName\"/>                            <L7p:item stringValue=\"portal.analytics.action\"/>                            <L7p:item stringValue=\"portal.analytics.api.uuid\"/>                            <L7p:item stringValue=\"portal.analytics.application.name\"/>                            <L7p:item stringValue=\"portal.analytics.application.uuid\"/>                            <L7p:item stringValue=\"portal.analytics.authType\"/>                            <L7p:item stringValue=\"portal.analytics.organization.name\"/>                            <L7p:item stringValue=\"portal.analytics.organization.uuid\"/>                            <L7p:item stringValue=\"portal.analytics.response.code\"/>                            <L7p:item stringValue=\"portal.analytics.routingTotalTime\"/>                          </L7p:ExportedVars>                        </L7p:ExportVariables>                        <L7p:FalseAssertion/>                      </wsp:All>                    </wsp:OneOrMore>                  </wsp:All>                </wsp:OneOrMore>                <L7p:SetVariable>                  <L7p:Base64Expression stringValue=\"dHJ1ZQ==\"/>                  <L7p:VariableToSet stringValue=\"apiAuthz\"/>                </L7p:SetVariable>                <L7p:SetVariable>                  <L7p:Base64Expression stringValue=\"JHthcGlrZXlSZWNvcmQueG1sfQ==\"/>                  <L7p:ContentType stringValue=\"text/xml; charset=utf-8\"/>                  <L7p:DataType variableDataType=\"message\"/>                  <L7p:VariableToSet stringValue=\"recordXml\"/>                </L7p:SetVariable>                <L7p:ResponseXpathAssertion>                  <L7p:VariablePrefix stringValue=\"customFieldsMetadata\"/>                  <L7p:XmlMsgSrc stringValue=\"recordXml\"/>                  <L7p:XpathExpression xpathExpressionValue=\"included\">                    <L7p:Expression stringValue=\"/l7:ApiKey/l7:CustomMetaData\"/>                    <L7p:Namespaces mapValue=\"included\">                      <L7p:entry>                        <L7p:key stringValue=\"s\"/>                        <L7p:value stringValue=\"http://schemas.xmlsoap.org/soap/envelope/\"/>                      </L7p:entry>                      <L7p:entry>                        <L7p:key stringValue=\"l7\"/>                        <L7p:value stringValue=\"http://ns.l7tech.com/2012/04/api-management\"/>                      </L7p:entry>                    </L7p:Namespaces>                    <L7p:XpathVersion xpathVersion=\"XPATH_1_0\"/>                  </L7p:XpathExpression>                </L7p:ResponseXpathAssertion>                <L7p:SetVariable>                  <L7p:Base64Expression stringValue=\"JHtjdXN0b21GaWVsZHNNZXRhZGF0YS5yZXN1bHR9\"/>                  <L7p:VariableToSet stringValue=\"customFieldsMetadata\"/>                </L7p:SetVariable>                <wsp:OneOrMore wsp:Usage=\"Required\">                  <wsp:All wsp:Usage=\"Required\">                    <L7p:SetVariable>                      <L7p:Base64Expression stringValue=\"JHtjdXN0b21GaWVsZHNNZXRhZGF0YX0=\"/>                      <L7p:ContentType stringValue=\"application/json; charset=utf-8\"/>                      <L7p:DataType variableDataType=\"message\"/>                      <L7p:VariableToSet stringValue=\"customFieldsJson\"/>                    </L7p:SetVariable>                    <L7p:EvaluateJsonPathExpressionV2>                      <L7p:Evaluator stringValue=\"JsonPath\"/>                      <L7p:Expression stringValue=\"$._portalApplicationUuid\"/>                      <L7p:OtherTargetMessageVariable stringValue=\"customFieldsJson\"/>                      <L7p:Target target=\"OTHER\"/>                      <L7p:VariablePrefix stringValue=\"appUuid\"/>                    </L7p:EvaluateJsonPathExpressionV2>                    <L7p:SetVariable>                      <L7p:Base64Expression stringValue=\"JHthcHBVdWlkLnJlc3VsdH0=\"/>                      <L7p:VariableToSet stringValue=\"portal.analytics.application.uuid\"/>                    </L7p:SetVariable>                  </wsp:All>                  <L7p:SetVariable>                    <L7p:Base64Expression stringValue=\"JHthcGlLZXlSZWNvcmQuaWR9\"/>                    <L7p:VariableToSet stringValue=\"portal.analytics.application.uuid\"/>                  </L7p:SetVariable>                </wsp:OneOrMore>                <L7p:assertionComment>                  <L7p:Properties mapValue=\"included\">                    <L7p:entry>                      <L7p:key stringValue=\"RIGHT.COMMENT\"/>                      <L7p:value stringValue=\"// success - API key found\"/>                    </L7p:entry>                  </L7p:Properties>                </L7p:assertionComment>              </wsp:All>              <wsp:All wsp:Usage=\"Required\">                <L7p:CustomizeErrorResponse>                  <L7p:Content stringValue=\"${errorMsg} 1\"/>                  <L7p:ExtraHeaders nameValuePairArray=\"included\"/>                  <L7p:HttpStatus stringValue=\"400\"/>                </L7p:CustomizeErrorResponse>                <wsp:OneOrMore wsp:Usage=\"Required\">                  <L7p:ComparisonAssertion>                    <L7p:CaseSensitive booleanValue=\"false\"/>                    <L7p:Expression1 stringValue=\"${portal.analytics.response.code}\"/>                    <L7p:ExpressionIsVariable booleanValue=\"false\"/>                    <L7p:Operator operatorNull=\"null\"/>                    <L7p:Predicates predicates=\"included\">                      <L7p:item dataType=\"included\">                        <L7p:Type variableDataType=\"string\"/>                      </L7p:item>                      <L7p:item stringLength=\"included\">                        <L7p:Max intValue=\"-1\"/>                        <L7p:Min intValue=\"1\"/>                      </L7p:item>                    </L7p:Predicates>                  </L7p:ComparisonAssertion>                  <L7p:SetVariable>                    <L7p:Base64Expression stringValue=\"NDAw\"/>                    <L7p:VariableToSet stringValue=\"portal.analytics.response.code\"/>                  </L7p:SetVariable>                </wsp:OneOrMore>                <L7p:ExportVariables>                  <L7p:ExportedVars stringArrayValue=\"included\">                    <L7p:item stringValue=\"counterName\"/>                    <L7p:item stringValue=\"portal.analytics.action\"/>                    <L7p:item stringValue=\"portal.analytics.api.uuid\"/>                    <L7p:item stringValue=\"portal.analytics.application.name\"/>                    <L7p:item stringValue=\"portal.analytics.application.uuid\"/>                    <L7p:item stringValue=\"portal.analytics.authType\"/>                    <L7p:item stringValue=\"portal.analytics.organization.name\"/>                    <L7p:item stringValue=\"portal.analytics.organization.uuid\"/>                    <L7p:item stringValue=\"portal.analytics.response.code\"/>                    <L7p:item stringValue=\"portal.analytics.routingTotalTime\"/>                  </L7p:ExportedVars>                </L7p:ExportVariables>                <L7p:FalseAssertion/>                <L7p:assertionComment>                  <L7p:Properties mapValue=\"included\">                    <L7p:entry>                      <L7p:key stringValue=\"RIGHT.COMMENT\"/>                      <L7p:value stringValue=\"// error - API key not found\"/>                    </L7p:entry>                  </L7p:Properties>                </L7p:assertionComment>              </wsp:All>              <L7p:assertionComment>                <L7p:Properties mapValue=\"included\">                  <L7p:entry>                    <L7p:key stringValue=\"RIGHT.COMMENT\"/>                    <L7p:value stringValue=\"Mark apikey retriving result\"/>                  </L7p:entry>                </L7p:Properties>              </L7p:assertionComment>            </wsp:OneOrMore>          </wsp:All>          <wsp:All wsp:Usage=\"Required\">            <L7p:SetVariable>              <L7p:Base64Expression stringValue=\"JHthcGlLZXlSZWNvcmQua2V5fQ==\"/>              <L7p:VariableToSet stringValue=\"apiKey\"/>            </L7p:SetVariable>            <L7p:SetVariable>              <L7p:Base64Expression stringValue=\"JHthcGlLZXlSZWNvcmQucGxhbn0=\"/>              <L7p:VariableToSet stringValue=\"apiPlan\"/>            </L7p:SetVariable>            <L7p:SetVariable>              <L7p:Base64Expression stringValue=\"JHthcGlLZXlSZWNvcmQuYWNjb3VudFBsYW5NYXBwaW5nSWR9\"/>              <L7p:VariableToSet stringValue=\"accountPlanMappingId\"/>            </L7p:SetVariable>            <L7p:assertionComment>              <L7p:Properties mapValue=\"included\">                <L7p:entry>                  <L7p:key stringValue=\"LEFT.COMMENT\"/>                  <L7p:value stringValue=\"Step 2 --\"/>                </L7p:entry>                <L7p:entry>                  <L7p:key stringValue=\"RIGHT.COMMENT\"/>                  <L7p:value stringValue=\"// Capture API key and API method for metrics\"/>                </L7p:entry>              </L7p:Properties>            </L7p:assertionComment>          </wsp:All>          <wsp:All wsp:Usage=\"Required\">            <L7p:CommentAssertion>              <L7p:Comment stringValue=\"The Account Plans Fragment must be manually added here\"/>            </L7p:CommentAssertion>            <L7p:Include>              <L7p:PolicyGuid stringValue=\"f8a5669d-831e-4417-9225-f52527f90323\"/>            </L7p:Include>            <wsp:OneOrMore wsp:Usage=\"Required\">              <L7p:ComparisonAssertion>                <L7p:CaseSensitive booleanValue=\"false\"/>                <L7p:Expression1 stringValue=\"${apiAuthz}\"/>                <L7p:Operator operatorNull=\"null\"/>                <L7p:Predicates predicates=\"included\">                  <L7p:item dataType=\"included\">                    <L7p:Type variableDataType=\"string\"/>                  </L7p:item>                  <L7p:item binary=\"included\">                    <L7p:RightValue stringValue=\"true\"/>                  </L7p:item>                </L7p:Predicates>              </L7p:ComparisonAssertion>              <wsp:All wsp:Usage=\"Required\">                <L7p:SetVariable>                  <L7p:Base64Expression stringValue=\"UmF0ZSBsaW1pdCBhbmQvb3IgcXVvdGEgZXhjZWVkZWQuIFNlZSByZWFzb24gYmVsb3cuDQoNClJlYXNvbjogJHthcGlBdXRoekRldGFpbHN9\"/>                  <L7p:VariableToSet stringValue=\"errorMsg\"/>                </L7p:SetVariable>                <wsp:OneOrMore wsp:Usage=\"Required\">                  <L7p:ComparisonAssertion>                    <L7p:CaseSensitive booleanValue=\"false\"/>                    <L7p:Expression1 stringValue=\"${portal.analytics.response.code}\"/>                    <L7p:ExpressionIsVariable booleanValue=\"false\"/>                    <L7p:Operator operatorNull=\"null\"/>                    <L7p:Predicates predicates=\"included\">                      <L7p:item dataType=\"included\">                        <L7p:Type variableDataType=\"string\"/>                      </L7p:item>                      <L7p:item stringLength=\"included\">                        <L7p:Max intValue=\"-1\"/>                        <L7p:Min intValue=\"1\"/>                      </L7p:item>                    </L7p:Predicates>                  </L7p:ComparisonAssertion>                  <L7p:SetVariable>                    <L7p:Base64Expression stringValue=\"NTAz\"/>                    <L7p:VariableToSet stringValue=\"portal.analytics.response.code\"/>                  </L7p:SetVariable>                </wsp:OneOrMore>                <L7p:SetVariable>                  <L7p:Base64Expression stringValue=\"JHthY2NvdW50UGxhbk1hcHBpbmdJZH0=\"/>                  <L7p:VariableToSet stringValue=\"portal.analytics.organization.uuid\"/>                </L7p:SetVariable>                <L7p:SetVariable>                  <L7p:Base64Expression stringValue=\"JHthcGlLZXlSZWNvcmQuaWR9\"/>                  <L7p:VariableToSet stringValue=\"portal.analytics.apikey\"/>                </L7p:SetVariable>                <L7p:ExportVariables>                  <L7p:ExportedVars stringArrayValue=\"included\">                    <L7p:item stringValue=\"counterName\"/>                    <L7p:item stringValue=\"portal.analytics.action\"/>                    <L7p:item stringValue=\"portal.analytics.api.uuid\"/>                    <L7p:item stringValue=\"portal.analytics.apikey\"/>                    <L7p:item stringValue=\"portal.analytics.application.name\"/>                    <L7p:item stringValue=\"portal.analytics.application.uuid\"/>                    <L7p:item stringValue=\"portal.analytics.authType\"/>                    <L7p:item stringValue=\"portal.analytics.organization.name\"/>                    <L7p:item stringValue=\"portal.analytics.organization.uuid\"/>                    <L7p:item stringValue=\"portal.analytics.response.code\"/>                    <L7p:item stringValue=\"portal.analytics.routingTotalTime\"/>                  </L7p:ExportedVars>                </L7p:ExportVariables>                <L7p:FalseAssertion/>              </wsp:All>            </wsp:OneOrMore>            <L7p:assertionComment>              <L7p:Properties mapValue=\"included\">                <L7p:entry>                  <L7p:key stringValue=\"LEFT.COMMENT\"/>                  <L7p:value stringValue=\"Step 3 --\"/>                </L7p:entry>                <L7p:entry>                  <L7p:key stringValue=\"RIGHT.COMMENT\"/>                  <L7p:value stringValue=\"// Enforce Account Plan restriction\"/>                </L7p:entry>              </L7p:Properties>            </L7p:assertionComment>          </wsp:All>          <wsp:OneOrMore wsp:Usage=\"Required\">            <L7p:ComparisonAssertion>              <L7p:CaseSensitive booleanValue=\"false\"/>              <L7p:Expression1 stringValue=\"${gateway.portal.api.plan}\"/>              <L7p:Expression2 stringValue=\"true\"/>              <L7p:Operator operator=\"NE\"/>              <L7p:Predicates predicates=\"included\">                <L7p:item binary=\"included\">                  <L7p:CaseSensitive booleanValue=\"false\"/>                  <L7p:Operator operator=\"NE\"/>                  <L7p:RightValue stringValue=\"true\"/>                </L7p:item>              </L7p:Predicates>            </L7p:ComparisonAssertion>            <wsp:All wsp:Usage=\"Required\">              <L7p:CommentAssertion>                <L7p:Comment stringValue=\"The API Plans Fragment must be manually added here\"/>              </L7p:CommentAssertion>              <L7p:Include>                <L7p:PolicyGuid stringValue=\"f8a5669d-831e-4417-9225-f52527f90212\"/>              </L7p:Include>              <wsp:OneOrMore wsp:Usage=\"Required\">                <L7p:ComparisonAssertion>                  <L7p:CaseSensitive booleanValue=\"false\"/>                  <L7p:Expression1 stringValue=\"${apiAuthz}\"/>                  <L7p:Operator operatorNull=\"null\"/>                  <L7p:Predicates predicates=\"included\">                    <L7p:item dataType=\"included\">                      <L7p:Type variableDataType=\"string\"/>                    </L7p:item>                    <L7p:item binary=\"included\">                      <L7p:RightValue stringValue=\"true\"/>                    </L7p:item>                  </L7p:Predicates>                </L7p:ComparisonAssertion>                <wsp:All wsp:Usage=\"Required\">                  <L7p:SetVariable>                    <L7p:Base64Expression stringValue=\"QVBJIHBsYW4gbGltaXQgZXhjZWVkZWQNCg0KUmVhc29uOiAke2FwaUF1dGh6RGV0YWlsc30\"/>                    <L7p:VariableToSet stringValue=\"errorMsg\"/>                  </L7p:SetVariable>                  <wsp:OneOrMore wsp:Usage=\"Required\">                    <L7p:ComparisonAssertion>                      <L7p:CaseSensitive booleanValue=\"false\"/>                      <L7p:Expression1 stringValue=\"${portal.analytics.response.code}\"/>                      <L7p:ExpressionIsVariable booleanValue=\"false\"/>                      <L7p:Operator operatorNull=\"null\"/>                      <L7p:Predicates predicates=\"included\">                        <L7p:item dataType=\"included\">                          <L7p:Type variableDataType=\"string\"/>                        </L7p:item>                        <L7p:item stringLength=\"included\">                          <L7p:Max intValue=\"-1\"/>                          <L7p:Min intValue=\"1\"/>                        </L7p:item>                      </L7p:Predicates>                    </L7p:ComparisonAssertion>                    <L7p:SetVariable>                      <L7p:Base64Expression stringValue=\"NTAz\"/>                      <L7p:VariableToSet stringValue=\"portal.analytics.response.code\"/>                    </L7p:SetVariable>                  </wsp:OneOrMore>                  <L7p:SetVariable>                    <L7p:Base64Expression stringValue=\"JHthY2NvdW50UGxhbk1hcHBpbmdJZH0=\"/>                    <L7p:VariableToSet stringValue=\"portal.analytics.organization.uuid\"/>                  </L7p:SetVariable>                  <L7p:SetVariable>                    <L7p:Base64Expression stringValue=\"JHthcGlLZXlSZWNvcmQuaWR9\"/>                    <L7p:VariableToSet stringValue=\"portal.analytics.apikey\"/>                  </L7p:SetVariable>                  <L7p:ExportVariables>                    <L7p:ExportedVars stringArrayValue=\"included\">                      <L7p:item stringValue=\"counterName\"/>                      <L7p:item stringValue=\"portal.analytics.action\"/>                      <L7p:item stringValue=\"portal.analytics.api.uuid\"/>                      <L7p:item stringValue=\"portal.analytics.apikey\"/>                      <L7p:item stringValue=\"portal.analytics.application.name\"/>                      <L7p:item stringValue=\"portal.analytics.application.uuid\"/>                      <L7p:item stringValue=\"portal.analytics.authType\"/>                      <L7p:item stringValue=\"portal.analytics.organization.name\"/>                      <L7p:item stringValue=\"portal.analytics.organization.uuid\"/>                      <L7p:item stringValue=\"portal.analytics.response.code\"/>                      <L7p:item stringValue=\"portal.analytics.routingTotalTime\"/>                    </L7p:ExportedVars>                  </L7p:ExportVariables>                  <L7p:FalseAssertion/>                </wsp:All>              </wsp:OneOrMore>            </wsp:All>            <L7p:assertionComment>              <L7p:Properties mapValue=\"included\">                <L7p:entry>                  <L7p:key stringValue=\"LEFT.COMMENT\"/>                  <L7p:value stringValue=\"Step 4 --\"/>                </L7p:entry>                <L7p:entry>                  <L7p:key stringValue=\"RIGHT.COMMENT\"/>                  <L7p:value stringValue=\"// Enforce API Plan restriction\"/>                </L7p:entry>              </L7p:Properties>            </L7p:assertionComment>          </wsp:OneOrMore>        </wsp:All>        <L7p:CommentAssertion>          <L7p:Comment stringValue=\"===========================\"/>        </L7p:CommentAssertion>        <L7p:CommentAssertion>          <L7p:Comment stringValue=\"= The rest of the service policy follows ... =\"/>        </L7p:CommentAssertion>        <L7p:CommentAssertion>          <L7p:Comment stringValue=\"===========================\"/>        </L7p:CommentAssertion>        <wsp:OneOrMore wsp:Usage=\"Required\">          <L7p:ComparisonAssertion>            <L7p:CaseSensitive booleanValue=\"false\"/>            <L7p:Expression1 stringValue=\"${override_template_routing}\"/>            <L7p:Expression2 stringValue=\"true\"/>            <L7p:Predicates predicates=\"included\">              <L7p:item binary=\"included\">                <L7p:CaseSensitive booleanValue=\"false\"/>                <L7p:RightValue stringValue=\"true\"/>              </L7p:item>            </L7p:Predicates>          </L7p:ComparisonAssertion>          <wsp:All wsp:Usage=\"Required\">            <L7p:SetVariable>              <L7p:Base64Expression stringValue=\"JHtyZXF1ZXN0Lmh0dHAudXJpfQ==\"/>              <L7p:VariableToSet stringValue=\"param.uri\"/>            </L7p:SetVariable>            <L7p:Regex>              <L7p:AutoTarget booleanValue=\"false\"/>              <L7p:OtherTargetMessageVariable stringValue=\"param.uri\"/>              <L7p:PatternContainsVariables booleanValue=\"true\"/>              <L7p:Regex stringValue=\"/${serviceUrl}\"/>              <L7p:RegexName stringValue=\"process uri\"/>              <L7p:Replace booleanValue=\"true\"/>              <L7p:Replacement stringValue=\"\"/>              <L7p:Target target=\"OTHER\"/>            </L7p:Regex>            <wsp:OneOrMore wsp:Usage=\"Required\">              <wsp:All wsp:Usage=\"Required\">                <L7p:HttpRoutingAssertion>                  <L7p:FailOnErrorStatus booleanValue=\"false\"/>                  <L7p:ProtectedServiceUrl stringValue=\"${apiLocation}${param.uri}${request.url.query}\"/>                  <L7p:ProxyPassword stringValueNull=\"null\"/>                  <L7p:ProxyUsername stringValueNull=\"null\"/>                  <L7p:RequestHeaderRules httpPassthroughRuleSet=\"included\">                    <L7p:Rules httpPassthroughRules=\"included\">                      <L7p:item httpPassthroughRule=\"included\">                        <L7p:Name stringValue=\"Cookie\"/>                      </L7p:item>                      <L7p:item httpPassthroughRule=\"included\">                        <L7p:Name stringValue=\"SOAPAction\"/>                      </L7p:item>                    </L7p:Rules>                  </L7p:RequestHeaderRules>                  <L7p:RequestParamRules httpPassthroughRuleSet=\"included\">                    <L7p:ForwardAll booleanValue=\"true\"/>                    <L7p:Rules httpPassthroughRules=\"included\"/>                  </L7p:RequestParamRules>                  <L7p:ResponseHeaderRules httpPassthroughRuleSet=\"included\">                    <L7p:Rules httpPassthroughRules=\"included\">                      <L7p:item httpPassthroughRule=\"included\">                        <L7p:Name stringValue=\"Set-Cookie\"/>                      </L7p:item>                    </L7p:Rules>                  </L7p:ResponseHeaderRules>                  <L7p:SamlAssertionVersion intValue=\"2\"/>                </L7p:HttpRoutingAssertion>                <L7p:SetVariable>                  <L7p:Base64Expression stringValue=\"JHtyZXNwb25zZS5odHRwLnN0YXR1c30=\"/>                  <L7p:VariableToSet stringValue=\"portal.analytics.response.code\"/>                </L7p:SetVariable>              </wsp:All>              <wsp:All wsp:Usage=\"Required\">                <L7p:SetVariable>                  <L7p:Base64Expression stringValue=\"JHtyZXNwb25zZS5odHRwLnN0YXR1c30=\"/>                  <L7p:VariableToSet stringValue=\"portal.analytics.response.code\"/>                </L7p:SetVariable>                <L7p:SetVariable>                  <L7p:Base64Expression stringValue=\"VW5hYmxlIHRvIHJvdXRlIHRvIEFQSS4=\"/>                  <L7p:VariableToSet stringValue=\"errorMsg\"/>                </L7p:SetVariable>                <wsp:OneOrMore wsp:Usage=\"Required\">                  <L7p:ComparisonAssertion>                    <L7p:CaseSensitive booleanValue=\"false\"/>                    <L7p:Expression1 stringValue=\"${portal.analytics.response.code}\"/>                    <L7p:ExpressionIsVariable booleanValue=\"false\"/>                    <L7p:Operator operatorNull=\"null\"/>                    <L7p:Predicates predicates=\"included\">                      <L7p:item dataType=\"included\">                        <L7p:Type variableDataType=\"string\"/>                      </L7p:item>                      <L7p:item stringLength=\"included\">                        <L7p:Max intValue=\"-1\"/>                        <L7p:Min intValue=\"1\"/>                      </L7p:item>                    </L7p:Predicates>                  </L7p:ComparisonAssertion>                  <L7p:SetVariable>                    <L7p:Base64Expression stringValue=\"NDA4\"/>                    <L7p:VariableToSet stringValue=\"portal.analytics.response.code\"/>                  </L7p:SetVariable>                </wsp:OneOrMore>                <L7p:ExportVariables>                  <L7p:ExportedVars stringArrayValue=\"included\">                    <L7p:item stringValue=\"counterName\"/>                    <L7p:item stringValue=\"portal.analytics.action\"/>                    <L7p:item stringValue=\"portal.analytics.api.uuid\"/>                    <L7p:item stringValue=\"portal.analytics.application.name\"/>                    <L7p:item stringValue=\"portal.analytics.application.uuid\"/>                    <L7p:item stringValue=\"portal.analytics.authType\"/>                    <L7p:item stringValue=\"portal.analytics.organization.name\"/>                    <L7p:item stringValue=\"portal.analytics.organization.uuid\"/>                    <L7p:item stringValue=\"portal.analytics.response.code\"/>                    <L7p:item stringValue=\"portal.analytics.routingTotalTime\"/>                  </L7p:ExportedVars>                </L7p:ExportVariables>                <L7p:FalseAssertion/>              </wsp:All>            </wsp:OneOrMore>            <L7p:SetVariable>              <L7p:Base64Expression stringValue=\"JHtodHRwUm91dGluZy5sYXRlbmN5fQ==\"/>              <L7p:VariableToSet stringValue=\"routingLatency\"/>            </L7p:SetVariable>            <L7p:SetVariable>              <L7p:Base64Expression stringValue=\"JHtyZXF1ZXN0LnJvdXRpbmdUb3RhbFRpbWV9\"/>              <L7p:VariableToSet stringValue=\"portal.analytics.routingTotalTime\"/>            </L7p:SetVariable>            <L7p:assertionComment>              <L7p:Properties mapValue=\"included\">                <L7p:entry>                  <L7p:key stringValue=\"RIGHT.COMMENT\"/>                  <L7p:value stringValue=\"//do work\"/>                </L7p:entry>              </L7p:Properties>            </L7p:assertionComment>          </wsp:All>        </wsp:OneOrMore>      </wsp:All>      <wsp:All wsp:Usage=\"Required\">        <L7p:CustomizeErrorResponse>          <L7p:Content stringValue=\"${errorMsg}\"/>          <L7p:ExtraHeaders nameValuePairArray=\"included\"/>          <L7p:HttpStatus stringValue=\"400\"/>        </L7p:CustomizeErrorResponse>        <wsp:OneOrMore wsp:Usage=\"Required\">          <L7p:ComparisonAssertion>            <L7p:CaseSensitive booleanValue=\"false\"/>            <L7p:Expression1 stringValue=\"${portal.analytics.response.code}\"/>            <L7p:ExpressionIsVariable booleanValue=\"false\"/>            <L7p:Operator operatorNull=\"null\"/>            <L7p:Predicates predicates=\"included\">              <L7p:item dataType=\"included\">                <L7p:Type variableDataType=\"string\"/>              </L7p:item>              <L7p:item stringLength=\"included\">                <L7p:Max intValue=\"-1\"/>                <L7p:Min intValue=\"1\"/>              </L7p:item>            </L7p:Predicates>          </L7p:ComparisonAssertion>          <L7p:SetVariable>            <L7p:Base64Expression stringValue=\"NDAw\"/>            <L7p:VariableToSet stringValue=\"portal.analytics.response.code\"/>          </L7p:SetVariable>        </wsp:OneOrMore>        <L7p:ExportVariables>          <L7p:ExportedVars stringArrayValue=\"included\">            <L7p:item stringValue=\"counterName\"/>            <L7p:item stringValue=\"portal.analytics.action\"/>            <L7p:item stringValue=\"portal.analytics.api.uuid\"/>            <L7p:item stringValue=\"portal.analytics.application.name\"/>            <L7p:item stringValue=\"portal.analytics.application.uuid\"/>            <L7p:item stringValue=\"portal.analytics.authType\"/>            <L7p:item stringValue=\"portal.analytics.organization.name\"/>            <L7p:item stringValue=\"portal.analytics.organization.uuid\"/>            <L7p:item stringValue=\"portal.analytics.response.code\"/>            <L7p:item stringValue=\"portal.analytics.routingTotalTime\"/>          </L7p:ExportedVars>        </L7p:ExportVariables>        <L7p:FalseAssertion/>      </wsp:All>    </wsp:OneOrMore>    <L7p:AuditDetailAssertion>      <L7p:Detail stringValue=\"Policy Fragment: Account Plans Fragment\"/>      <L7p:Enabled booleanValue=\"false\"/>      <L7p:LoggingOnly booleanValue=\"true\"/>    </L7p:AuditDetailAssertion>    <L7p:CommentAssertion>      <L7p:Comment stringValue=\"// This fragment is auto generated by the gateway. DO NOT MODIFY\"/>    </L7p:CommentAssertion>    <L7p:SetVariable>      <L7p:Base64Expression stringValue=\"JHthcGlLZXl9\"/>      <L7p:VariableToSet stringValue=\"apiKey\"/>    </L7p:SetVariable>    <L7p:SetVariable>      <L7p:Base64Expression stringValue=\"JHthY2NvdW50UGxhbk1hcHBpbmdJZH0=\"/>      <L7p:VariableToSet stringValue=\"accountPlanMappingId\"/>    </L7p:SetVariable>    <L7p:SetVariable>      <L7p:Base64Expression stringValue=\"ZmFsc2U=\"/>      <L7p:VariableToSet stringValue=\"apiAuthz\"/>    </L7p:SetVariable>    <L7p:SetVariable>      <L7p:Base64Expression stringValue=\"Tm90IFNldA==\"/>      <L7p:VariableToSet stringValue=\"apiAuthzDetails\"/>    </L7p:SetVariable>    <L7p:CommentAssertion>      <L7p:Comment stringValue=\"Updated on Fri Feb 13 12:39:56 PST 2015\"/>    </L7p:CommentAssertion>    <L7p:ExportVariables>      <L7p:ExportedVars stringArrayValue=\"included\">        <L7p:item stringValue=\"apiAuthz\"/>        <L7p:item stringValue=\"apiAuthzDetails\"/>      </L7p:ExportedVars>    </L7p:ExportVariables>    <L7p:SetVariable>      <L7p:Base64Expression stringValue=\"JHthcGlLZXlSZWNvcmQubGFiZWx9\"/>      <L7p:VariableToSet stringValue=\"portal.analytics.application.name\"/>    </L7p:SetVariable>    <L7p:SetVariable>      <L7p:Base64Expression stringValue=\"JHthY2NvdW50UGxhbk1hcHBpbmdJZH0=\"/>      <L7p:VariableToSet stringValue=\"portal.analytics.organization.uuid\"/>    </L7p:SetVariable>    <L7p:SetVariable>      <L7p:Base64Expression stringValue=\"JHthcGlLZXlSZWNvcmQuYWNjb3VudFBsYW5NYXBwaW5nTmFtZX0=\"/>      <L7p:VariableToSet stringValue=\"portal.analytics.organization.name\"/>    </L7p:SetVariable>    <L7p:SetVariable>      <L7p:Base64Expression stringValue=\"JHthcGlLZXlSZWNvcmQuaWR9\"/>      <L7p:VariableToSet stringValue=\"portal.analytics.apikey\"/>    </L7p:SetVariable>    <L7p:ExportVariables>      <L7p:ExportedVars stringArrayValue=\"included\">        <L7p:item stringValue=\"apiKeyRecord.accountPlanMappingId\"/>        <L7p:item stringValue=\"apiKeyRecord.found\"/>        <L7p:item stringValue=\"counterName\"/>        <L7p:item stringValue=\"portal.analytics.action\"/>        <L7p:item stringValue=\"portal.analytics.api.uuid\"/>        <L7p:item stringValue=\"portal.analytics.apikey\"/>        <L7p:item stringValue=\"portal.analytics.application.name\"/>        <L7p:item stringValue=\"portal.analytics.application.uuid\"/>        <L7p:item stringValue=\"portal.analytics.authType\"/>        <L7p:item stringValue=\"portal.analytics.organization.name\"/>        <L7p:item stringValue=\"portal.analytics.organization.uuid\"/>        <L7p:item stringValue=\"portal.analytics.response.code\"/>        <L7p:item stringValue=\"portal.analytics.routingTotalTime\"/>      </L7p:ExportedVars>    </L7p:ExportVariables>  </wsp:All></wsp:Policy>"
      }
    }
  ]
}