@gravitee/ui-policy-studio-angular 7.6.0 → 7.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/README.md +2 -3
  2. package/esm2020/lib/components/flow-details/gio-ps-flow-details.component.mjs +14 -7
  3. package/esm2020/lib/components/flow-details-info-bar/gio-ps-flow-details-info-bar.component.mjs +91 -0
  4. package/esm2020/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.mjs +44 -0
  5. package/esm2020/lib/components/flow-details-phase-policy/gio-ps-flow-details-phase-policy.component.mjs +31 -0
  6. package/esm2020/lib/components/flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.component.mjs +3 -3
  7. package/esm2020/lib/components/flows-menu/gio-ps-flows-menu.component.mjs +9 -6
  8. package/esm2020/lib/gio-policy-studio.component.mjs +43 -28
  9. package/esm2020/lib/gio-policy-studio.model.mjs +1 -1
  10. package/esm2020/lib/gio-policy-studio.module.mjs +20 -4
  11. package/esm2020/lib/models/SaveOutput.mjs +2 -0
  12. package/esm2020/lib/models/index.mjs +2 -1
  13. package/esm2020/lib/models/plan/Plan.mjs +1 -1
  14. package/esm2020/testing/lib/components/flow-details/gio-ps-flow-details.harness.mjs +41 -0
  15. package/esm2020/testing/lib/components/flow-details-info-bar/gio-ps-flow-details-info-bar.harness.mjs +35 -0
  16. package/esm2020/testing/lib/components/flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.harness.mjs +87 -0
  17. package/esm2020/testing/lib/components/flow-form-dialog/flow-proxy-form-dialog/gio-ps-flow-proxy-form-dialog.harness.mjs +69 -0
  18. package/esm2020/testing/lib/components/flows-menu/gio-ps-flows-menu.harness.mjs +66 -0
  19. package/esm2020/testing/lib/gio-policy-studio.harness.mjs +105 -0
  20. package/esm2020/testing/lib/models/ConnectorsInfo.mjs +2 -0
  21. package/esm2020/testing/lib/models/SaveOutput.mjs +2 -0
  22. package/esm2020/testing/lib/models/flow/Flow.fixture.mjs +2 -2
  23. package/esm2020/testing/{testing → lib/models}/index.mjs +5 -3
  24. package/esm2020/testing/lib/models/plan/Plan.fixture.mjs +2 -1
  25. package/esm2020/testing/lib/models/plan/Plan.mjs +1 -1
  26. package/esm2020/testing/lib/models/plan/index.mjs +17 -0
  27. package/esm2020/testing/public-testing-api.mjs +2 -2
  28. package/fesm2015/gravitee-ui-policy-studio-angular-testing.mjs +329 -1312
  29. package/fesm2015/gravitee-ui-policy-studio-angular-testing.mjs.map +1 -1
  30. package/fesm2015/gravitee-ui-policy-studio-angular.mjs +240 -43
  31. package/fesm2015/gravitee-ui-policy-studio-angular.mjs.map +1 -1
  32. package/fesm2020/gravitee-ui-policy-studio-angular-testing.mjs +320 -1317
  33. package/fesm2020/gravitee-ui-policy-studio-angular-testing.mjs.map +1 -1
  34. package/fesm2020/gravitee-ui-policy-studio-angular.mjs +233 -43
  35. package/fesm2020/gravitee-ui-policy-studio-angular.mjs.map +1 -1
  36. package/lib/components/flow-details/gio-ps-flow-details.component.d.ts +4 -3
  37. package/lib/components/flow-details-info-bar/gio-ps-flow-details-info-bar.component.d.ts +16 -0
  38. package/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.d.ts +11 -0
  39. package/lib/components/flow-details-phase-policy/gio-ps-flow-details-phase-policy.component.d.ts +7 -0
  40. package/lib/components/flows-menu/gio-ps-flows-menu.component.d.ts +1 -1
  41. package/lib/gio-policy-studio.component.d.ts +5 -8
  42. package/lib/gio-policy-studio.model.d.ts +1 -0
  43. package/lib/gio-policy-studio.module.d.ts +14 -10
  44. package/lib/models/SaveOutput.d.ts +6 -0
  45. package/lib/models/index.d.ts +1 -0
  46. package/lib/models/plan/Plan.d.ts +1 -0
  47. package/package.json +1 -1
  48. package/testing/lib/components/flow-details/gio-ps-flow-details.harness.d.ts +9 -0
  49. package/testing/lib/components/flow-details-info-bar/gio-ps-flow-details-info-bar.harness.d.ts +5 -0
  50. package/testing/lib/components/flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.harness.d.ts +16 -0
  51. package/testing/lib/components/flow-form-dialog/flow-proxy-form-dialog/gio-ps-flow-proxy-form-dialog.harness.d.ts +15 -0
  52. package/testing/lib/components/flows-menu/gio-ps-flows-menu.harness.d.ts +25 -0
  53. package/testing/lib/gio-policy-studio.harness.d.ts +34 -0
  54. package/testing/lib/models/ConnectorsInfo.d.ts +4 -0
  55. package/testing/lib/models/SaveOutput.d.ts +6 -0
  56. package/testing/lib/models/index.d.ts +4 -0
  57. package/testing/lib/models/plan/Plan.d.ts +1 -0
  58. package/testing/lib/models/plan/index.d.ts +1 -0
  59. package/testing/public-testing-api.d.ts +1 -1
  60. package/esm2020/testing/testing/harnesses/div.harness.mjs +0 -42
  61. package/esm2020/testing/testing/harnesses/index.mjs +0 -17
  62. package/esm2020/testing/testing/stories-resources/apim-definition.json +0 -405
  63. package/esm2020/testing/testing/stories-resources/apim-flow.json +0 -54
  64. package/esm2020/testing/testing/stories-resources/apim-policies.json +0 -486
  65. package/esm2020/testing/testing/stories-resources/apim-property-providers.json +0 -39
  66. package/esm2020/testing/testing/stories-resources/apim-resource-types.json +0 -187
  67. package/esm2020/testing/testing/stories-resources/index.mjs +0 -26
  68. package/testing/testing/harnesses/div.harness.d.ts +0 -20
  69. package/testing/testing/harnesses/index.d.ts +0 -1
  70. package/testing/testing/index.d.ts +0 -2
  71. package/testing/testing/stories-resources/index.d.ts +0 -592
@@ -1,5 +1,10 @@
1
1
  import { isFunction } from 'lodash';
2
- import { ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';
2
+ import { ComponentHarness, parallel } from '@angular/cdk/testing';
3
+ import { MatButtonHarness } from '@angular/material/button/testing';
4
+ import { DivHarness, SpanHarness } from '@gravitee/ui-particles-angular/testing';
5
+ import { MatInputHarness } from '@angular/material/input/testing';
6
+ import { MatSelectHarness } from '@angular/material/select/testing';
7
+ import { GioFormTagsInputHarness } from '@gravitee/ui-particles-angular';
3
8
 
4
9
  /*
5
10
  * Copyright (C) 2023 The Gravitee team (http://gravitee.io)
@@ -21,7 +26,7 @@ function fakeChannelFlow(modifier) {
21
26
  type: 'CHANNEL',
22
27
  channel: 'channel',
23
28
  channelOperator: 'EQUALS',
24
- entrypoints: ['entrypoint'],
29
+ entrypoints: ['webhook'],
25
30
  operations: ['PUBLISH'],
26
31
  };
27
32
  const base = {
@@ -99,6 +104,7 @@ function fakeHttpFlow(modifier) {
99
104
  */
100
105
  function fakePlan(modifier) {
101
106
  const base = {
107
+ id: 'plan-id',
102
108
  name: 'Keyless plan',
103
109
  flows: [],
104
110
  };
@@ -143,1294 +149,68 @@ function fakePlan(modifier) {
143
149
  * limitations under the License.
144
150
  */
145
151
 
146
- var data$2 = [
147
- {
148
- id: "api-key",
149
- name: "Api Key",
150
- description: "Description of the ApiKey Gravitee Policy",
151
- version: "2.3.0",
152
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:apikey:configuration:ApiKeyPolicyConfiguration\",\n \"properties\" : {\n \"propagateApiKey\" : {\n \"title\": \"Propagate API Key to upstream API\",\n \"type\" : \"boolean\"\n }\n }\n}",
153
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOjBlbTt9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkFQSSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMzUsMTMuMzdhNDMsNDMsMCwxLDAsNDMuMDUsNDNBNDMsNDMsMCwwLDAsNTAuMzUsMTMuMzdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjcuMzMsNzguNjVIMzkuNzhBMi42MSwyLjYxLDAsMCwxLDM3LjE3LDc2VjcxLjg4YS44NC44NCwwLDAsMSwuMzYtLjcsNy4wNiw3LjA2LDAsMCwwLDItMi4yMS44NS44NSwwLDAsMSwuNzUtLjQzSDQyLjZMNDUsNjYuNzlhLjg2Ljg2LDAsMCwxLDEtLjA1bDIuNzIsMS42NCwyLjUzLTEuNjJhLjg2Ljg2LDAsMCwxLDEsMGwuNDkuMzhWNjIuNDZINDAuMjhhLjg2Ljg2LDAsMCwxLS43NS0uNDQsNi43Niw2Ljc2LDAsMCwwLTItMi4xOS44OC44OCwwLDAsMS0uMzYtLjcxVjU1YTIuNjIsMi42MiwwLDAsMSwyLjYxLTIuNjJINjcuMzNBMi42MywyLjYzLDAsMCwxLDcwLDU1Vjc2QTIuNjIsMi42MiwwLDAsMSw2Ny4zMyw3OC42NVpNMzguOSw3Mi4zMlY3NmEuODkuODksMCwwLDAsLjg4Ljg4SDY3LjMzYS44Ny44NywwLDAsMCwuODgtLjg4VjU1YS44OC44OCwwLDAsMC0uODgtLjg4SDM5Ljc4YS44OS44OSwwLDAsMC0uODguODh2My43MmE4LjYyLDguNjIsMCwwLDEsMS44NywySDUzLjU1YS44Ny44NywwLDAsMSwuODcuODdWNjlhLjg3Ljg3LDAsMCwxLS40OS43OC44Ni44NiwwLDAsMS0uOTEtLjFsLTEuNDEtMS4xMS0yLjQ2LDEuNTlhLjg3Ljg3LDAsMCwxLS45MiwwbC0yLjY5LTEuNjJMNDMuNCw3MC4xMWEuOTQuOTQsMCwwLDEtLjUyLjE2SDQwLjc3QTguNjksOC42OSwwLDAsMSwzOC45LDcyLjMyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTY1Ljg0LDU0LjA4SDYxLjQ3YS44Ny44NywwLDAsMS0uODctLjg3di01LjlhNyw3LDAsMCwwLTE0LjA4LDB2NS45YS44Ny44NywwLDAsMS0uODcuODdINDEuMjhhLjg3Ljg3LDAsMCwxLS44Ny0uODd2LTUuOWExMy4xNSwxMy4xNSwwLDEsMSwyNi4zLDB2NS45QS44Ny44NywwLDAsMSw2NS44NCw1NC4wOFptLTMuNS0xLjc0SDY1di01YTExLjQxLDExLjQxLDAsMSwwLTIyLjgyLDB2NWgyLjYzdi01YTguNzgsOC43OCwwLDAsMSwxNy41NiwwWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTMxLjcxLDY5YTMuNTEsMy41MSwwLDEsMSwzLjUxLTMuNTFBMy41MSwzLjUxLDAsMCwxLDMxLjcxLDY5Wm0wLTUuMjlhMS43OCwxLjc4LDAsMSwwLDEuNzcsMS43OEExLjc4LDEuNzgsMCwwLDAsMzEuNzEsNjMuNzJaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMzMuNDgsNzQuMjJhOC43Miw4LjcyLDAsMSwxLDUuMDYtMTUuODEsOC41OSw4LjU5LDAsMCwxLDIuMjMsMi4zMUg1My41NWEuODcuODcsMCwwLDEsLjg3Ljg3VjY5YS44Ny44NywwLDAsMS0uNDkuNzguODYuODYsMCwwLDEtLjkxLS4xbC0xLjQxLTEuMTEtMi40NiwxLjU5YS44Ny44NywwLDAsMS0uOTIsMGwtMi42OS0xLjYyTDQzLjQsNzAuMTFhLjk0Ljk0LDAsMCwxLS41Mi4xNkg0MC43N2E4Ljc1LDguNzUsMCwwLDEtNy4yOSw0Wm0wLTE1LjY5YTcsNywwLDEsMCw0LjA1LDEyLjY1LDcuMDYsNy4wNiwwLDAsMCwyLTIuMjEuODUuODUsMCwwLDEsLjc1LS40M0g0Mi42TDQ1LDY2Ljc5YS44Ni44NiwwLDAsMSwxLS4wNWwyLjcyLDEuNjQsMi41My0xLjYyYS44Ni44NiwwLDAsMSwxLDBsLjQ5LjM4VjYyLjQ2SDQwLjI4YS44Ni44NiwwLDAsMS0uNzUtLjQ0LDYuNzYsNi43NiwwLDAsMC0yLTIuMTlBNi45Myw2LjkzLDAsMCwwLDMzLjQ4LDU4LjUzWk0zMS43MSw2OWEzLjUxLDMuNTEsMCwxLDEsMy41MS0zLjUxQTMuNTEsMy41MSwwLDAsMSwzMS43MSw2OVptMC01LjI5YTEuNzgsMS43OCwwLDEsMCwxLjc3LDEuNzhBMS43OCwxLjc4LDAsMCwwLDMxLjcxLDYzLjcyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTMxLjcxLDY5YTMuNTEsMy41MSwwLDEsMSwzLjUxLTMuNTFBMy41MSwzLjUxLDAsMCwxLDMxLjcxLDY5Wm0wLTUuMjlhMS43OCwxLjc4LDAsMSwwLDEuNzcsMS43OEExLjc4LDEuNzgsMCwwLDAsMzEuNzEsNjMuNzJaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTMuNTYsNzMuNjlhLjg3Ljg3LDAsMCwxLS44Ny0uODdWNjlhLjg3Ljg3LDAsMCwxLDEuNzQsMHYzLjg1QS44Ny44NywwLDAsMSw1My41Niw3My42OVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01My41Niw2Mi4zN2EuODcuODcsMCwwLDEtLjg3LS44N1Y1Ny42NWEuODcuODcsMCwwLDEsMS43NCwwVjYxLjVBLjg3Ljg3LDAsMCwxLDUzLjU2LDYyLjM3WiIvPjwvZz48ZyBpZD0iSE9TVElORyI+PHRleHQgY2xhc3M9ImNscy0zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy45MyAtNC45OCkiPjx0c3BhbiBjbGFzcz0iY2xzLTQiPkE8L3RzcGFuPjx0c3BhbiB4PSI3LjMxIiB5PSIwIj5waSBLZXk8L3RzcGFuPjwvdGV4dD48L2c+PC9zdmc+",
154
- category: "security",
155
- onRequest: true,
156
- onResponse: false
157
- },
158
- {
159
- id: "policy-assign-attributes",
160
- name: "Assign attributes",
161
- description: "Description of the Assign attributes Policy",
162
- version: "1.5.0",
163
- schema: "{\n \"type\": \"object\",\n \"id\": \"urn:jsonschema:io:gravitee:policy:assignattributes:configuration:AssignAttributesPolicyConfiguration\",\n \"properties\": {\n \"scope\" : {\n \"title\": \"Scope\",\n \"description\": \"Execute policy on <strong>request</strong> or <strong>response</strong> phase.\",\n \"type\" : \"string\",\n \"default\": \"REQUEST\",\n \"enum\" : [ \"REQUEST\", \"RESPONSE\", \"REQUEST_CONTENT\", \"RESPONSE_CONTENT\" ],\n \"deprecated\": true\n },\n \"attributes\" : {\n \"type\" : \"array\",\n \"title\": \"Assign context attributes\",\n \"items\" : {\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:assignattributes:configuration:Attribute\",\n \"title\": \"Attribute\",\n \"properties\" : {\n \"name\" : {\n \"title\": \"Name\",\n \"description\": \"Name of the attribute\",\n \"type\" : \"string\"\n },\n \"value\" : {\n \"title\": \"Value\",\n \"description\": \"Value of the attribute (Support EL)\",\n \"type\" : \"string\",\n \"x-schema-form\": {\n \"expression-language\": true\n }\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ]\n }\n }\n }\n}\n",
164
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fS5jbHMtNXtsZXR0ZXItc3BhY2luZzowZW07fS5jbHMtNntsZXR0ZXItc3BhY2luZzowZW07fS5jbHMtN3tsZXR0ZXItc3BhY2luZzowZW07fS5jbHMtOHtsZXR0ZXItc3BhY2luZzotMC4wMWVtO308L3N0eWxlPjwvZGVmcz48ZyBpZD0iQVBJIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01MC4zNSwxMy4zN2E0Myw0MywwLDEsMCw0My4wNSw0M0E0Myw0MywwLDAsMCw1MC4zNSwxMy4zN1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik03My4yNiw3OC42NUg0MS4xNGEyLjU2LDIuNTYsMCwwLDEtMi41NS0yLjU2VjU1LjYyYTEsMSwwLDAsMSwxLTFINzQuODRhMSwxLDAsMCwxLDEsMVY3Ni4wOUEyLjU1LDIuNTUsMCwwLDEsNzMuMjYsNzguNjVaTTQwLjU1LDU2LjU5djE5LjVhLjU5LjU5LDAsMCwwLC41OS42SDczLjI2YS42LjYsMCwwLDAsLjYtLjZWNTYuNTlaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNzQuODQsNTYuNTlIMzkuNTdhMSwxLDAsMCwxLTEtMXYtNS4yYTIuNTYsMi41NiwwLDAsMSwyLjU1LTIuNTVINzMuMjZhMi41NiwyLjU2LDAsMCwxLDIuNTYsMi41NXY1LjJBMSwxLDAsMCwxLDc0Ljg0LDU2LjU5Wm0tMzQuMjktMkg3My44NlY1MC40MmEuNi42LDAsMCwwLS42LS41OUg0MS4xNGEuNi42LDAsMCwwLS41OS41OVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik02OCw0OS44M0g2MS4xNGExLDEsMCwwLDEtMS0xLDEsMSwwLDAsMSwxLTEuMDZINjhhMSwxLDAsMCwxLDEsMXYuMDhBMSwxLDAsMCwxLDY4LDQ5LjgzWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTY4LDQ5Ljc1SDMyLjcxYTEsMSwwLDAsMS0xLTF2LTUuMkEyLjU2LDIuNTYsMCwwLDEsMzQuMjksNDFINjYuNDFBMi41NiwyLjU2LDAsMCwxLDY5LDQzLjU3djUuMkExLDEsMCwwLDEsNjgsNDkuNzVabS0zNC4zLTJINjdWNDMuNTdhLjYuNiwwLDAsMC0uNi0uNkgzNC4yOWEuNi42LDAsMCwwLS42LjZaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMzkuNTcsNzEuOEgzNC4yOWEyLjU2LDIuNTYsMCwwLDEtMi41Ni0yLjU2VjQ4Ljc3YTEsMSwwLDAsMSwxLTFINjEuMTRhMSwxLDAsMCwxLDEsMXYuMDhhMSwxLDAsMCwxLTEsMWgtMjBhLjYuNiwwLDAsMC0uNTkuNTl2MjAuNEExLDEsMCwwLDEsMzkuNTcsNzEuOFptLTUuODgtMjJWNjkuMjRhLjYuNiwwLDAsMCwuNi42aDQuM1Y1MC40MmEyLjQ2LDIuNDYsMCwwLDEsLjA5LS42N1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zMi43MSw2NC45NEgyNy40NGEyLjU1LDIuNTUsMCwwLDEtMi41NS0yLjU1VjM2LjcyYTIuNTYsMi41NiwwLDAsMSwyLjU1LTIuNTZINTkuNTZhMi41NiwyLjU2LDAsMCwxLDIuNTYsMi41NlY0MmExLDEsMCwwLDEtMSwxSDM0LjI5YS42LjYsMCwwLDAtLjYuNlY2NEExLDEsMCwwLDEsMzIuNzEsNjQuOTRaTTI3LjQ0LDM2LjEyYS42LjYsMCwwLDAtLjYuNlY2Mi4zOWEuNi42LDAsMCwwLC42LjU5aDQuMjlWNDMuNTdBMi41NiwyLjU2LDAsMCwxLDM0LjI5LDQxSDYwLjE2VjM2LjcyYS42LjYsMCwwLDAtLjYtLjZaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjQuNzUsNTIuMjNhLjkyLjkyLDAsMSwxLS45MS0uOTFBLjkxLjkxLDAsMCwxLDY0Ljc1LDUyLjIzWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTY4LjExLDUyLjIzYS45Mi45MiwwLDEsMS0uOTEtLjkxQS45Mi45MiwwLDAsMSw2OC4xMSw1Mi4yM1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik03MS40Nyw1Mi4yM2EuOTIuOTIsMCwxLDEtLjkyLS45MUEuOTIuOTIsMCwwLDEsNzEuNDcsNTIuMjNaIi8+PC9nPjxnIGlkPSJIT1NUSU5HIj48dGV4dCBjbGFzcz0iY2xzLTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjkzIC00Ljk4KSI+PHRzcGFuIGNsYXNzPSJjbHMtNCI+QTwvdHNwYW4+PHRzcGFuIHg9IjcuMjciIHk9IjAiPnNzaTwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNCIgeD0iMTkuNTgiIHk9IjAiPmc8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTUiIHg9IjI2LjIyIiB5PSIwIj5uIDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNiIgeD0iMzUuNDIiIHk9IjAiPmE8L3RzcGFuPjx0c3BhbiB4PSI0MS4xNiIgeT0iMCI+dHQ8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTciIHg9IjQ5LjEiIHk9IjAiPnI8L3RzcGFuPjx0c3BhbiB4PSI1My4wOCIgeT0iMCI+aWJ1PC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy04IiB4PSI2OS4zMiIgeT0iMCI+dDwvdHNwYW4+PHRzcGFuIHg9IjczLjIyIiB5PSIwIj5lczwvdHNwYW4+PC90ZXh0PjwvZz48L3N2Zz4=",
165
- category: "transformation",
166
- onRequest: true,
167
- onResponse: true
168
- },
169
- {
170
- id: "policy-assign-content",
171
- name: "Assign content",
172
- description: "Description of the Assign content Policy",
173
- version: "1.6.0",
174
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:assigncontent:configuration:AssignContentPolicyConfiguration\",\n \"properties\" : {\n \"scope\" : {\n \"title\": \"Scope\",\n \"description\": \"Execute policy on <strong>request</strong> or <strong>response</strong> phase.\",\n \"type\" : \"string\",\n \"default\": \"REQUEST\",\n \"enum\" : [ \"REQUEST\", \"RESPONSE\" ],\n \"deprecated\": \"true\"\n },\n \"body\" : {\n \"title\": \"Body content\",\n \"description\": \"The body content to attach to the request or to the response. You can also make use of freemarker templating engine to map an incoming body content to a new one.\",\n \"type\" : \"string\",\n \"x-schema-form\": {\n \"type\": \"codemirror\",\n \"codemirrorOptions\": {\n \"placeholder\": \"Put the body content here\",\n \"lineWrapping\": true,\n \"lineNumbers\": true,\n \"allowDropFileTypes\": true,\n \"autoCloseTags\": true,\n \"mode\": \"xml\"\n }\n }\n }\n },\n \"required\": [\n \"scope\",\n \"body\"\n ]\n}\n",
175
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fS5jbHMtNXtsZXR0ZXItc3BhY2luZzowZW07fS5jbHMtNntsZXR0ZXItc3BhY2luZzotMC4wMWVtO30uY2xzLTd7bGV0dGVyLXNwYWNpbmc6MGVtO30uY2xzLTh7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkFQSSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMzUsMTMuMzdhNDMsNDMsMCwxLDAsNDMuMDUsNDNBNDMsNDMsMCwwLDAsNTAuMzUsMTMuMzdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNzQsNzguNjVIMjYuNzJhMy4zNiwzLjM2LDAsMCwxLTMuMzYtMy4zNVY0NS4xNmExLDEsMCwwLDEsMS0xSDc2LjMxYTEsMSwwLDAsMSwxLDFWNzUuM0EzLjM2LDMuMzYsMCwwLDEsNzQsNzguNjVaTTI1LjQ0LDQ2LjJWNzUuM2ExLjI4LDEuMjgsMCwwLDAsMS4yOCwxLjI4SDc0YTEuMjgsMS4yOCwwLDAsMCwxLjI4LTEuMjhWNDYuMloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik03Ni4zMSw0Ni4ySDI0LjRhMSwxLDAsMCwxLTEtMVYzNy41MmEzLjM3LDMuMzcsMCwwLDEsMy4zNi0zLjM2SDc0YTMuMzcsMy4zNywwLDAsMSwzLjM2LDMuMzZ2Ny42NEExLDEsMCwwLDEsNzYuMzEsNDYuMlpNMjUuNDQsNDQuMTJINzUuMjd2LTYuNkExLjI4LDEuMjgsMCwwLDAsNzQsMzYuMjRIMjYuNzJhMS4yOCwxLjI4LDAsMCwwLTEuMjgsMS4yOFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zOSw0MC4xOGExLjYyLDEuNjIsMCwxLDAsMS42MS0xLjYxQTEuNjIsMS42MiwwLDAsMCwzOSw0MC4xOFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zNCw0MC4xOGExLjYyLDEuNjIsMCwxLDAsMS42MS0xLjYxQTEuNjIsMS42MiwwLDAsMCwzNCw0MC4xOFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0yOS4xLDQwLjE4YTEuNjIsMS42MiwwLDEsMCwxLjYxLTEuNjFBMS42MiwxLjYyLDAsMCwwLDI5LjEsNDAuMThaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjYsNzIuODhINjMuNDFhMSwxLDAsMSwxLDAtMi4wN0g2NVY2OS4yNWExLDEsMCwwLDEsMi4wOCwwdjIuNTlBMSwxLDAsMCwxLDY2LDcyLjg4WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTU3LjUxLDcyLjg4SDUzLjNhMSwxLDAsMSwxLDAtMi4wN2g0LjIxYTEsMSwwLDEsMSwwLDIuMDdabS0xMC4xLDBINDMuMmExLDEsMCwxLDEsMC0yLjA3aDQuMjFhMSwxLDAsMSwxLDAsMi4wN1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zNy4zLDcyLjg4SDM0LjcxYTEsMSwwLDAsMS0xLTFWNjkuMjVhMSwxLDAsMSwxLDIuMDgsMHYxLjU2SDM3LjNhMSwxLDAsMSwxLDAsMi4wN1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zNC43MSw2NC41YTEsMSwwLDAsMS0xLTFWNTkuMzJhMSwxLDAsMCwxLDIuMDgsMHY0LjE0QTEsMSwwLDAsMSwzNC43MSw2NC41WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTM0LjcxLDU0LjU3YTEsMSwwLDAsMS0xLTF2LTIuNmExLDEsMCwwLDEsMS0xSDM3LjNhMSwxLDAsMSwxLDAsMi4wOEgzNS43NXYxLjU2QTEsMSwwLDAsMSwzNC43MSw1NC41N1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01Ny41MSw1Mkg1My4zYTEsMSwwLDAsMSwwLTIuMDhoNC4yMWExLDEsMCwwLDEsMCwyLjA4Wm0tMTAuMSwwSDQzLjJhMSwxLDAsMCwxLDAtMi4wOGg0LjIxYTEsMSwwLDEsMSwwLDIuMDhaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjYsNTQuNTdhMSwxLDAsMCwxLTEtMVY1Mkg2My40MWExLDEsMCwwLDEsMC0yLjA4SDY2YTEsMSwwLDAsMSwxLDF2Mi42QTEsMSwwLDAsMSw2Niw1NC41N1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik02Niw2NC40OWExLDEsMCwwLDEtMS0xVjU5LjMyYTEsMSwwLDAsMSwyLjA4LDB2NC4xNEExLDEsMCwwLDEsNjYsNjQuNDlaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTAuMzUsNjcuMTNhMSwxLDAsMCwxLTEtMXYtOS40YTEsMSwwLDEsMSwyLjA3LDB2OS40QTEsMSwwLDAsMSw1MC4zNSw2Ny4xM1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01NS4wNiw2Mi40M0g0NS42NWExLDEsMCwxLDEsMC0yLjA4aDkuNDFhMSwxLDAsMCwxLDAsMi4wOFoiLz48L2c+PGcgaWQ9IkhPU1RJTkciPjx0ZXh0IGNsYXNzPSJjbHMtMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTcuOTMgLTQuOTgpIj48dHNwYW4gY2xhc3M9ImNscy00Ij5BPC90c3Bhbj48dHNwYW4geD0iNy4yNyIgeT0iMCI+c3NpPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy00IiB4PSIxOS41OCIgeT0iMCI+ZzwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNSIgeD0iMjYuMjIiIHk9IjAiPm4gPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy02IiB4PSIzNS40MiIgeT0iMCI+YzwvdHNwYW4+PHRzcGFuIHg9IjQwLjczIiB5PSIwIj5vPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy03IiB4PSI0Ny4zMiIgeT0iMCI+bjwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtOCIgeD0iNTMuOTMiIHk9IjAiPnQ8L3RzcGFuPjx0c3BhbiB4PSI1Ny44MyIgeT0iMCI+ZTwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNyIgeD0iNjMuODQiIHk9IjAiPm48L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTUiIHg9IjcwLjQ1IiB5PSIwIj50PC90c3Bhbj48L3RleHQ+PC9nPjwvc3ZnPg==",
176
- category: "transformation",
177
- onRequest: true,
178
- onResponse: true
179
- },
180
- {
181
- id: "cache",
182
- name: "Cache",
183
- description: "Description of the Cache Gravitee Policy",
184
- version: "1.13.0",
185
- schema: "{\n \"type\": \"object\",\n \"id\": \"urn:jsonschema:io:gravitee:policy:cache:configuration:CachePolicyConfiguration\",\n \"properties\": {\n \"cacheName\": {\n \"title\": \"Cache name\",\n \"description\": \"The cache resource used to store the element.\",\n \"type\": \"string\",\n \"x-schema-form\": {\n \"event\": {\n \"name\": \"fetch-resources\",\n \"regexTypes\": \"^cache\"\n }\n }\n },\n \"key\": {\n \"title\": \"Key\",\n \"description\": \"The key used to store the element (Support EL).\",\n \"type\": \"string\",\n \"x-schema-form\": {\n \"expression-language\": true\n }\n },\n \"timeToLiveSeconds\": {\n \"title\": \"Time to live (in seconds)\",\n \"default\": 600,\n \"description\": \"Time to live of the element put in cache (Default to 10 minutes).\",\n \"type\": \"integer\"\n },\n \"useResponseCacheHeaders\": {\n \"title\": \"Use response headers\",\n \"description\": \"Time to live based on 'Cache-Control' and / or 'Expires' headers from response.\",\n \"type\": \"boolean\"\n },\n \"scope\": {\n \"title\": \"Scope\",\n \"description\": \"Cached response can be set for a single consumer (application) or for all consumers.<br><strong>WARNING:</strong> Please be aware that by using an \\\"API\\\" scope, data will be shared between all consumers!\",\n \"type\": \"string\",\n \"default\": \"APPLICATION\",\n \"enum\": [\n \"API\",\n \"APPLICATION\"\n ]\n }\n },\n \"required\": [\n \"cacheName\",\n \"timeToLiveSeconds\"\n ]\n}\n",
186
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy0ye2xldHRlci1zcGFjaW5nOi0wLjAxZW07fS5jbHMtM3tmaWxsOiM4NmMzZDA7fS5jbHMtNHtmaWxsOiNmZmY7c3Ryb2tlOiNmZmY7c3Ryb2tlLW1pdGVybGltaXQ6MTA7fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJIT1NUSU5HIj48dGV4dCBjbGFzcz0iY2xzLTEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjkzIC00Ljk4KSI+PHRzcGFuIGNsYXNzPSJjbHMtMiI+QzwvdHNwYW4+PHRzcGFuIHg9IjYuODgiIHk9IjAiPmFjaGU8L3RzcGFuPjwvdGV4dD48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik01MC4zNSwxMy4zN2E0Myw0MywwLDEsMCw0My4wNSw0M0E0Myw0MywwLDAsMCw1MC4zNSwxMy4zN1oiLz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik00Ny40NSw3Ny41OEEyMy4zLDIzLjMsMCwwLDEsNDIsNzYuOTNMNDIuNDYsNzVhMjEuMzQsMjEuMzQsMCwxLDAtMTEtMzQuODNsLTEuNS0xLjMyQTIzLjM0LDIzLjM0LDAsMSwxLDQ3LjQ1LDc3LjU4WiIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtNCIgcG9pbnRzPSI0Ni4yOCA3MC44OSAzNC40MSA3Mi4zNyA0MS42MyA4MS45MSA0Ni4yOCA3MC44OSIvPjwvZz48L3N2Zz4=",
187
- category: "performance",
188
- onRequest: true,
189
- onResponse: false
190
- },
191
- {
192
- id: "dynamic-routing",
193
- name: "Dynamic Routing",
194
- description: "Description of the Dynamic Routing Gravitee Policy",
195
- version: "1.11.1",
196
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:dynamicrouting:configuration:DynamicRoutingPolicyConfiguration\",\n \"title\": \"Dynamic Routing\",\n \"description\": \"Route request to an other endpoint according to specified rules\",\n \"properties\" : {\n \"rules\" : {\n \"title\": \"Routing rules\",\n \"description\": \"Ordered list of rules to apply to inbound request.\",\n \"type\" : \"array\",\n \"items\" : {\n \"type\" : \"object\",\n \"title\": \"Rule\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:dynamicrouting:configuration:Rule\",\n \"properties\" : {\n \"pattern\" : {\n \"title\": \"Match expression\",\n \"description\": \"The key used to store the element (Support EL).\",\n \"type\" : \"string\",\n \"x-schema-form\": {\n \"expression-language\": true\n }\n },\n \"url\" : {\n \"title\": \"Redirect to\",\n \"description\": \"The target endpoint (Support EL).\",\n \"type\" : \"string\",\n \"x-schema-form\": {\n \"expression-language\": true\n }\n }\n },\n \"required\": [\n \"pattern\",\n \"url\"\n ]\n }\n }\n },\n \"required\": [\n \"rules\"\n ]\n}\n",
197
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOjAuMDFlbTt9LmNscy01e2xldHRlci1zcGFjaW5nOjBlbTt9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkFQSSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMzUsMTMuMzdhNDMsNDMsMCwxLDAsNDMuMDUsNDNBNDMsNDMsMCwwLDAsNTAuMzUsMTMuMzdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNDguOCw1Ny45MmE1LjIsNS4yLDAsMSwxLDUuMi01LjJBNS4yLDUuMiwwLDAsMSw0OC44LDU3LjkyWm0wLTguN2EzLjUxLDMuNTEsMCwxLDAsMy41MSwzLjVBMy41LDMuNSwwLDAsMCw0OC44LDQ5LjIyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTYzLjM5LDQzLjg0QTMuODksMy44OSwwLDEsMSw2Ny4yOCw0MCwzLjg5LDMuODksMCwwLDEsNjMuMzksNDMuODRabTAtNi4wOWEyLjIsMi4yLDAsMSwwLDIuMiwyLjJBMi4yLDIuMiwwLDAsMCw2My4zOSwzNy43NVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zOS41OSw0Mi4yNGEzLjg5LDMuODksMCwxLDEsMy44OS0zLjg5QTMuODksMy44OSwwLDAsMSwzOS41OSw0Mi4yNFptMC02LjA5YTIuMiwyLjIsMCwxLDAsMi4yLDIuMkEyLjIsMi4yLDAsMCwwLDM5LjU5LDM2LjE1WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTM2LjU0LDcwYTMuODksMy44OSwwLDEsMSwzLjg5LTMuODlBMy44OSwzLjg5LDAsMCwxLDM2LjU0LDcwWm0wLTYuMDlhMi4yLDIuMiwwLDEsMCwyLjIsMi4yQTIuMjEsMi4yMSwwLDAsMCwzNi41NCw2My44N1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01Ni4yLDc4LjM2YTMuODksMy44OSwwLDEsMSwzLjg5LTMuODlBMy44OSwzLjg5LDAsMCwxLDU2LjIsNzguMzZabTAtNi4wOWEyLjIsMi4yLDAsMSwwLDIuMiwyLjJBMi4yLDIuMiwwLDAsMCw1Ni4yLDcyLjI3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTY0LjE2LDYzLjA5YTMuODksMy44OSwwLDEsMSwzLjg5LTMuODlBMy44OSwzLjg5LDAsMCwxLDY0LjE2LDYzLjA5Wm0wLTYuMDlhMi4yLDIuMiwwLDEsMCwyLjIxLDIuMkEyLjIxLDIuMjEsMCwwLDAsNjQuMTYsNTdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTUuMTgsNzIuMjdhLjg0Ljg0LDAsMCwxLS44LS41OEw0OS41OSw1Ny4zNGEuODQuODQsMCwxLDEsMS42LS41NEw1Niw3MS4xNmEuODMuODMsMCwwLDEtLjgsMS4xMVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik02Miw1Ny45MmEuODEuODEsMCwwLDEtLjM3LS4wOWwtOC44NC00LjM1QS44NS44NSwwLDEsMSw1My41Miw1Mmw4Ljg0LDQuMzVBLjg1Ljg1LDAsMCwxLDYyLDU3LjkyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUwLjM5LDQ5LjUyYS44NS44NSwwLDAsMS0uNzItLjRBLjgzLjgzLDAsMCwxLDQ5Ljk0LDQ4bDEwLjczLTYuN2EuODUuODUsMCwwLDEsLjksMS40NEw1MC44Myw0OS4zOUEuNzguNzgsMCwwLDEsNTAuMzksNDkuNTJaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNDYsNTAuMmEuODMuODMsMCwwLDEtLjcyLS40MWwtNS04LjM0YS44NS44NSwwLDAsMSwxLjQ1LS44N2w1LDguMzVhLjgzLjgzLDAsMCwxLS4yOSwxLjE1QS44OC44OCwwLDAsMSw0Niw1MC4yWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTM4LDY0LjIzYS44NC44NCwwLDAsMS0uNjUtMS4zOGw3LjA2LTguNDlhLjg1Ljg1LDAsMSwxLDEuMywxLjA4bC03LjA2LDguNDlBLjg1Ljg1LDAsMCwxLDM4LDY0LjIzWiIvPjwvZz48ZyBpZD0iSE9TVElORyI+PHRleHQgY2xhc3M9ImNscy0zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy45MyAtNC45OCkiPjx0c3BhbiBjbGFzcz0iY2xzLTQiPkQ8L3RzcGFuPjx0c3BhbiB4PSI4LjE2IiB5PSIwIj55bmFtaWMgPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy01IiB4PSI0Ni45OSIgeT0iMCI+UjwvdHNwYW4+PHRzcGFuIHg9IjUzLjUiIHk9IjAiPm91dGluZzwvdHNwYW4+PC90ZXh0PjwvZz48L3N2Zz4=",
198
- category: "others",
199
- onRequest: true,
200
- onResponse: false
201
- },
202
- {
203
- id: "generate-http-signature",
204
- name: "Generate HTTP Signature",
205
- description: "Description of the Generate HTTP Signature Gravitee Policy",
206
- version: "1.0.0",
207
- schema: "{\n \"type\": \"object\",\n \"id\": \"urn:jsonschema:io:gravitee:policy:generatehttpsignature:configuration:GenerateHttpSignaturePolicyConfiguration\",\n \"properties\": {\n \"scheme\" : {\n \"title\": \"Scheme\",\n \"description\": \"Signature Scheme\",\n \"type\" : \"string\",\n \"default\": \"AUTHORIZATION\",\n \"enum\" : [\n \"AUTHORIZATION\",\n \"SIGNATURE\"\n ],\n \"x-schema-form\": {\n \"type\": \"select\",\n \"titleMap\": {\n \"AUTHORIZATION\": \"\\\"Signature\\\" HTTP Authentication Scheme\",\n \"SIGNATURE\": \"\\\"Signature\\\" HTTP Header\"\n }\n }\n },\n \"keyId\": {\n \"title\": \"Key ID\",\n \"description\": \"The key ID used to sign (support EL).\",\n \"type\": \"string\"\n },\n \"secret\": {\n \"title\": \"Secret\",\n \"description\": \"The secret key used to sign (support EL).\",\n \"type\": \"string\"\n },\n \"algorithm\" : {\n \"title\": \"Algorithm\",\n \"description\": \"The HMAC digest algorithm.\",\n \"type\" : \"string\",\n \"default\": \"HMAC_SHA256\",\n \"enum\" : [\n \"HMAC_SHA1\",\n \"HMAC_SHA256\",\n \"HMAC_SHA384\",\n \"HMAC_SHA512\"\n ]\n },\n \"headers\" : {\n \"type\": \"array\",\n \"title\": \"Headers\",\n \"description\": \"List of headers to use for HTTP signature creation.\",\n \"items\": {\n \"type\": \"string\",\n \"title\": \"Header\"\n }\n },\n \"created\": {\n \"title\": \"Include the created timestamp in the signature\",\n \"default\": true,\n \"description\": \"Add (created) header in the signature. (Highly recommended)\",\n \"type\": \"boolean\"\n },\n \"expires\": {\n \"title\": \"Include the expires timestamp in the signature\",\n \"default\": true,\n \"description\": \"Add (expires) header in the signature. (Highly recommended)\",\n \"type\": \"boolean\"\n },\n \"validityDuration\": {\n \"title\": \"Validity duration\",\n \"default\": 3,\n \"description\": \"Signature's maximum validation duration in seconds\",\n \"type\": \"integer\",\n \"minimum\": 1,\n \"x-schema-form\": {\n \"hidden\": [\n {\n \"$eq\": {\n \"expires\": false\n }\n }\n ]\n }\n }\n },\n \"required\": [\n \"scheme\",\n \"secret\",\n \"keyId\",\n \"validityDuration\",\n \"algorithm\"\n ]\n}\n",
208
- icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAxIiBoZWlnaHQ9IjExMyIgdmlld0JveD0iMCAwIDEwMSAxMTMiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik04NS40NSA1Ny44Nkw3NS4wNyA2MS43OEM3NC44Mjg4IDYxLjg2NjggNzQuNTY4MiA2MS44ODQ3IDc0LjMxNzQgNjEuODMxN0M3NC4wNjY1IDYxLjc3ODggNzMuODM1NCA2MS42NTcgNzMuNjUgNjEuNDhDNzMuNDY4MiA2MS4yOTc1IDczLjM0MjUgNjEuMDY2OSA3My4yODc2IDYwLjgxNTNDNzMuMjMyNiA2MC41NjM3IDczLjI1MDggNjAuMzAxNiA3My4zNCA2MC4wNkw3Ny4xOCA0OS42NUM3Ny4yNDY1IDQ5LjQ2MzEgNzcuMzUyMiA0OS4yOTI2IDc3LjQ5IDQ5LjE1TDg4Ljc0IDM3LjgyQzgzLjk3MTQgMjguNDI5MyA3NS45MjIyIDIxLjExNTMgNjYuMTE5MiAxNy4yNjUyQzU2LjMxNjEgMTMuNDE1MSA0NS40NDA5IDEzLjI5NjcgMzUuNTU2MyAxNi45MzIzQzI1LjY3MTcgMjAuNTY4IDE3LjQ2NTEgMjcuNzA1IDEyLjQ5MzEgMzYuOTg5NUM3LjUyMTE1IDQ2LjI3NDEgNi4xMjk1NCA1Ny4wNjA1IDguNTgyMjYgNjcuMzAzQzExLjAzNSA3Ny41NDU0IDE3LjE2MTQgODYuNTMxNSAyNS43OTk2IDkyLjU1NjlDMzQuNDM3OCA5OC41ODIzIDQ0Ljk4NyAxMDEuMjI4IDU1LjQ0NjIgOTkuOTkxOUM2NS45MDU1IDk4Ljc1NiA3NS41NDc0IDkzLjcyNDQgODIuNTQzMiA4NS44NTE1Qzg5LjUzOSA3Ny45Nzg2IDkzLjQwMjIgNjcuODEyIDkzLjQgNTcuMjhDOTMuMzk2IDU1LjAzMyA5My4yMTg5IDUyLjc4OTcgOTIuODcgNTAuNTdMODUuOTUgNTcuNTdDODUuODA3NCA1Ny43MDMyIDg1LjYzNjQgNTcuODAyNCA4NS40NSA1Ny44NlY1Ny44NloiIGZpbGw9IiM4NkMzRDAiLz4KPHBhdGggZD0iTTg1LjExIDU2LjE3TDkyLjU0IDQ4LjY5QzkxLjg5MDEgNDUuNTEwMyA5MC44ODM4IDQyLjQxNDEgODkuNTQgMzkuNDZMNzkgNTAuMDlMODUuMTEgNTYuMTdaIiBmaWxsPSIjODZDM0QwIi8+CjxwYXRoIGQ9Ik03NC45OSA2MC4xMzAxTDgzLjggNTYuNTlMNzguNDYgNTEuM0w3NC45OSA2MC4xMzAxWiIgZmlsbD0iIzg2QzNEMCIvPgo8cGF0aCBkPSJNODUuMTEwMSA1Ni4xNjk5TDc5LjAwMDEgNTAuMDg5OUw4OS41MzAxIDM5LjQ1OTlDODkuMjgwMSAzOC45MDk5IDg5LjAyMDEgMzguMzU5OSA4OC43NDAxIDM3LjgxOTlMNzcuNDkwMSA0OS4xNDk5Qzc3LjM1MjIgNDkuMjkyNiA3Ny4yNDY1IDQ5LjQ2MzEgNzcuMTgwMSA0OS42NDk5TDczLjM0MDEgNjAuMDU5OUM3My4yNTA5IDYwLjMwMTYgNzMuMjMyNyA2MC41NjM2IDczLjI4NzcgNjAuODE1MkM3My4zNDI2IDYxLjA2NjggNzMuNDY4MyA2MS4yOTc1IDczLjY1MDEgNjEuNDc5OUM3My44MzU1IDYxLjY1NjkgNzQuMDY2NiA2MS43Nzg3IDc0LjMxNzQgNjEuODMxN0M3NC41NjgzIDYxLjg4NDcgNzQuODI4OSA2MS44NjY4IDc1LjA3MDEgNjEuNzc5OUw4NS40NTAxIDU3Ljg1OTlDODUuNjM5MyA1Ny43OTM2IDg1LjgxMDUgNTcuNjg0IDg1Ljk1MDEgNTcuNTM5OUw5Mi44NzAxIDUwLjUzOTlDOTIuNzcwMSA0OS45MDk5IDkyLjY2MDEgNDkuMjc5OSA5Mi41NDAxIDQ4LjY1OTlMODUuMTEwMSA1Ni4xNjk5Wk03NS4wMDAxIDYwLjEyOTlMNzguNDcwMSA1MS4yODk5TDgzLjgxMDEgNTYuNTg5OUw3NS4wMDAxIDYwLjEyOTlaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMzAuNDUwMyA3Ny42ODcyQzM1LjAxOTYgNzEuNzY3NSAzOS4xNjk4IDY1LjU0NTggNDIuODcxNSA1OS4wNjU5QzQ0LjYyMDIgNTUuODk3NyA0Ni4xIDUyLjU5MjggNDcuMjk1OCA0OS4xODVDNDcuODQgNDcuNjI1NSA0OC4zMDEzIDQ2LjA0MjcgNDguNjkxNyA0NC40NDgyQzQ5LjA4MjEgNDIuODUzOCA0OS43MDkxIDQxLjAyNjYgNDkuMTUzMSAzOS41NjAxQzQ4LjE4MyAzNy4wMjMgNDQuOTg5IDM3Ljk3NzMgNDMuNjk5NiAzOS42MTgzQzQxLjYwNTcgNDIuMzA2OCA0MC4zODcyIDQ2LjEyNDEgMzkuNDE3MiA0OS4zMzYzQzM3LjI4NCA1Ni4yODM2IDM2Ljc1ODUgNjMuNjEyNiAzNy44NzkzIDcwLjc4NTdDMzguMDU2OCA3MS45NDk1IDM4LjM3NjIgNzMuNDM5MiAzOS41MjM3IDc0LjA2NzdDNDAuOTMxNCA3NC44MjQyIDQyLjE2MTcgNzMuNzg4NCA0My4wNzI2IDcyLjgyMjRDNDUuNjY3IDcwLjAzMTQgNDcuNTczNSA2Ni42OTAzIDQ4LjY0NDQgNjMuMDU3OUM0OC42Njk3IDYyLjkxMyA0OC42NTAyIDYyLjc2NDEgNDguNTg4NSA2Mi42MzAzQzQ4LjUyNjcgNjIuNDk2NSA0OC40MjU1IDYyLjM4NDEgNDguMjk4IDYyLjMwNzZDNDguMTcwNSA2Mi4yMzEgNDguMDIyNiA2Mi4xOTQgNDcuODczNCA2Mi4yMDEyQzQ3LjcyNDIgNjIuMjA4NCA0Ny41ODA3IDYyLjI1OTUgNDcuNDYxNCA2Mi4zNDc5QzQ2LjE5OTQgNjMuNTExIDQ1LjIxODIgNjQuOTM3NCA0NC41ODk3IDY2LjUyMjRDNDMuOTYxMyA2OC4xMDczIDQzLjcwMTYgNjkuODEwNyA0My44Mjk3IDcxLjUwNzNDNDMuODMxNCA3MS42MTg1IDQzLjg1ODcgNzEuNzI3OSA0My45MDk3IDcxLjgyNzJDNDMuOTYwOCA3MS45MjY1IDQ0LjAzNDEgNzIuMDEzIDQ0LjEyNDEgNzIuMDgwM0M0NC4yMTQyIDcyLjE0NzYgNDQuMzE4NiA3Mi4xOTM4IDQ0LjQyOTUgNzIuMjE1NUM0NC41NDA0IDcyLjIzNzIgNDQuNjU0OSA3Mi4yMzM4IDQ0Ljc2NDIgNzIuMjA1NkM0Ni43OTY1IDcxLjQ1NzcgNDguNjU0MSA3MC4zMTM0IDUwLjIyNTUgNjguODQxNEM1MS43OTcgNjcuMzY5NCA1My4wNDk3IDY1LjYwMDEgNTMuOTA4NiA2My42Mzk4SDUyLjU3MTlDNTMuMDA2NCA2NC4yNzkyIDUzLjY1NjkgNjQuNzQ2NyA1NC40MDgxIDY0Ljk1OTdDNTUuMTU5NCA2NS4xNzI3IDU1Ljk2MyA2NS4xMTc0IDU2LjY3NjggNjQuODAzNkM1OC43MjMzIDY0LjA3MDQgNTkuNjIyNCA2MS45MTczIDYxLjQ3OTYgNjAuOTM5N0M2My41ODUzIDU5Ljc3NTkgNjYuMDkzMiA2MC42ODM2IDY4LjIyMjYgNjEuMjY1NkM3MC4yMjcxIDYxLjk0NzkgNzIuMzU3MyA2Mi4xOTc5IDc0LjQ2ODcgNjEuOTk4OEM3NS40MDMyIDYxLjg1OTEgNzUuMDAxIDYwLjQ2MjUgNzQuMDY2NSA2MC41OTA1QzcwLjI1NzMgNjEuMTQ5MiA2Ni43Njc1IDU4LjU2NTUgNjIuOTU4NCA1OC45OTYxQzYxLjM5MzkgNTkuMjA2MiA1OS45NTgyIDU5Ljk2MiA1OC45MTI2IDYxLjEyNTlDNTcuOTMwNyA2Mi4xMjY4IDU1LjIzMzUgNjUuMTQxMSA1My44NDk1IDYyLjk0MTVDNTMuNTg5MiA2Mi41MzQxIDUyLjgwODQgNjIuNDE3NyA1Mi41NzE5IDYyLjk0MTVDNTEuODA5MSA2NC43NDI3IDUwLjY4MTUgNjYuMzcyMyA0OS4yNTc5IDY3LjczMDlDNDcuODM0MiA2OS4wODk1IDQ2LjE0NDMgNzAuMTQ4NyA0NC4yOTEgNzAuODQzOUw0NS4yMjU2IDcxLjU1MzhDNDUuMDk2IDcwLjA0NjUgNDUuMzE2MiA2OC41MyA0NS44Njk1IDY3LjExODdDNDYuNDIyOCA2NS43MDc0IDQ3LjI5NDggNjQuNDM4MyA0OC40MTk2IDYzLjQwN0w0Ny4yMzY2IDYyLjcwODdDNDYuMzk5MiA2NS41MTA4IDQ1LjAzOTMgNjguMTM1MyA0My4yMjY0IDcwLjQ0ODJDNDIuODAwNSA3MC45ODM1IDQyLjM1MSA3MS41MDczIDQxLjg3NzggNzEuOTk2MUM0MS42NDAxIDcyLjMxNjMgNDEuMzA0MiA3Mi41NTI5IDQwLjkxOTYgNzIuNjcxMUw0MC40MTA5IDcyLjg5MjJDNDAuMDU0OCA3Mi42ODIzIDM5Ljc4OTUgNzIuMzUxIDM5LjY2NTYgNzEuOTYxMkMzOS4yMzU4IDcwLjYzNjcgMzkuMDE2MyA2OS4yNTQ4IDM5LjAxNSA2Ny44NjQ1QzM4LjQ0ODYgNjEuOTMxNiAzOS4wMTg0IDU1Ljk0NjkgNDAuNjk0OCA1MC4yMjA4QzQxLjUyMTEgNDcuMzQ5NyA0Mi42MzQ2IDQ0LjU2NjEgNDQuMDE5IDQxLjkxMTFDNDQuNjEwNCA0MC44MTcxIDQ2LjM4NDkgMzguMTYzNSA0Ny41Njc5IDQwLjA3MjJDNDguMzAxMyA0MS4yMzYgNDcuMzc4NiA0My41NjM3IDQ3LjA0NzQgNDQuNzg1N0M0NS41MjkyIDUwLjM4OTkgNDMuMjI4IDU1Ljc1OTggNDAuMjA5OCA2MC43NDE4QzM2LjgxNTYgNjYuMzMyNiAzMy4xMTk0IDcxLjc0MDYgMjkuMTM3MiA3Ni45NDIzQzI4LjU4MTIgNzcuNzEwNSAyOS44NTg4IDc4LjQzMiAzMC40MTQ4IDc3LjY4NzJIMzAuNDUwM1oiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=",
209
- category: "security",
210
- onRequest: true,
211
- onResponse: false
212
- },
213
- {
214
- id: "policy-generate-jwt",
215
- name: "Generate JWT",
216
- description: "Description of the Generate JWT Gravitee Policy",
217
- version: "1.5.0",
218
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:generatejwt:configuration:GenerateJwtPolicyConfiguration\",\n \"properties\" : {\n \"signature\": {\n \"title\": \"Signature\",\n \"description\": \"Define how the JSON Web Token must be signed.\",\n \"type\" : \"string\",\n \"default\": \"RSA_RS256\",\n \"enum\" : [\n \"RSA_RS256\",\n \"HMAC_HS256\",\n \"HMAC_HS384\",\n \"HMAC_HS512\"\n ],\n \"x-schema-form\": {\n \"type\": \"select\",\n \"titleMap\": {\n \"RSA_RS256\": \"RS256 - RSA signature with SHA-256\",\n \"HMAC_HS256\": \"HS256 - HMAC with SHA-256, requires 256+ bit secret\",\n \"HMAC_HS384\": \"HS384 - HMAC with SHA-384, requires 384+ bit secret\",\n \"HMAC_HS512\": \"HS512 - HMAC with SHA-512, requires 512+ bit secret\"\n }\n }\n },\n \"keyResolver\": {\n \"title\": \"Key resolver\",\n \"description\": \"Define how the private key / secret key must be resolved.\",\n \"type\" : \"string\",\n \"default\": \"INLINE\",\n \"enum\" : [\n \"INLINE\",\n \"PLAIN\",\n \"JKS\",\n \"PKCS12\"\n ],\n \"x-schema-form\": {\n \"type\": \"select\",\n \"titleMap\": {\n \"INLINE\": \"The content of the private key / secret key is provided inline\",\n \"PEM\": \"The content of the private key is provided by reading a PEM file from filesystem (only for RS algorithms)\",\n \"JKS\": \"The content of the private key is provided by reading a JKS file from filesystem (only for RS algorithms)\",\n \"PKCS12\": \"The content of the private key is provided by reading a PKCS12 file from filesystem (only for RS algorithms)\"\n }\n }\n },\n \"alias\" : {\n \"type\" : \"string\",\n \"title\": \"Key alias\",\n \"description\": \"Alias used to access a keystore entry (only for JKS and PKCS#12)\"\n },\n \"storepass\" : {\n \"type\" : \"string\",\n \"title\": \"Store password\",\n \"description\": \"Pass used to access the key store (only for JKS and PKCS#12)\"\n },\n \"keypass\" : {\n \"type\" : \"string\",\n \"title\": \"Key password\",\n \"description\": \"Pass used to access the particular key pair's private key (only for JKS)\"\n },\n \"kid\" : {\n \"type\" : \"string\",\n \"title\": \"Key ID\",\n \"description\": \"Specifies the key ID (kid) to include in the JWT header\"\n },\n \"x509CertificateChain\": {\n \"title\": \"Certificate chain\",\n \"description\": \"Whether a certificate chain should be added as an X5C attribute (only for RS256, JKS and PKCS#12)\",\n \"type\" : \"string\",\n \"default\": \"NONE\",\n \"enum\" : [\n \"NONE\",\n \"X5C\"\n ],\n \"x-schema-form\": {\n \"type\": \"select\",\n \"titleMap\": {\n \"NONE\": \"Do not add a certificate chain\",\n \"X5C\": \"Add a certificate chain as an X5C attribute\"\n }\n }\n },\n \"id\" : {\n \"type\" : \"string\",\n \"title\": \"JWT ID. Supports EL.\",\n \"description\": \"JWT ID (jti) claim is a unique identifier for the JWT. Defaults to UUID.\",\n \"x-schema-form\": {\n \"expression-language\": true\n }\n },\n \"audiences\" : {\n \"type\" : \"array\",\n \"title\": \"Audiences\",\n \"description\": \"Claim identifies the recipients that the JWT is intended for. Supports EL.\",\n \"items\" : {\n \"type\" : \"string\"\n }\n },\n \"issuer\" : {\n \"type\" : \"string\",\n \"title\": \"Issuer\",\n \"description\": \"Claim that identifies the issuer of the JWT. Supports EL.\",\n \"default\": \"urn://gravitee-api-gw\",\n \"x-schema-form\": {\n \"expression-language\": true\n }\n },\n \"expiresIn\" : {\n \"type\" : \"integer\",\n \"title\": \"Expires in\",\n \"description\": \"Lifespan of the JWT\",\n \"default\": 30\n },\n \"expiresInUnit\" : {\n \"type\" : \"string\",\n \"title\": \"Expires in unit\",\n \"description\": \"Lifespan of the JWT in seconds, minutes, hours, or days.\",\n \"enum\" : [ \"SECONDS\", \"MINUTES\", \"HOURS\", \"DAYS\" ],\n \"default\": \"SECONDS\"\n },\n \"subject\" : {\n \"type\" : \"string\",\n \"title\": \"Subject\",\n \"description\": \"Claim identifies or makes a statement about the subject of the JWT. Supports EL.\",\n \"x-schema-form\": {\n \"expression-language\": true\n }\n },\n \"content\" : {\n \"type\" : \"string\",\n \"title\": \"Private key / Secret key / key store path\",\n \"description\": \"Specifies a PEM-encoded private key used to sign the JWT or the secret key used to sign tokens with an HMAC algorithm, or the path to your key store\",\n \"x-schema-form\": {\n \"type\": \"codemirror\",\n \"codemirrorOptions\": {\n \"placeholder\": \"Put PEM-encoded private key or the secret key or the path to your key store\",\n \"lineWrapping\": true,\n \"lineNumbers\": true,\n \"allowDropFileTypes\": true\n }\n }\n },\n \"customClaims\" : {\n \"type\" : \"array\",\n \"title\": \"Custom claims\",\n \"description\": \"Specify additional claim name/value pair(s) in the payload of the JWT\",\n \"items\" : {\n \"type\" : \"object\",\n \"title\": \"Claim\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:generatejwt:model:Claim\",\n \"properties\" : {\n \"name\" : {\n \"type\" : \"string\",\n \"title\": \"Name\",\n \"description\": \"Name of the claim\"\n },\n \"value\" : {\n \"type\" : \"string\",\n \"title\": \"Value\",\n \"description\": \"Value of the claim. Supports EL.\",\n \"x-schema-form\": {\n \"expression-language\": true\n }\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ]\n }\n }\n },\n \"required\": [\n \"signature\",\n \"keyResolver\",\n \"content\"\n ]\n}\n",
219
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOjAuMDFlbTt9LmNscy01e2xldHRlci1zcGFjaW5nOjBlbTt9LmNscy02e2xldHRlci1zcGFjaW5nOjBlbTt9LmNscy03e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fS5jbHMtOHtsZXR0ZXItc3BhY2luZzowLjAzZW07fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJBUEkiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTUwLjM1LDEzLjM3YTQzLDQzLDAsMSwwLDQzLjA1LDQzQTQzLDQzLDAsMCwwLDUwLjM1LDEzLjM3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTcwLjkzLDY3LjkzbC05LjA1LDlhMS44NCwxLjg0LDAsMCwxLTIuNjIsMGwtMjQuMS0yNC4xYTEuODUsMS44NSwwLDAsMS0uNDQtLjdMMjkuMzUsMzcuNzlhMS44NywxLjg3LDAsMCwxLC40My0yLDEuODUsMS44NSwwLDAsMSwxLjk1LS40MmwxNC40LDUuMzdhMS44NSwxLjg1LDAsMCwxLC43LjQzbDI0LjEsMjQuMTFBMS44NSwxLjg1LDAsMCwxLDcwLjkzLDY3LjkzWm0tMTAsNy43LDguNDYtOC40Ni0yMy45LTIzLjktOC40NSw4LjQ2Wk0zNi40OSw0OS45bDcuMzYtNy4zNUwzMS42MywzNy42OVoiLz48L2c+PGcgaWQ9IkhPU1RJTkciPjx0ZXh0IGNsYXNzPSJjbHMtMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTcuOTMgLTQuOTgpIj48dHNwYW4gY2xhc3M9ImNscy00Ij5HPC90c3Bhbj48dHNwYW4geD0iNy44MSIgeT0iMCI+ZW5lPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy01IiB4PSIyNi41IiB5PSIwIj5yPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy02IiB4PSIzMC4zNiIgeT0iMCI+YTwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNyIgeD0iMzYuMSIgeT0iMCI+dDwvdHNwYW4+PHRzcGFuIHg9IjQwIiB5PSIwIj5lIEo8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTgiIHg9IjUyLjk5IiB5PSIwIj5XPC90c3Bhbj48dHNwYW4geD0iNjMuNTQiIHk9IjAiPlQ8L3RzcGFuPjwvdGV4dD48L2c+PC9zdmc+",
220
- category: "security",
221
- onRequest: true,
222
- onResponse: false
223
- },
224
- {
225
- id: "groovy",
226
- name: "Groovy",
227
- description: "Description of the Groovy Gravitee Policy",
228
- version: "1.16.0",
229
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:groovy:configuration:GroovyPolicyConfiguration\",\n \"properties\" : {\n \"scope\" : {\n \"title\": \"Scope\",\n \"type\" : \"string\",\n \"default\": \"REQUEST\",\n \"enum\" : [ \"REQUEST\", \"RESPONSE\"],\n \"x-schema-form\": {\n \"hidden\": true\n }\n },\n \"onRequestScript\" : {\n \"title\": \"On-request script\",\n \"description\": \"Groovy script to evaluate during the OnRequest phase.\",\n \"type\" : \"string\",\n \"x-schema-form\": {\n \"type\": \"codemirror\",\n \"codemirrorOptions\": {\n \"placeholder\": \"Put your groovy script here or drag'n'drop groovy script\",\n \"lineWrapping\": true,\n \"lineNumbers\": true,\n \"allowDropFileTypes\": true,\n \"autoCloseTags\": true,\n \"mode\": \"groovy\"\n },\n \"hidden\": [\n {\n \"$eq\": {\n \"scope\": \"RESPONSE\"\n }\n }\n ]\n }\n },\n \"onResponseScript\" : {\n \"title\": \"On-response script\",\n \"description\": \"Groovy script to evaluate during the OnResponse phase.\",\n \"type\" : \"string\",\n \"x-schema-form\": {\n \"type\": \"codemirror\",\n \"codemirrorOptions\": {\n \"placeholder\": \"Put your groovy script here or drag'n'drop groovy script\",\n \"lineWrapping\": true,\n \"lineNumbers\": true,\n \"allowDropFileTypes\": true,\n \"autoCloseTags\": true,\n \"mode\": \"groovy\"\n },\n \"hidden\": [\n {\n \"$eq\": {\n \"scope\": \"REQUEST\"\n }\n }\n ]\n }\n },\n \"onRequestContentScript\" : {\n \"title\": \"On-request content script\",\n \"description\": \"Groovy script to evaluate during the 'request-content' phase. <br> Useful to transform request content\",\n \"type\" : \"string\",\n \"x-schema-form\": {\n \"type\": \"codemirror\",\n \"codemirrorOptions\": {\n \"placeholder\": \"Put your groovy script here or drag'n'drop groovy script\",\n \"lineWrapping\": true,\n \"lineNumbers\": true,\n \"allowDropFileTypes\": true,\n \"autoCloseTags\": true,\n \"mode\": \"groovy\"\n },\n \"hidden\": [\n {\n \"$eq\": {\n \"scope\": \"RESPONSE\"\n }\n }\n ]\n }\n },\n \"onResponseContentScript\" : {\n \"title\": \"On-response content script\",\n \"description\": \"Groovy script to evaluate during the 'response-content' phase. <br> Useful to transform response content\",\n \"type\" : \"string\",\n \"x-schema-form\": {\n \"type\": \"codemirror\",\n \"codemirrorOptions\": {\n \"placeholder\": \"Put your groovy script here or drag'n'drop groovy script\",\n \"lineWrapping\": true,\n \"lineNumbers\": true,\n \"allowDropFileTypes\": true,\n \"autoCloseTags\": true,\n \"mode\": \"groovy\"\n },\n \"hidden\": [\n {\n \"$eq\": {\n \"scope\": \"REQUEST\"\n }\n }\n ]\n }\n }\n }\n}\n",
230
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkFQSSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMzUsMTQuMjRhNDMsNDMsMCwxLDAsNDMuMDUsNDNBNDMsNDMsMCwwLDAsNTAuMzUsMTQuMjRaIi8+PC9nPjxnIGlkPSJIT1NUSU5HIj48ZyBpZD0iV0VWQXNyLnRpZiI+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNDkuNzUsMzYuMjgsNTUsNDUuMDZsMi43NCw0LjU1YS43LjcsMCwwLDAsLjI0LjI3Yy42NS4zNSwxLjMxLjY4LDIsMWEyLjY2LDIuNjYsMCwwLDEsLjM4LS40LDEuNzMsMS43MywwLDAsMSwxLjg4LS4yNy41OC41OCwwLDAsMCwuNTMsMCw0LDQsMCwwLDEsMy4yNi4yN2MuMjUuMTMuNDkuMjkuNzMuNDMuNzktMS4yMSwyLjUyLTEuNTQsMy41Ni4zMmE2LjkzLDYuOTMsMCwwLDEsLjg4LTEsMS41OSwxLjU5LDAsMCwxLC45MS0uMjksNi42Miw2LjYyLDAsMCwxLDEuNjYuMTQsMS43NCwxLjc0LDAsMCwxLDEuMzcsMS42M2MwLC4yLjA5LjMuMzIuM0w4OC45Miw1MmMuNjUsMCwxLjMsMCwyLC4wNmwtLjI4LjEyTDc2LjgxLDU3LjMxYy0uMjUuMDktLjMzLjE3LS4yNS40NmEyNy43NCwyNy43NCwwLDAsMSwuNzIsM2MuNCwyLjQyLjI5LDQuNzgtMS4yNSw2Ljg1YTcuMjMsNy4yMywwLDAsMS00LjI0LDIuODhjLS4yNy4wNy0uNTQuMDktLjg2LjE0bDQuMyw2Ljc0LDAsLjA3LTEuMjQtLjQ3TDUwLjA1LDY3LjY2YS43Ni43NiwwLDAsMC0uNjEsMEwyNC42NSw3Ny4yOGwtLjQ0LjE0LDcuMTYtMTEuMjFjLS42OC4xOC0xLjI4LjMyLTEuODcuNDlzLS45NS4zLTEuNDEuNDdhMS44NCwxLjg0LDAsMCwxLTIuNDEtMSw5LjM3LDkuMzcsMCwwLDAtMi0yLjkzLDEuODUsMS44NSwwLDAsMSwuNzItMy4wNiwzLjU2LDMuNTYsMCwwLDEsLjM5LS4xM2wtMS0uN2E0LjMxLDQuMzEsMCwwLDEtMS4zNy0xLjkyLjY3LjY3LDAsMCwwLS40MS0uNDFMOC44Nyw1Mi4xNUEuNTYuNTYsMCwwLDEsOC42LDUySDlMMjIuNjMsNTJhLjU3LjU3LDAsMCwwLC41Ni0uMzEsMzAuNTcsMzAuNTcsMCwwLDEsNS45Mi03LjQyLDYuNTcsNi41NywwLDAsMSwzLjA3LTEuNywyLjg0LDIuODQsMCwwLDEsMy4zNywxLjc3LDUuODYsNS44NiwwLDAsMSwuMzYsMS43MiwxMC41OCwxMC41OCwwLDAsMS0uMzEsMy4zMS4zMy4zMywwLDAsMCwuMDYuMjcsMi4zMywyLjMzLDAsMCwxLC44MSwxLjg4YzAsLjEuMDUuMi4wOC4zNy40Ni0uNi44My0xLjI0LDEuNTgtMS4zOWExLjg3LDEuODcsMCwwLDEsMS44NS41NWwxLjA3LS41NWEuNy43LDAsMCwwLC4yMi0uMmw4LjM4LTEzLjk1YS4zOC4zOCwwLDAsMCwwLS4xWm0yMiwzOC4yMmMtLjEtLjE3LS4xNS0uMjctLjIxLS4zNi0uNy0xLjEtMS40Mi0yLjE5LTIuMS0zLjNhLjU3LjU3LDAsMCwwLS43Ni0uMyw3LjgsNy44LDAsMCwxLTIuODguMzIsMi4xNywyLjE3LDAsMCwxLTEuODctMS41OSwxLjg2LDEuODYsMCwwLDEsMS0yLjA5LDEuNTksMS41OSwwLDAsMCwuNzUtMS4wNiwyLjQ5LDIuNDksMCwwLDAsMC0xLjEyYy0uMTQtLjQtLjMxLS44NS0uODUtMWE0LjEyLDQuMTIsMCwwLDEtMS0uNDksNS41Nyw1LjU3LDAsMCwxLTIuMDctMi44NGMtLjEtLjI3LS4xOS0uNTYtLjMtLjg2LTEuOSwzLTYuNDUsMy04LjY0LjUyLTIuMTEsMi41OC01LjQ5LDIuODItNy4zMSwxLjM1YTEsMSwwLDAsMC0uMDcuMTUsMS44OSwxLjg5LDAsMCwxLTEsMS4yOCw1LjY3LDUuNjcsMCwwLDEtMi4yMy43MSwzLjE3LDMuMTcsMCwwLDEtMi43OS0uOTMsMTQsMTQsMCwwLDEtMS4xMS0xLjU0Yy0uMDYuMTQtLjE1LjM1LS4yNS41NWE3LjU1LDcuNTUsMCwwLDEtNC4wNiwzLjUyLDEuMTksMS4xOSwwLDAsMC0uNTMuNDRRMzAuNzEsNzAsMjguMDksNzQuMDZsLS4yNi40Mi4yOC0uMDhxMTAuNjgtNC4xNCwyMS4zNi04LjI3YS45MS45MSwwLDAsMSwuNjEsMHE5LjY4LDMuNzIsMTkuMzMsNy40OFpNMjkuODQsNDhBNy44Niw3Ljg2LDAsMCwwLDI3LjczLDUxYTUsNSwwLDAsMC0uNDcsMi4zNiwxLjU3LDEuNTcsMCwwLDAsMS4yNiwxLjYyLDMuMjQsMy4yNCwwLDAsMCwxLjI4LS4wOCw0LjIxLDQuMjEsMCwwLDAsMi0xLjQ2LDkuNSw5LjUsMCwwLDAsMi00LjQ2LDguNjQsOC42NCwwLDAsMCwuMjItMy4yYy0uMjEtMS4zMi0uOTQtMS43MS0yLjEyLTEuMDdBOS40MSw5LjQxLDAsMCwwLDMwLDQ2LjA3YTI5LjM2LDI5LjM2LDAsMCwwLTUsNi4yN0E3LjQ2LDcuNDYsMCwwLDAsMjQsNTVhMy4wNSwzLjA1LDAsMCwwLDEuODgsMy41MSw0Ljg5LDQuODksMCwwLDAsMi44My4yNSw2LjgxLDYuODEsMCwwLDAsNC41LTMuMjgsMjEsMjEsMCwwLDAsLjkzLTEuOWwuMDUuMTFhMy44MiwzLjgyLDAsMCwxLDAsNCw3LjExLDcuMTEsMCwwLDEtMi41MSwxLjk0LDMxLjM4LDMxLjM4LDAsMCwxLTUuMTYsMS45M0wyNSw2MmE5Ljc5LDkuNzksMCwwLDEsMi4zNiwzLjQxYzEuNzctLjUxLDMuNTMtMSw1LjI2LTEuNTJhOC41NCw4LjU0LDAsMCwwLDIuMTMtMS4wOCwzLjg2LDMuODYsMCwwLDAsMS44LTMuOTJjLS4xLS42NC0uMjMtMS4yOC0uMzktMS45MS0uNTItMS45My0xLjQxLTMuNzUtMS42My01Ljc2bC0uMTksMC0uMTkuMDVhOS41OCw5LjU4LDAsMCwxLS44NSwzLDcuMDgsNy4wOCwwLDAsMS0zLjExLDMuNDYsMy4yMiwzLjIyLDAsMCwxLTQuNzItMi4xLDUuNjgsNS42OCwwLDAsMSwuNjQtNC4zNywyMi4zNSwyMi4zNSwwLDAsMSwzLjUyLTQuNjRBNi4zNiw2LjM2LDAsMCwxLDMxLjgsNDVjLjgtLjMsMS4yMi0uMDcsMS4zOS43N2EyLjEyLDIuMTIsMCwwLDEsLjA1LjQ0LDE0LjEsMTQuMSwwLDAsMS0uNyw0LjMyQTYuMzksNi4zOSwwLDAsMSwzMS40Niw1M2E0LjA3LDQuMDcsMCwwLDEtMSwuODQuODYuODYsMCwwLDEtMS4zNi0uNTksMi4zMywyLjMzLDAsMCwxLDAtMS4yQTgsOCwwLDAsMSwzMCw1MC40M2ExLjM4LDEuMzgsMCwwLDAsLjE0LTEuMzZBOC44OSw4Ljg5LDAsMCwxLDI5Ljg0LDQ4Wm0yNi4yMiwxLjUzTDQ5Ljc3LDM5LjEyLDQyLjY5LDUwLjg3YTIuOSwyLjksMCwwLDEsMS43MS0uMjMsMS45MiwxLjkyLDAsMCwxLDEuMzIsMS4xNWMuOTMtMS4xMSwxLjk0LTIuMDcsMy41MS0yYTQuMzQsNC4zNCwwLDAsMSwzLjcsMS43QTQsNCwwLDAsMSw1Ni4wNiw0OS41NlptMTYuMjUsMi4zLjQ2Ljg2YTEwLDEwLDAsMCwxLDEuMDksMi42OSwzLjQ0LDMuNDQsMCwwLDEtLjI3LDIuNCwxLjQsMS40LDAsMCwxLTIuNTQuMTcsNC42MSw0LjYxLDAsMCwxLS41OS0xLjEyYy0uMzctMS0uNjktMi4wOC0xLTMuMTFhNiw2LDAsMCwwLS45NC0xLjg5bC0uMzYuNjdBNC40Nyw0LjQ3LDAsMCwxLDY5LjMzLDU1Yy4zLDEuNjguNDksMy4zOS43OSw1LjA4YTE1LjI4LDE1LjI4LDAsMCwwLC42MywyLjQ4LDEuNSwxLjUsMCwwLDAsMi45MS4wOSw4LjA4LDguMDgsMCwwLDAsLjU2LTEuNzljLjEzLS43Ni4xNC0xLjU0LjItMi4zM0ExMy44NSwxMy44NSwwLDAsMSw3NC43Nyw2MmE0LjEsNC4xLDAsMCwxLTQuODcsNGMtMS0uMTgtMi4wNS0uNDUtMy4wOS0uNjhBMy43MSwzLjcxLDAsMCwxLDY0Ljk0LDY5Yy4yOC4wNi40My4xMS41OC4xM2wxLjM3LjFhMTEsMTEsMCwwLDAsNC4zMi0uMzMsNiw2LDAsMCwwLDQuMTYtNC4yNCw4LjE3LDguMTcsMCwwLDAsMC00LjA4Yy0uNjItMi42NS0xLjI2LTUuMzEtMS44OC04LS4yMS0uODgtLjIxLS44OC0xLjEyLS44MVptLTE5LDQuMjljMCwyLjUsMSwzLjc0LDMuMDcsNC4wOEEzLjIxLDMuMjEsMCwwLDAsNjAsNTguMzFhNC43MSw0LjcxLDAsMCwwLC4zMy0zLjExLDQuNTMsNC41MywwLDAsMC0zLjE5LTMuNjIsMiwyLDAsMCwwLTIuNjYsMUE3LjYzLDcuNjMsMCwwLDAsNTMuMzIsNTYuMTVaTTYxLDUyLjYyYTQuNzUsNC43NSwwLDAsMSwxLDJjLjE2LjU2LjI4LDEuMTUuNDMsMS43Mi4zMiwxLjI4LjYxLDIuNTYsMSwzLjgyQTMuMDcsMy4wNywwLDAsMCw2NC43NSw2MmExLjcxLDEuNzEsMCwwLDAsMi42MS0uNTcsNC4yMSw0LjIxLDAsMCwwLC4zNC0uNzUsNy44Nyw3Ljg3LDAsMCwwLC4xNi00LjE3QTcuMjMsNy4yMywwLDAsMCw2Ni4yMiw1M2EyLjkxLDIuOTEsMCwwLDAtMi4zMi0xLjA3LjY4LjY4LDAsMCwwLS42Ni40NSwyLDIsMCwwLDAsMS4zMiwyLjM2Yy4wOC0uMTguMTYtLjM3LjIzLS41NmEuOTEuOTEsMCwwLDAtLjExLTEsMS44LDEuOCwwLDAsMS0uMjEtLjU4LDEuNDEsMS40MSwwLDAsMSwxLjM0LjM4LDMuOTQsMy45NCwwLDAsMSwxLjMzLDIuNjcsMi40LDIuNCwwLDAsMS0uODEsMi4xNiwxLjU5LDEuNTksMCwwLDEtLjc4LjM4LDIsMiwwLDAsMS0yLS45MkE1LjE2LDUuMTYsMCwwLDEsNjMsNTZjLS4yOS0uOTItLjUtMS44NS0uNzgtMi43N2E5LDksMCwwLDAtLjU2LTEuMjVabS04LjY1LDMuMjJhNS42MSw1LjYxLDAsMCwwLS43LTIuODYsMi4xMywyLjEzLDAsMCwwLTEuODgtMS4xOSwyLjUsMi41LDAsMCwxLS41NC0uMDcsMS4xOCwxLjE4LDAsMCwwLTEsLjIxLDQuMjgsNC4yOCwwLDAsMC0uNzIuNjIsNy43LDcuNywwLDAsMC0xLjc5LDYuMSwyLjE5LDIuMTksMCwwLDAsMS43MywyLDMuNTcsMy41NywwLDAsMCwxLjg2LS4xN0E1LDUsMCwwLDAsNTIuMzgsNTUuODRabS05LDIuNTMtLjYuMjhjLS4zNS4xNC0uNy4yOS0xLC40YTEsMSwwLDAsMS0xLjA4LS4yNiw0LjgxLDQuODEsMCwwLDEtMS4zMy0zLjQ5LjU5LjU5LDAsMCwxLC45NC0uNDhsLjkuNWExLjEsMS4xLDAsMCwwLDEsMCwzLjE4LDMuMTgsMCwwLDAsMS42Ny0yLDQuODYsNC44NiwwLDAsMCwuMDctLjhjLS4zOS4wNy0uNTEuMzYtLjY5LjU5LS40Ny42My0xLjA4LjU2LTEuNDMtLjE1LS4xLS4yLS4yMy0uMzgtLjM2LS41OS0uMjguMzgtLjUuNzItLjc2LDFhNy41Nyw3LjU3LDAsMCwxLS44MS44OWMtLjQ2LjQxLS42NC4zNy0uODQtLjIxcy0uMzQtMS4wOS0uNTItMS42OGwtMSwxLjMzQTMuMzUsMy4zNSwwLDAsMSwzOSw1NS45MWMuMi44My4zMSwxLjY4LjQ5LDIuNTJzLjM3LDEuNjcuNjMsMi40OGExLjQyLDEuNDIsMCwwLDAsMS4yMSwxLDMuMjIsMy4yMiwwLDAsMCwyLS40NS4zNi4zNiwwLDAsMCwuMDgtLjI4YzAtLjU5LS4wNy0xLjE5LS4wOC0xLjc4QTguNDUsOC40NSwwLDAsMSw0My40Myw1OC4zN1ptMzIuNzUtMi4zMiw5LTMuMzVINzUuNDZaTTE0LjM5LDUyLjcsMjIsNTUuNTJsLjYyLTIuODJabTU0LjM4LDEwLS40NS41My42MiwwWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTY4Ljc3LDYyLjY5bC4xNy41LS42MiwwWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTU1LjUsNTEuOTJhMS45MiwxLjkyLDAsMCwwLS4yNSwxLjM0LDEuNjMsMS42MywwLDAsMCwuOSwxLjE4LDEuMTQsMS4xNCwwLDAsMCwxLjI4LS4xOS4zOS4zOSwwLDAsMCwwLS4zOCwzLDMsMCwwLDAtLjQ2LS40OWwtLjU3LS41Yy0uMTctLjE3LS4zMi0uNC0uMTctLjYxYS44My44MywwLDAsMSwuNTYtLjM2LDEuODYsMS44NiwwLDAsMSwuOTEuMjMsNC41MSw0LjUxLDAsMCwxLDIsMi4wNiwxLjcxLDEuNzEsMCwwLDEtLjY0LDIuMzksMi45MSwyLjkxLDAsMCwxLTMuNCwwLDMsMywwLDAsMS0xLTMuNDFBMi41LDIuNSwwLDAsMSw1NS41LDUxLjkyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTQ4LjMzLDUyLjI1YTgsOCwwLDAsMC0uMzksMS4zLDIuNDQsMi40NCwwLDAsMCwuMDksMSwuOTIuOTIsMCwwLDAsLjkuNjdBMS4xOSwxLjE5LDAsMCwwLDUwLDU0LjcxYy4wNy0uMSwwLS4zOC0uMDktLjUxYTkuMjIsOS4yMiwwLDAsMC0uNjktLjcxYy0uMzMtLjM2LS4zOC0uNjMtLjItLjkyYS44OC44OCwwLDAsMSwxLS4zNiwxLjI4LDEuMjgsMCwwLDEsLjQzLjE5LDMuNDcsMy40NywwLDAsMSwxLjU4LDIuNjgsMS43MywxLjczLDAsMCwxLS4yMy45NCwzLjQyLDMuNDIsMCwwLDEtMi40OCwxLjc4LDEuODYsMS44NiwwLDAsMS0xLjg5LS44NkEzLjcyLDMuNzIsMCwwLDEsNDguMzMsNTIuMjVaIi8+PC9nPjwvZz48L3N2Zz4=",
231
- category: "others",
232
- onRequest: true,
233
- onResponse: true
234
- },
235
- {
236
- id: "html-json",
237
- name: "HTML to JSON",
238
- description: "The HTML to JSON Transformation Gravitee Policy allows to get a json by parsing an html content",
239
- version: "1.6.0",
240
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:html2Json:HTMLToJSONTransformationPolicyConfiguration\",\n \"properties\" : {\n \"selectors\" : {\n \"type\" : \"array\",\n \"items\" : {\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:html2Json:HTMLToJSONTransformationPolicyConfiguration:Selector\",\n \"properties\" : {\n \"jsonName\" : {\n \"type\" : \"string\"\n },\n \"selector\" : {\n \"type\" : \"string\"\n },\n \"array\" : {\n \"type\" : \"boolean\"\n }\n }\n }\n }\n }\n}",
241
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJBUEkiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTUwLjM1LDEzLjM3YTQzLDQzLDAsMSwwLDQzLjA1LDQzQTQzLDQzLDAsMCwwLDUwLjM1LDEzLjM3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTczLjkyLDc4LjU5SDI2Ljc5YTMuMzUsMy4zNSwwLDAsMS0zLjM1LTMuMzV2LTMwYTEsMSwwLDAsMSwxLTFINzYuMjNhMSwxLDAsMCwxLDEsMVY3NS4yNEEzLjM1LDMuMzUsMCwwLDEsNzMuOTIsNzguNTlaTTI1LjUxLDQ2LjIzdjI5YTEuMjgsMS4yOCwwLDAsMCwxLjI4LDEuMjhINzMuOTJhMS4yOCwxLjI4LDAsMCwwLDEuMjgtMS4yOHYtMjlaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNzYuMjMsNDYuMjNIMjQuNDhhMSwxLDAsMCwxLTEtMVYzNy41N2EzLjM1LDMuMzUsMCwwLDEsMy4zNS0zLjM0SDczLjkyYTMuMzUsMy4zNSwwLDAsMSwzLjM1LDMuMzR2Ny42MkExLDEsMCwwLDEsNzYuMjMsNDYuMjNaTTI1LjUxLDQ0LjE2SDc1LjJWMzcuNTdhMS4yOCwxLjI4LDAsMCwwLTEuMjgtMS4yN0gyNi43OWExLjI3LDEuMjcsMCwwLDAtMS4yOCwxLjI3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTM5LDQwLjIzYTEuNjEsMS42MSwwLDEsMCwxLjYxLTEuNjFBMS42MSwxLjYxLDAsMCwwLDM5LDQwLjIzWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTM0LjA4LDQwLjIzYTEuNjIsMS42MiwwLDEsMCwxLjYyLTEuNjFBMS42MiwxLjYyLDAsMCwwLDM0LjA4LDQwLjIzWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTI5LjE2LDQwLjIzYTEuNjEsMS42MSwwLDEsMCwxLjYxLTEuNjFBMS42MSwxLjYxLDAsMCwwLDI5LjE2LDQwLjIzWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUwLjM1LDY3YTUuODUsNS44NSwwLDEsMSw1Ljg1LTUuODVBNS44Niw1Ljg2LDAsMCwxLDUwLjM1LDY3Wm0wLTEwYTQuMTMsNC4xMywwLDEsMCw0LjE0LDQuMTNBNC4xNCw0LjE0LDAsMCwwLDUwLjM1LDU3WiIvPjwvZz48ZyBpZD0iSE9TVElORyI+PHRleHQgY2xhc3M9ImNscy0zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy45MyAtNC45OCkiPkhUTUwgPHRzcGFuIGNsYXNzPSJjbHMtNCIgeD0iMzEuNjQiIHk9IjAiPnQ8L3RzcGFuPjx0c3BhbiB4PSIzNS41NCIgeT0iMCI+byBKU09OPC90c3Bhbj48L3RleHQ+PC9nPjwvc3ZnPg==",
242
- category: "transformation",
243
- onRequest: false,
244
- onResponse: true
245
- },
246
- {
247
- id: "policy-http-callout",
248
- name: "HTTP Callout",
249
- description: "Description of the CalloutHttp Gravitee Policy",
250
- version: "1.14.0",
251
- schema: "{\n \"type\": \"object\",\n \"id\": \"urn:jsonschema:io:gravitee:policy:callout:configuration:CalloutHttpPolicyConfiguration\",\n \"properties\": {\n \"scope\": {\n \"title\": \"Scope\",\n \"description\": \"Execute policy on <strong>request</strong> (HEAD) phase, <strong>response</strong> (HEAD) phase, <strong>request_content</strong> (includes payload) phase, <strong>response content</strong> (includes payload) phase.\",\n \"type\": \"string\",\n \"default\": \"REQUEST\",\n \"enum\": [\n \"REQUEST\",\n \"RESPONSE\",\n \"REQUEST_CONTENT\",\n \"RESPONSE_CONTENT\"\n ],\n \"deprecated\": true\n },\n \"method\": {\n \"title\": \"HTTP Method\",\n \"description\": \"HTTP method to invoke the endpoint.\",\n \"type\": \"string\",\n \"default\": \"GET\",\n \"enum\": [\n \"GET\",\n \"POST\",\n \"PUT\",\n \"DELETE\",\n \"PATCH\",\n \"HEAD\",\n \"CONNECT\",\n \"OPTIONS\",\n \"TRACE\"\n ]\n },\n \"useSystemProxy\": {\n \"title\": \"Use system proxy\",\n \"description\": \"Use the system proxy configured by your administrator.\",\n \"type\": \"boolean\"\n },\n \"url\": {\n \"title\": \"URL\",\n \"type\": \"string\"\n },\n \"headers\": {\n \"type\": \"array\",\n \"title\": \"Request Headers\",\n \"items\": {\n \"type\": \"object\",\n \"id\": \"urn:jsonschema:io:gravitee:policy:callout:configuration:HttpHeader\",\n \"title\": \"Header\",\n \"properties\": {\n \"name\": {\n \"title\": \"Name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"title\": \"Value\",\n \"type\": \"string\"\n }\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ]\n },\n \"body\": {\n \"title\": \"Request body\",\n \"type\": \"string\",\n \"x-schema-form\": {\n \"type\": \"codemirror\",\n \"codemirrorOptions\": {\n \"placeholder\": \"Put request body here\",\n \"lineWrapping\": true,\n \"lineNumbers\": true,\n \"allowDropFileTypes\": true,\n \"autoCloseTags\": true\n }\n }\n },\n \"fireAndForget\": {\n \"title\": \"Fire & forget\",\n \"description\": \"Make the http call without expecting any response. When activating this mode, context variables and exit on error are useless.\",\n \"type\": \"boolean\",\n \"default\": false\n },\n \"variables\": {\n \"type\": \"array\",\n \"title\": \"Context variables\",\n \"items\": {\n \"type\": \"object\",\n \"id\": \"urn:jsonschema:io:gravitee:policy:callout:configuration:Variable\",\n \"title\": \"Variable\",\n \"properties\": {\n \"name\": {\n \"title\": \"Name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"title\": \"Value\",\n \"type\": \"string\",\n \"default\": \"{#jsonPath(#calloutResponse.content, '$.field')}\"\n }\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"x-schema-form\": {\n \"hidden\": [\n {\n \"$eq\": {\n \"fireAndForget\": true\n }\n }\n ]\n }\n },\n \"exitOnError\": {\n \"title\": \"Exit on error\",\n \"description\": \"Terminate the request if the error condition is true\",\n \"type\": \"boolean\",\n \"default\": false,\n \"x-schema-form\": {\n \"hidden\": [\n {\n \"$eq\": {\n \"fireAndForget\": true\n }\n }\n ]\n }\n },\n \"errorCondition\": {\n \"title\": \"Error condition\",\n \"description\": \"The condition which will be verified to end the request (support EL).\",\n \"default\": \"{#calloutResponse.status >= 400 and #calloutResponse.status <= 599}\",\n \"type\": \"string\",\n \"x-schema-form\": {\n \"expression-language\": true,\n \"hidden\": [\n {\n \"$eq\": {\n \"fireAndForget\": true,\n \"exitOnError\": false\n }\n }\n ]\n }\n },\n \"errorStatusCode\": {\n \"title\": \"Error status code\",\n \"description\": \"HTTP Status Code send to the consumer if the condition is true\",\n \"type\": \"string\",\n \"default\": \"500\",\n \"enum\": [\n \"100\",\n \"101\",\n \"102\",\n \"200\",\n \"201\",\n \"202\",\n \"203\",\n \"204\",\n \"205\",\n \"206\",\n \"207\",\n \"300\",\n \"301\",\n \"302\",\n \"303\",\n \"304\",\n \"305\",\n \"307\",\n \"400\",\n \"401\",\n \"402\",\n \"403\",\n \"404\",\n \"405\",\n \"406\",\n \"407\",\n \"408\",\n \"409\",\n \"410\",\n \"411\",\n \"412\",\n \"413\",\n \"414\",\n \"415\",\n \"416\",\n \"417\",\n \"422\",\n \"423\",\n \"424\",\n \"429\",\n \"500\",\n \"501\",\n \"502\",\n \"503\",\n \"504\",\n \"505\",\n \"507\"\n ],\n \"x-schema-form\": {\n \"type\": \"select\",\n \"titleMap\": {\n \"100\": \"100 - CONTINUE\",\n \"101\": \"101 - SWITCHING_PROTOCOLS\",\n \"102\": \"102 - PROCESSING\",\n \"200\": \"200 - OK\",\n \"201\": \"201 - CREATED\",\n \"202\": \"202 - ACCEPTED\",\n \"203\": \"203 - NON_AUTHORITATIVE_INFORMATION\",\n \"204\": \"204 - NO_CONTENT\",\n \"205\": \"205 - RESET_CONTENT\",\n \"206\": \"206 - PARTIAL_CONTENT\",\n \"207\": \"207 - MULTI_STATUS\",\n \"300\": \"300 - MULTIPLE_CHOICES\",\n \"301\": \"301 - MOVED_PERMANENTLY\",\n \"302\": \"302 - FOUND OR MOVED_TEMPORARILY\",\n \"303\": \"303 - SEE_OTHER\",\n \"304\": \"304 - NOT_MODIFIED\",\n \"305\": \"305 - USE_PROXY\",\n \"307\": \"307 - TEMPORARY_REDIRECT\",\n \"400\": \"400 - BAD_REQUEST\",\n \"401\": \"401 - UNAUTHORIZED\",\n \"402\": \"402 - PAYMENT_REQUIRED\",\n \"403\": \"403 - FORBIDDEN\",\n \"404\": \"404 - NOT_FOUND\",\n \"405\": \"405 - METHOD_NOT_ALLOWED\",\n \"406\": \"406 - NOT_ACCEPTABLE\",\n \"407\": \"407 - PROXY_AUTHENTICATION_REQUIRED\",\n \"408\": \"408 - REQUEST_TIMEOUT\",\n \"409\": \"409 - CONFLICT\",\n \"410\": \"410 - GONE\",\n \"411\": \"411 - LENGTH_REQUIRED\",\n \"412\": \"412 - PRECONDITION_FAILED\",\n \"413\": \"413 - REQUEST_ENTITY_TOO_LARGE\",\n \"414\": \"414 - REQUEST_URI_TOO_LONG\",\n \"415\": \"415 - UNSUPPORTED_MEDIA_TYPE\",\n \"416\": \"416 - REQUESTED_RANGE_NOT_SATISFIABLE\",\n \"417\": \"417 - EXPECTATION_FAILED\",\n \"422\": \"422 - UNPROCESSABLE_ENTITY\",\n \"423\": \"423 - LOCKED\",\n \"424\": \"424 - FAILED_DEPENDENCY\",\n \"429\": \"429 - TOO_MANY_REQUESTS\",\n \"500\": \"500 - INTERNAL_SERVER_ERROR\",\n \"501\": \"501 - NOT_IMPLEMENTED\",\n \"502\": \"502 - BAD_GATEWAY\",\n \"503\": \"503 - SERVICE_UNAVAILABLE\",\n \"504\": \"504 - GATEWAY_TIMEOUT\",\n \"505\": \"505 - HTTP_VERSION_NOT_SUPPORTED\",\n \"507\": \"507 - INSUFFICIENT_STORAGE\"\n },\n \"hidden\": [\n {\n \"$eq\": {\n \"fireAndForget\": true,\n \"exitOnError\": false\n }\n }\n ]\n }\n },\n \"errorContent\": {\n \"title\": \"Error response body\",\n \"description\": \"The body response of the error if the condition is true (support EL)\",\n \"type\": \"string\",\n \"x-schema-form\": {\n \"type\": \"codemirror\",\n \"codemirrorOptions\": {\n \"placeholder\": \"Put response body here\",\n \"lineWrapping\": true,\n \"lineNumbers\": true,\n \"allowDropFileTypes\": true,\n \"autoCloseTags\": true,\n \"mode\": \"javascript\"\n },\n \"expression-language\": true,\n \"hidden\": [\n {\n \"$eq\": {\n \"fireAndForget\": true,\n \"exitOnError\": false\n }\n }\n ]\n }\n }\n },\n \"required\": [\n \"url\",\n \"method\",\n \"exitOnError\"\n ]\n}\n",
252
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fS5jbHMtNXtsZXR0ZXItc3BhY2luZzowLjA0ZW07fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJBUEkiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTUwLjM1LDEzLjM3YTQzLDQzLDAsMSwwLDQzLjA1LDQzQTQzLDQzLDAsMCwwLDUwLjM1LDEzLjM3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTQwLjgyLDY0LjY4YTguMzksOC4zOSwwLDEsMSw4LjM5LTguMzlBOC4zOSw4LjM5LDAsMCwxLDQwLjgyLDY0LjY4Wm0wLTE1YTYuNjUsNi42NSwwLDEsMCw2LjY1LDYuNjVBNi42Niw2LjY2LDAsMCwwLDQwLjgyLDQ5LjY0WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTYyLjE1LDc5YTYuMTQsNi4xNCwwLDEsMSw2LjEzLTYuMTRBNi4xNSw2LjE1LDAsMCwxLDYyLjE1LDc5Wm0wLTEwLjUzYTQuNCw0LjQsMCwxLDAsNC4zOSw0LjM5QTQuNCw0LjQsMCwwLDAsNjIuMTUsNjguNVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik02Mi4xNSw0Ni4wNmE2LjE0LDYuMTQsMCwxLDEsNi4xMy02LjEzQTYuMTQsNi4xNCwwLDAsMSw2Mi4xNSw0Ni4wNlptMC0xMC41M2E0LjQsNC40LDAsMSwwLDQuMzksNC40QTQuNCw0LjQsMCwwLDAsNjIuMTUsMzUuNTNaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNDYuMTQsNTEuODVhLjg2Ljg2LDAsMCwxLS43NS0uNDMuODcuODcsMCwwLDEsLjMtMS4xOUw1OCw0Mi44OWEuODcuODcsMCwwLDEsLjg5LDEuNUw0Ni41OCw1MS43MkEuOC44LDAsMCwxLDQ2LjE0LDUxLjg1WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTU4LjQyLDY5LjgyQS44OS44OSwwLDAsMSw1OCw2OS43TDQ1LjY5LDYyLjM2YS44Ny44NywwLDAsMSwuODktMS40OUw1OC44Niw2OC4yYS44OC44OCwwLDAsMSwuMywxLjJBLjg2Ljg2LDAsMCwxLDU4LjQyLDY5LjgyWiIvPjwvZz48ZyBpZD0iSE9TVElORyI+PHRleHQgY2xhc3M9ImNscy0zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy43OSAtNC45OCkiPjx0c3BhbiBjbGFzcz0iY2xzLTQiPkM8L3RzcGFuPjx0c3BhbiB4PSI2Ljg4IiB5PSIwIj5hbGxvdXQgSDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNSIgeD0iNDUuODYiIHk9IjAiPlQ8L3RzcGFuPjx0c3BhbiB4PSI1Mi4yOCIgeT0iMCI+VFA8L3RzcGFuPjwvdGV4dD48L2c+PC9zdmc+",
253
- category: "others",
254
- onRequest: true,
255
- onResponse: true
256
- },
257
- {
258
- id: "http-signature",
259
- name: "HTTP Signature",
260
- description: "Description of the HTTP Signature Gravitee Policy",
261
- version: "1.4.0",
262
- schema: "{\n \"type\": \"object\",\n \"id\": \"urn:jsonschema:io:gravitee:policy:httpsignature:configuration:HttpSignaturePolicyConfiguration\",\n \"properties\": {\n \"scheme\" : {\n \"title\": \"Scheme\",\n \"description\": \"Signature Scheme\",\n \"type\" : \"string\",\n \"default\": \"AUTHORIZATION\",\n \"enum\" : [\n \"AUTHORIZATION\",\n \"SIGNATURE\"\n ],\n \"x-schema-form\": {\n \"type\": \"select\",\n \"titleMap\": {\n \"AUTHORIZATION\": \"\\\"Signature\\\" HTTP Authentication Scheme\",\n \"SIGNATURE\": \"\\\"Signature\\\" HTTP Header\"\n }\n }\n },\n \"secret\": {\n \"title\": \"Secret\",\n \"description\": \"The secret key used to sign (support EL).\",\n \"type\": \"string\"\n },\n \"algorithms\" : {\n \"title\": \"Supported Algorithms\",\n \"description\": \"A list of supported HMAC digest algorithms.\",\n \"type\" : \"array\",\n \"items\" : {\n \"type\" : \"string\",\n \"title\": \"Algorithm\",\n \"default\": \"HMAC_SHA256\",\n \"enum\" : [\n \"HMAC_SHA1\",\n \"HMAC_SHA256\",\n \"HMAC_SHA384\",\n \"HMAC_SHA512\"\n ]\n }\n },\n \"enforceHeaders\" : {\n \"type\": \"array\",\n \"title\": \"Enforce Headers\",\n \"description\": \"List of headers the consumer must at least use for HTTP signature creation.\",\n \"items\": {\n \"type\": \"string\",\n \"title\": \"Header\"\n }\n },\n \"clockSkew\": {\n \"title\": \"Clock Skew\",\n \"default\": 30,\n \"description\": \"Clock Skew in seconds to prevent replay attacks.\",\n \"type\": \"integer\"\n },\n \"decodeSignature\": {\n \"title\": \"Decode the signature\",\n \"default\": false,\n \"description\": \"Decode the signature before comparing it.\",\n \"type\": \"boolean\"\n },\n \"strictMode\": {\n \"title\": \"Validate the RFC 2617\",\n \"default\": true,\n \"description\": \"Does not accept non quoted strings.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"scheme\",\n \"secret\"\n ]\n}\n",
263
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkFQSSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNODUuNDUsNTcuODYsNzUuMDcsNjEuNzhhMS4zOCwxLjM4LDAsMCwxLTEuNDItLjMsMS4zNSwxLjM1LDAsMCwxLS4zMS0xLjQybDMuODQtMTAuNDFhMS4zOSwxLjM5LDAsMCwxLC4zMS0uNUw4OC43NCwzNy44MkE0Myw0MywwLDEsMCw5My40LDU3LjI4YTQzLjcxLDQzLjcxLDAsMCwwLS41My02LjcxbC02LjkyLDdBMS4yOSwxLjI5LDAsMCwxLDg1LjQ1LDU3Ljg2WiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTg1LjExLDU2LjE3bDcuNDMtNy40OGE0My4xNyw0My4xNywwLDAsMC0zLTkuMjNMNzksNTAuMDlaIi8+PHBvbHlnb24gY2xhc3M9ImNscy0xIiBwb2ludHM9Ijc0Ljk5IDYwLjEzIDgzLjggNTYuNTkgNzguNDYgNTEuMyA3NC45OSA2MC4xMyIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTg1LjExLDU2LjE3LDc5LDUwLjA5LDg5LjUzLDM5LjQ2Yy0uMjUtLjU1LS41MS0xLjEtLjc5LTEuNjRMNzcuNDksNDkuMTVhMS4zOSwxLjM5LDAsMCwwLS4zMS41TDczLjM0LDYwLjA2YTEuMzUsMS4zNSwwLDAsMCwuMzEsMS40MiwxLjM4LDEuMzgsMCwwLDAsMS40Mi4zbDEwLjM4LTMuOTJhMS4yOSwxLjI5LDAsMCwwLC41LS4zMmw2LjkyLTdjLS4xLS42My0uMjEtMS4yNi0uMzMtMS44OFpNNzUsNjAuMTNsMy40Ny04Ljg0LDUuMzQsNS4zWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTM3LjE0LDc1Ljc5YTEzOS4zMiwxMzkuMzIsMCwwLDAsMTAuNS0xNiw1Ni4yNyw1Ni4yNywwLDAsMCwzLjc0LTguNDljLjQ2LTEuMzQuODUtMi43LDEuMTgtNC4wN3MuODYtMi45NC4zOS00LjJjLS44Mi0yLjE4LTMuNTItMS4zNi00LjYxLjA1LTEuNzcsMi4zMS0yLjgsNS41OS0zLjYyLDguMzVhNDEuNzgsNDEuNzgsMCwwLDAtMS4zLDE4LjQzYy4xNSwxLC40MiwyLjI4LDEuMzksMi44MiwxLjE5LjY1LDIuMjMtLjI0LDMtMS4wN2EyMS4xNywyMS4xNywwLDAsMCw0LjcxLTguMzkuNjMuNjMsMCwwLDAtMS0uNjEsOS43OSw5Ljc5LDAsMCwwLTMuMDcsNy44Ny42My42MywwLDAsMCwuNzkuNiwxMy42MSwxMy42MSwwLDAsMCw3LjczLTcuMzZINTUuODRhMi44LDIuOCwwLDAsMCwzLjQ3LDFjMS43My0uNjMsMi40OS0yLjQ4LDQuMDYtMy4zMiwxLjc4LTEsMy45LS4yMiw1LjcuMjhhMTIuNSwxMi41LDAsMCwwLDUuMjguNjNjLjc5LS4xMi40NS0xLjMyLS4zNC0xLjIxLTMuMjIuNDgtNi4xNy0xLjc0LTkuMzktMS4zN2E1LjU3LDUuNTcsMCwwLDAtMy40MiwxLjgzYy0uODMuODYtMy4xMSwzLjQ1LTQuMjgsMS41Ni0uMjItLjM1LS44OC0uNDUtMS4wOCwwYTEyLjM1LDEyLjM1LDAsMCwxLTcsNi43OWwuNzkuNjFhOC41OCw4LjU4LDAsMCwxLDIuNy03bC0xLS42YTIwLjI0LDIwLjI0LDAsMCwxLTMuMzksNi42NWMtLjM2LjQ2LS43NC45MS0xLjE0LDEuMzNhMS41OSwxLjU5LDAsMCwxLS44MS41OGwtLjQzLjE5YTEuNDMsMS40MywwLDAsMS0uNjMtLjgsMTEuNjEsMTEuNjEsMCwwLDEtLjU1LTMuNTJBNDAuOTQsNDAuOTQsMCwwLDEsNDUuOCw1Mi4xOWEzOC44MSwzOC44MSwwLDAsMSwyLjgxLTcuMTRjLjUtLjk0LDItMy4yMiwzLTEuNTguNjIsMS0uMTYsMy0uNDQsNC4wNWE1My44OCw1My44OCwwLDAsMS01Ljc4LDEzLjcxLDE1Ni42OCwxNTYuNjgsMCwwLDEtOS4zNiwxMy45MmMtLjQ3LjY2LjYxLDEuMjgsMS4wOC42NFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MC41Nyw5MC44YTEuMTIsMS4xMiwwLDAsMS0uNDQtLjA5bC0uNjctLjI4QTM4LjM2LDM4LjM2LDAsMCwxLDI2LjI3LDU1LjA4VjQwYTEuMTYsMS4xNiwwLDAsMSwxLjE2LTEuMTZjNywwLDIyLjQ0LTguMjMsMjIuNi04LjMyYTEuMTcsMS4xNywwLDAsMSwxLjA5LDBjLjE2LjA5LDE1LjYyLDguMzIsMjIuNTksOC4zMkExLjE2LDEuMTYsMCwwLDEsNzQuODcsNDBWNTUuMDhBMzguMzQsMzguMzQsMCwwLDEsNTEuNjgsOTAuNDNsLS42Ni4yOEExLjEzLDEuMTMsMCwwLDEsNTAuNTcsOTAuOFptLTIyLTQ5LjY4djE0QTM2LDM2LDAsMCwwLDUwLjM4LDg4LjNsLjE5LjA4LjItLjA4QTM2LDM2LDAsMCwwLDcyLjU1LDU1LjA4di0xNGMtNy4xLS42Ni0xOS4yMi02LjgxLTIyLTguMjVDNDcuODEsMzQuMzEsMzUuNjksNDAuNDYsMjguNiw0MS4xMloiLz48L2c+PC9zdmc+",
264
- category: "security",
265
- onRequest: true,
266
- onResponse: false
267
- },
268
- {
269
- id: "ip-filtering",
270
- name: "IPFiltering",
271
- description: "Filter IPs from remote address or X-Forwarded-For header with blacklist or whitelist",
272
- version: "1.8.0",
273
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:IPFilteringPolicyConfiguration\",\n \"properties\" : {\n \"matchAllFromXForwardedFor\" : {\n \"title\" : \"Use X-Forwarded-For header\",\n \"type\" : \"boolean\"\n },\n \"whitelistIps\" : {\n \"title\" : \"IPs Whitelist (CIDR and hosts allowed)\",\n \"type\" : \"array\",\n \"items\" : {\n \"title\" : \"IP / CIDR / Host\",\n \"type\" : \"string\",\n \"minLength\": 1\n }\n },\n \"blacklistIps\" : {\n \"title\" : \"IPs Blacklist (CIDR and hosts allowed)\",\n \"type\" : \"array\",\n \"items\" : {\n \"title\" : \"IP / CIDR / Host\",\n \"type\" : \"string\",\n \"minLength\": 1\n }\n }\n }\n}\n",
274
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjAzZW07fS5jbHMtNXtsZXR0ZXItc3BhY2luZzowZW07fS5jbHMtNntsZXR0ZXItc3BhY2luZzotMC4wMWVtO30uY2xzLTd7bGV0dGVyLXNwYWNpbmc6MGVtO30uY2xzLTh7bGV0dGVyLXNwYWNpbmc6MGVtO308L3N0eWxlPjwvZGVmcz48ZyBpZD0iQVBJIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01MC4zNSwxMy4zN2E0Myw0MywwLDEsMCw0My4wNSw0M0E0Myw0MywwLDAsMCw1MC4zNSwxMy4zN1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik03MS43LDQwLjgxSDQ2LjU2YS44Ni44NiwwLDAsMSwwLTEuNzJINzEuN2EuODYuODYsMCwwLDEsMCwxLjcyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTM2LjU4LDQwLjgxSDI5YS44Ni44NiwwLDAsMSwwLTEuNzJoNy41N2EuODYuODYsMCwwLDEsMCwxLjcyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTcxLjcsNTcuMjZINjYuMzJhLjg2Ljg2LDAsMSwxLDAtMS43MUg3MS43YS44Ni44NiwwLDEsMSwwLDEuNzFaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTYuMzQsNTcuMjZIMjlhLjg2Ljg2LDAsMSwxLDAtMS43MUg1Ni4zNGEuODYuODYsMCwxLDEsMCwxLjcxWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTcxLjcsNzMuNzJINTUuMzVhLjg2Ljg2LDAsMSwxLDAtMS43MUg3MS43YS44Ni44NiwwLDEsMSwwLDEuNzFaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNDUuMzYsNzMuNzJIMjlBLjg2Ljg2LDAsMSwxLDI5LDcySDQ1LjM2YS44Ni44NiwwLDEsMSwwLDEuNzFaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNDEuNTcsNDUuOEE1Ljg1LDUuODUsMCwxLDEsNDcuNDIsNDAsNS44Niw1Ljg2LDAsMCwxLDQxLjU3LDQ1LjhabTAtMTBBNC4xMyw0LjEzLDAsMSwwLDQ1LjcsNDAsNC4xMyw0LjEzLDAsMCwwLDQxLjU3LDM1LjgyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTYxLjMzLDYyLjI2YTUuODUsNS44NSwwLDEsMSw1Ljg1LTUuODZBNS44Niw1Ljg2LDAsMCwxLDYxLjMzLDYyLjI2Wm0wLTEwYTQuMTQsNC4xNCwwLDEsMCw0LjEzLDQuMTNBNC4xMyw0LjEzLDAsMCwwLDYxLjMzLDUyLjI3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUwLjM2LDc4LjcxYTUuODUsNS44NSwwLDEsMSw1Ljg1LTUuODRBNS44Niw1Ljg2LDAsMCwxLDUwLjM2LDc4LjcxWm0wLTEwYTQuMTQsNC4xNCwwLDEsMCw0LjEzLDQuMTVBNC4xNCw0LjE0LDAsMCwwLDUwLjM2LDY4LjcyWiIvPjwvZz48ZyBpZD0iSE9TVElORyI+PHRleHQgY2xhc3M9ImNscy0zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy45MyAtNC45OCkiPklQIDx0c3BhbiBjbGFzcz0iY2xzLTQiIHg9IjExLjgiIHk9IjAiPkY8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTUiIHg9IjE3LjMzIiB5PSIwIj5pbDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNiIgeD0iMjIuOTciIHk9IjAiPnQ8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTciIHg9IjI2Ljg3IiB5PSIwIj5lPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy04IiB4PSIzMi44OCIgeT0iMCI+cjwvdHNwYW4+PHRzcGFuIHg9IjM2Ljg1IiB5PSIwIj5pbmc8L3RzcGFuPjwvdGV4dD48L2c+PC9zdmc+",
275
- category: "security",
276
- onRequest: true,
277
- onResponse: false
278
- },
279
- {
280
- id: "json-threat-protection",
281
- name: "JSON Threat Protection",
282
- description: "Description of the JsonThreatProtection Gravitee Policy",
283
- version: "1.2.2",
284
- schema: "{\n \"type\": \"object\",\n \"id\": \"urn:jsonschema:io:gravitee:policy:threatprotection:json:JsonThreatProtectionPolicyConfiguration\",\n \"properties\": {\n \"maxEntries\": {\n \"title\": \"Maximum json object entries\",\n \"description\": \"Maximum number of entries allowed in an json object. Example: <code>{ \\\"a\\\":{ \\\"b\\\":1, \\\"c\\\":2, \\\"d\\\":3 }}</code>, \\\"a\\\" has 3 entries. (-1 to specify no limit)\",\n \"type\": \"integer\",\n \"default\": 100\n },\n \"maxArraySize\": {\n \"title\": \"Maximum json array size\",\n \"description\": \"Maximum number of elements allowed in an array. (-1 to specify no limit)\",\n \"type\": \"integer\",\n \"default\": 100\n },\n \"maxDepth\": {\n \"title\": \"Maximum json depth\",\n \"description\": \"Maximum depth of json structure. Example: <code>{ \\\"a\\\":{ \\\"b\\\":{ \\\"c\\\":true }}}</code>, json has a depth of 3. (-1 to specify no limit)\",\n \"type\": \"integer\",\n \"default\": 100\n },\n \"maxNameLength\": {\n \"title\": \"Maximum json field name length\",\n \"description\": \"Maximum string length allowed for a json property name. (-1 to specify no limit)\",\n \"type\": \"integer\",\n \"default\": 100\n },\n \"maxValueLength\": {\n \"title\": \"Maximum json field value length\",\n \"description\": \"Maximum string length allowed for a json property value. (-1 to specify no limit)\",\n \"type\": \"integer\",\n \"default\": 500\n }\n },\n \"required\": [\n \"maxEntries\",\n \"maxArraySize\",\n \"maxDepth\",\n \"maxNameLength\",\n \"maxValueLength\"\n ]\n}",
285
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjA0ZW07fS5jbHMtNXtsZXR0ZXItc3BhY2luZzotMC4wMWVtO30uY2xzLTZ7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy03e2xldHRlci1zcGFjaW5nOjBlbTt9LmNscy04e2xldHRlci1zcGFjaW5nOjBlbTt9LmNscy05e2xldHRlci1zcGFjaW5nOi0wLjAyZW07fS5jbHMtMTB7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy0xMXtsZXR0ZXItc3BhY2luZzowLjAxZW07fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJBUEkiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTUwLjM1LDEzLjM3YTQzLDQzLDAsMSwwLDQzLjA1LDQzQTQzLDQzLDAsMCwwLDUwLjM1LDEzLjM3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUwLjM2LDc5LjE0YS44Ny44NywwLDAsMS0uNDctMS42MSw0Mi41NSw0Mi41NSwwLDAsMCw2LjgyLTUuMzEuODguODgsMCwwLDEsMS4yMSwxLjI3QTQ0Ljg2LDQ0Ljg2LDAsMCwxLDUwLjgyLDc5LC44OS44OSwwLDAsMSw1MC4zNiw3OS4xNFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MC4zNSw3OS4xNGEuODcuODcsMCwwLDEtLjQ2LS4xM0E0Miw0MiwwLDAsMSwyOS43Nyw0My4zN3YtLjY0YS44Ny44NywwLDAsMSwuODctLjg3LDcuNTEsNy41MSwwLDAsMCw3LjY4LTcuMzEuODguODgsMCwwLDEsLjg3LS44OEg2MS41MmEuODguODgsMCwwLDEsLjg3Ljg4LDcuNTEsNy41MSwwLDAsMCw3LjY4LDcuMzEuODcuODcsMCwwLDEsLjg3Ljg3di42NGE0MSw0MSwwLDAsMS0uODcsOC40MS44Ny44NywwLDAsMS0xLC42Ny44OC44OCwwLDAsMS0uNjgtMSwzOC40MiwzOC40MiwwLDAsMCwuODQtNy44NSw5LjI2LDkuMjYsMCwwLDEtOC41LTguMTVINDBhOS4yNiw5LjI2LDAsMCwxLTguNSw4LjE1LDQwLjMsNDAuMywwLDAsMCwxOS4zLDM0LC44Ny44NywwLDAsMSwuMjgsMS4yQS44OC44OCwwLDAsMSw1MC4zNSw3OS4xNFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01Ny4zMSw3My43M2EuODYuODYsMCwwLDEtLjYzLS4yNy44OC44OCwwLDAsMSwwLTEuMjQsNDAuMTQsNDAuMTQsMCwwLDAsMTEuNjQtMjAuOC44OC44OCwwLDAsMSwxLjcyLjM2QTQyLDQyLDAsMCwxLDU3LjkyLDczLjQ5Ljg5Ljg5LDAsMCwxLDU3LjMxLDczLjczWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUwLjM5LDYzLjNoLS4wN2E3LDcsMCwwLDEtNy03VjUyLjc3YS44Ny44NywwLDAsMSwuODctLjg3SDU2LjQ3YS44Ny44NywwLDAsMSwuODcuODd2My41N0E3LDcsMCwwLDEsNTAuMzksNjMuM1ptLTUuMjctOS42NXYyLjY5YTUuMjEsNS4yMSwwLDAsMCw1LjIsNS4yMWguMDdhNS4yMSw1LjIxLDAsMCwwLDUuMi01LjIxVjUzLjY1WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTU1LjM1LDUzLjY1YS44Ny44NywwLDAsMS0uODctLjg4VjQ5Ljg4YTQuMTMsNC4xMywwLDAsMC04LjI1LDB2Mi44OWEuODguODgsMCwxLDEtMS43NSwwVjQ5Ljg4YTUuODgsNS44OCwwLDAsMSwxMS43NSwwdjIuODlBLjg3Ljg3LDAsMCwxLDU1LjM1LDUzLjY1WiIvPjwvZz48ZyBpZD0iSE9TVElORyI+PHRleHQgY2xhc3M9ImNscy0zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTIuMDcgLTQuOTgpIj5KU09OPHRzcGFuIGNsYXNzPSJjbHMtNCIgeD0iMjYuNTIiIHk9IjAiPiA8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTUiIHg9IjI4LjU3IiB5PSIwIj5UPC90c3Bhbj48dHNwYW4geD0iMzQuNDUiIHk9IjAiPmg8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTYiIHg9IjQxLjExIiB5PSIwIj5yPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy03IiB4PSI0NC45MiIgeT0iMCI+ZTwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtOCIgeD0iNTAuOTMiIHk9IjAiPmE8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTciIHg9IjU2LjY2IiB5PSIwIj50IDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtOSIgeD0iNjMuMTgiIHk9IjAiPlA8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTYiIHg9IjY5LjM3IiB5PSIwIj5yPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy03IiB4PSI3My4xOCIgeT0iMCI+bzwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtMTAiIHg9Ijc5Ljc2IiB5PSIwIj50PC90c3Bhbj48dHNwYW4geD0iODMuNjYiIHk9IjAiPmU8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTExIiB4PSI4OS42OCIgeT0iMCI+YzwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNyIgeD0iOTUuMjEiIHk9IjAiPnRpb248L3RzcGFuPjwvdGV4dD48L2c+PC9zdmc+",
286
- category: "security",
287
- onRequest: true,
288
- onResponse: false
289
- },
290
- {
291
- id: "json-validation",
292
- name: "JSON Validation",
293
- description: "Description of the Json Validation Gravitee Policy",
294
- version: "1.6.0",
295
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:JsonValidationPolicyConfiguration\",\n \"properties\" : {\n \"scope\" : {\n \"title\": \"Scope\",\n \"description\": \"Execute policy on <strong>request content</strong> or <strong>response content</strong> phase.\",\n \"type\" : \"string\",\n \"default\": \"REQUEST_CONTENT\",\n \"enum\" : [ \"REQUEST_CONTENT\", \"RESPONSE_CONTENT\" ],\n \"deprecated\": \"true\"\n },\n \"errorMessage\" : {\n \"title\": \"Http error message\",\n \"description\": \"Http error message to send when request is not valid. Status code is 400 as Bad request for REQUEST scope. Status code is 500 as Internal Error for RESPONSE scope (without straight respond mode).\",\n \"type\" : \"string\",\n \"x-schema-form\": {\n \"type\": \"codemirror\",\n \"codemirrorOptions\": {\n \"placeholder\": \"Put your error message here or drag'n'drop it\",\n \"lineWrapping\": true,\n \"lineNumbers\": true,\n \"allowDropFileTypes\": true,\n \"autoCloseTags\": true,\n \"mode\": \"json\",\n \"value\": \"{\\\"error\\\":\\\"Bad request\\\"}\"\n },\n \"expression-language\": true\n }\n },\n \"schema\" : {\n \"title\": \"JSON Schema\",\n \"description\": \"JSON Schema used for request payload validation\",\n \"type\" : \"string\",\n \"x-schema-form\": {\n \"type\": \"codemirror\",\n \"codemirrorOptions\": {\n \"placeholder\": \"Put your json schema here or drag'n'drop it\",\n \"lineWrapping\": true,\n \"lineNumbers\": true,\n \"allowDropFileTypes\": true,\n \"autoCloseTags\": true,\n \"mode\": \"javascript\"\n }\n }\n },\n \"validateUnchecked\" : {\n \"title\": \"Validate unchecked\",\n \"description\": \"Unchecked validation means that conditions which would normally cause the processing to stop with an exception are instead inserted into the resulting report. Warning: this means that anomalous events like an unresolvable JSON Reference, or an invalid schema, are masked!\",\n \"type\" : \"boolean\"\n },\n \"deepCheck\" : {\n \"title\": \"Deep check\",\n \"description\": \"Instructs the validator as to whether it should validate children even if the container (array or object) fails to validate.\",\n \"type\" : \"boolean\"\n },\n \"straightRespondMode\" : {\n \"title\": \"Straight respond mode\",\n \"description\": \"Only for RESPONSE scope. Straight respond mode means that responses failed to validate still will be sent to user without replacement. Validation failures messages are still being written to the metrics for further inspection.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"schema\"\n ]\n}\n",
296
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjA0ZW07fS5jbHMtNXtsZXR0ZXItc3BhY2luZzotMC4wM2VtO30uY2xzLTZ7bGV0dGVyLXNwYWNpbmc6MGVtO30uY2xzLTd7bGV0dGVyLXNwYWNpbmc6MGVtO308L3N0eWxlPjwvZGVmcz48ZyBpZD0iQVBJIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01MC4zNSwxMy4zN2E0Myw0MywwLDEsMCw0My4wNSw0M0E0Myw0MywwLDAsMCw1MC4zNSwxMy4zN1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MC4zNSw3OC41NGEuOC44LDAsMCwxLS40LS4xMUMyOC4xLDY2LjQ4LDMxLjM0LDQ3Ljc5LDMxLjM3LDQ3LjZBLjg1Ljg1LDAsMCwxLDMxLjksNDdsLjQ0LS4xN0E0My44MSw0My44MSwwLDAsMCw0OS43MSwzNC41NmEuODkuODksMCwwLDEsMS4yOSwwQTQzLjgxLDQzLjgxLDAsMCwwLDY4LjM3LDQ2LjhsLjQzLjE3YS44MS44MSwwLDAsMSwuNTMuNjNjMCwuMTksMy4yOCwxOC44OC0xOC41NywzMC44M0EuODEuODEsMCwwLDEsNTAuMzUsNzguNTRaTTMzLDQ4LjM4Yy0uMzcsMi44Ny0xLjMsMTcuOSwxNy4zNywyOC4zM0M2OSw2Ni4yOCw2OC4xLDUxLjI1LDY3LjczLDQ4LjM4YTQ1LjUxLDQ1LjUxLDAsMCwxLTE3LjM4LTEyQTQ1LjQsNDUuNCwwLDAsMSwzMyw0OC4zOFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01NS40NSw2NS4yM0g0NS4yNmEyLDIsMCwwLDEtMi0yVjU2Ljc1YTIsMiwwLDAsMSwyLTJINTUuNDVhMiwyLDAsMCwxLDIsMnY2LjQ0QTIsMiwwLDAsMSw1NS40NSw2NS4yM1pNNDUuMjYsNTYuNDFhLjM0LjM0LDAsMCwwLS4zNC4zNHY2LjQ0YS4zNS4zNSwwLDAsMCwuMzQuMzRINTUuNDVhLjM1LjM1LDAsMCwwLC4zNC0uMzRWNTYuNzVhLjM0LjM0LDAsMCwwLS4zNC0uMzRaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTQuODUsNTYuNDFhLjg1Ljg1LDAsMCwxLS44NS0uODVWNTIuOTJhMy42NSwzLjY1LDAsMCwwLTcuMjksMHYyLjY0YS44NS44NSwwLDAsMS0xLjcsMFY1Mi45MmE1LjM1LDUuMzUsMCwxLDEsMTAuNjksMHYyLjY0QS44NS44NSwwLDAsMSw1NC44NSw1Ni40MVoiLz48L2c+PGcgaWQ9IkhPU1RJTkciPjx0ZXh0IGNsYXNzPSJjbHMtMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTcuOTMgLTQuOTgpIj5KU09OPHRzcGFuIGNsYXNzPSJjbHMtNCIgeD0iMjYuNTIiIHk9IjAiPiA8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTUiIHg9IjI4LjYzIiB5PSIwIj5WPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy02IiB4PSIzNC45MyIgeT0iMCI+YWxpZDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNyIgeD0iNTMuMTIiIHk9IjAiPmE8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTYiIHg9IjU4Ljg2IiB5PSIwIj50aW9uPC90c3Bhbj48L3RleHQ+PC9nPjwvc3ZnPg==",
297
- category: "others",
298
- onRequest: true,
299
- onResponse: true
300
- },
301
- {
302
- id: "jws",
303
- name: "JSON Web Signature",
304
- description: "Description of the JWS Gravitee Policy",
305
- version: "1.3.0",
306
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:jws:configuration:JWSPolicyConfiguration\",\n \"properties\" : {\n \"checkCertificateValidity\" : {\n \"title\": \"Check certificate validity\",\n \"description\": \"Check if the certificate used to sign the JWT is valid with correct 'not_before' and 'not_after' dates.\",\n \"type\" : \"boolean\",\n \"default\": false\n },\n \"checkCertificateRevocation\" : {\n \"title\": \"Check if the certificate is revoked\",\n \"description\": \"Check if the certificate used to sign the JWT is not revoked via the CRL Distribution Points. The CRL is stored inside the X509v3 CRL Distribution Extension Points.\",\n \"type\" : \"boolean\",\n \"default\": false\n }\n }\n}",
307
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkFQSSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMzUsMTMuMzdhNDMsNDMsMCwxLDAsNDMuMDUsNDNBNDMsNDMsMCwwLDAsNTAuMzUsMTMuMzdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNDEuNzksNjEuNjhhMTMuODIsMTMuODIsMCwxLDEsMTIuNTctOCwuODYuODYsMCwxLDEtMS41Ny0uNzIsMTIuMTEsMTIuMTEsMCwxLDAtMi40MywzLjQ5Ljg2Ljg2LDAsMSwxLDEuMjEsMS4yMkExMy43NywxMy43NywwLDAsMSw0MS43OSw2MS42OFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik02OC4zMSw3OC44YTQuNDQsNC40NCwwLDAsMS0zLjE0LTEuMjlMNTUuNiw2Ny45M2EuODYuODYsMCwwLDEsMS4yMi0xLjIxbDkuNTcsOS41N2EyLjcyLDIuNzIsMCwwLDAsMy44NC0zLjg0bC05LjU3LTkuNTdhMi43NywyLjc3LDAsMCwwLTMuODQsMCwuOS45LDAsMCwxLTEuMjIsMGwtNS4yNC01LjI1YS44Ni44NiwwLDAsMSwxLjIxLTEuMjJsNC43LDQuN2E0LjQ0LDQuNDQsMCwwLDEsNS42MS41NWw5LjU3LDkuNTdhNC40Myw0LjQzLDAsMCwxLTMuMTQsNy41N1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik00MS43OSw1NS4xN2EuODIuODIsMCwwLDEtLjYtLjI1Ljg0Ljg0LDAsMCwxLS4yNi0uNjIuODMuODMsMCwwLDEsLjI2LS42Ljg4Ljg4LDAsMCwxLDEuMjEsMCwuODYuODYsMCwwLDEsLjI1LjYuODUuODUsMCwwLDEtLjg2Ljg3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTQxLjc5LDUwLjcyYS44Ni44NiwwLDAsMS0uODYtLjg2VjQxLjM5YS44Ni44NiwwLDAsMSwxLjcyLDB2OC40N0EuODUuODUsMCwwLDEsNDEuNzksNTAuNzJaIi8+PC9nPjxnIGlkPSJIT1NUSU5HIj48dGV4dCBjbGFzcz0iY2xzLTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjkzIC00Ljk4KSI+SldTPC90ZXh0PjwvZz48L3N2Zz4=",
308
- category: "security",
309
- onRequest: true,
310
- onResponse: false
311
- },
312
- {
313
- id: "jwt",
314
- name: "JSON Web Tokens",
315
- description: "Description of the JWT Gravitee Policy",
316
- version: "1.21.0",
317
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:jwt:configuration:JWTPolicyConfiguration\",\n \"properties\" : {\n \"signature\": {\n \"title\": \"Signature\",\n \"description\": \"Define how the JSON Web Token must be signed.\",\n \"type\" : \"string\",\n \"default\": \"RSA_RS256\",\n \"enum\" : [\n \"RSA_RS256\",\n \"RSA_RS384\",\n \"RSA_RS512\",\n \"HMAC_HS256\",\n \"HMAC_HS384\",\n \"HMAC_HS512\"\n ],\n \"x-schema-form\": {\n \"type\": \"select\",\n \"titleMap\": {\n \"RSA_RS256\": \"RS256 - RSA signature with SHA-256\",\n \"RSA_RS384\": \"RS384 - RSA signature with SHA-384\",\n \"RSA_RS512\": \"RS512 - RSA signature with SHA-512\",\n \"HMAC_HS256\": \"HS256 - HMAC with SHA-256, requires 256+ bit secret\",\n \"HMAC_HS384\": \"HS384 - HMAC with SHA-384, requires 384+ bit secret\",\n \"HMAC_HS512\": \"HS512 - HMAC with SHA-512, requires 512+ bit secret\"\n }\n }\n },\n \"publicKeyResolver\" : {\n \"title\": \"JWKS resolver\",\n \"description\": \"Define how the JSON Web Key Set is retrieved\",\n \"type\" : \"string\",\n \"default\": \"GIVEN_KEY\",\n \"enum\" : [\n \"GIVEN_KEY\",\n \"GATEWAY_KEYS\",\n \"JWKS_URL\"\n ],\n \"x-schema-form\": {\n \"type\": \"select\",\n \"titleMap\": {\n \"GIVEN_KEY\": \"GIVEN_KEY: You must provide a signature key as a resolver parameter according to the signature algorithm\",\n \"GATEWAY_KEYS\": \"GATEWAY_KEYS: Look for signature key from API Gateway configuration according to issuer and kid from incoming JWT\",\n \"JWKS_URL\": \"JWKS_URL: Retrieve JWKS from URL (Basically, URL ending with '/.well-known/jwks.json')\"\n }\n }\n },\n \"resolverParameter\" : {\n \"title\": \"Resolver parameter\",\n \"description\": \"Set the signature key GIVEN_KEY or a JWKS_URL following selected resolver (support EL)</i>.\",\n \"type\" : \"string\",\n \"x-schema-form\": {\n \"type\": \"codemirror\",\n \"codemirrorOptions\": {\n \"placeholder\": \"Put signature key content here\",\n \"lineWrapping\": true,\n \"lineNumbers\": true,\n \"allowDropFileTypes\": true,\n \"autoCloseTags\": true\n },\n \"expression-language\": true\n }\n },\n \"useSystemProxy\" : {\n \"title\": \"Use system proxy\",\n \"description\": \"Use system proxy (make sense only when resolver is set to JWKS_URL)\",\n \"type\" : \"boolean\",\n \"default\": false\n },\n \"extractClaims\" : {\n \"title\": \"Extract JWT Claims\",\n \"description\": \"Put claims into the 'jwt.claims' context attribute.\",\n \"type\" : \"boolean\",\n \"default\": false\n },\n \"propagateAuthHeader\" : {\n \"title\": \"Propagate Authorization header\",\n \"description\": \"Allows to propagate Authorization header to the target endpoints\",\n \"type\" : \"boolean\",\n \"default\": true\n },\n \"userClaim\": {\n \"title\": \"User claim\",\n \"description\": \"Claim where the user can be extracted\",\n \"type\": \"string\",\n \"default\": \"sub\"\n },\n \"clientIdClaim\": {\n \"title\": \"Client ID claim\",\n \"description\": \"Claim where the client ID can be extracted. Configuring this field will override the standard behavior.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"signature\",\n \"publicKeyResolver\"\n ]\n}\n",
318
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOjAuMDNlbTt9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkFQSSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMzUsMTMuMzdhNDMsNDMsMCwxLDAsNDMuMDUsNDNBNDMsNDMsMCwwLDAsNTAuMzUsMTMuMzdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNDEuNzksNjEuNjdhMTMuODIsMTMuODIsMCwxLDEsMTIuNTctOCwuODcuODcsMCwwLDEtMS4xNS40Mi44Ni44NiwwLDAsMS0uNDItMS4xNCwxMi4xMiwxMi4xMiwwLDEsMC0yLjQ0LDMuNDkuODYuODYsMCwxLDEsMS4yMiwxLjIyQTEzLjgsMTMuOCwwLDAsMSw0MS43OSw2MS42N1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik02OC4zMSw3OC44YTQuNCw0LjQsMCwwLDEtMy4xNC0xLjNMNTUuNiw2Ny45M2EuODYuODYsMCwxLDEsMS4yMi0xLjIybDkuNTcsOS41N2EyLjc3LDIuNzcsMCwwLDAsMy44NCwwLDIuNzIsMi43MiwwLDAsMCwwLTMuODNsLTkuNTctOS41OGEyLjc5LDIuNzksMCwwLDAtMy44NCwwLC44OC44OCwwLDAsMS0xLjIyLDBsLTUuMjUtNS4yNGEuODguODgsMCwwLDEsMC0xLjIyLjg2Ljg2LDAsMCwxLDEuMjIsMGw0LjcsNC43YTQuNDMsNC40MywwLDAsMSw1LjYuNTVsOS41OCw5LjU3YTQuNDQsNC40NCwwLDAsMS0zLjE0LDcuNTdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNDYuMzYsNTMuMjdhLjg1Ljg1LDAsMCwxLS42MS0uMjVsLTkuMTQtOS4xM2EuODguODgsMCwwLDEsMC0xLjIyLjg2Ljg2LDAsMCwxLDEuMjIsMEw0Nyw1MS44QS44OC44OCwwLDAsMSw0Nyw1MywuODUuODUsMCwwLDEsNDYuMzYsNTMuMjdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMzcuMjIsNTMuMjdhLjg1Ljg1LDAsMCwxLS42MS0uMjUuODguODgsMCwwLDEsMC0xLjIybDkuMTQtOS4xM2EuODYuODYsMCwwLDEsMS4yMiwwLC44OC44OCwwLDAsMSwwLDEuMjJMMzcuODMsNTNBLjg1Ljg1LDAsMCwxLDM3LjIyLDUzLjI3WiIvPjwvZz48ZyBpZD0iSE9TVElORyI+PHRleHQgY2xhc3M9ImNscy0zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy45MyAtNC45OCkiPko8dHNwYW4gY2xhc3M9ImNscy00IiB4PSI0LjQ0IiB5PSIwIj5XPC90c3Bhbj48dHNwYW4geD0iMTQuOTkiIHk9IjAiPlQ8L3RzcGFuPjwvdGV4dD48L2c+PC9zdmc+",
319
- category: "security",
320
- onRequest: true,
321
- onResponse: false
322
- },
323
- {
324
- id: "json-to-json",
325
- name: "JSON to JSON Transformation",
326
- description: "Description of the JSON to JSON Transformation Gravitee Policy",
327
- version: "1.6.0",
328
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:json2json:configuration:JsonToJsonTransformationPolicyConfiguration\",\n \"properties\" : {\n \"scope\" : {\n \"title\": \"Scope\",\n \"description\": \"Execute policy on <strong>request</strong> or <strong>response</strong> phase.\",\n \"type\" : \"string\",\n \"default\": \"REQUEST\",\n \"enum\" : [ \"REQUEST\", \"RESPONSE\" ],\n \"deprecated\": \"true\"\n },\n \"overrideContentType\" : {\n \"title\": \"Override the Content-Type\",\n \"description\": \"Enforce the Content-Type: application/json\",\n \"type\" : \"boolean\",\n \"default\": true\n },\n \"specification\" : {\n \"title\": \"JOLT specification\",\n \"type\" : \"string\",\n \"x-schema-form\": {\n \"type\": \"codemirror\",\n \"codemirrorOptions\": {\n \"placeholder\": \"Place your JOLT specification here or drag'n'drop your JOLT specification file\",\n \"lineWrapping\": true,\n \"lineNumbers\": true,\n \"allowDropFileTypes\": true,\n \"autoCloseTags\": true,\n \"mode\": \"javascript\"\n },\n \"expression-language\": true\n }\n }\n },\n \"required\": [\n \"specification\"\n ]\n}\n",
329
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJBUEkiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTUwLjM1LDEzLjM3YTQzLDQzLDAsMSwwLDQzLjA1LDQzQTQzLDQzLDAsMCwwLDUwLjM1LDEzLjM3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTYzLjgsNzcuMDlhNC44Myw0LjgzLDAsMSwxLDMuNjktNy45Miw0Ljc0LDQuNzQsMCwwLDEsMS4xMywzLjA5QTQuODMsNC44MywwLDAsMSw2My44LDc3LjA5Wm0wLTcuOTNhMy4xMSwzLjExLDAsMSwwLDIuMzgsMS4xMkEzLjEsMy4xLDAsMCwwLDYzLjgsNjkuMTZaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTEuNSw0My42OGE0Ljg1LDQuODUsMCwwLDEtNC43Ny00LjE0LDUsNSwwLDAsMSwwLS42OSw0LjgzLDQuODMsMCwwLDEsOS42NSwwLDMuNDUsMy40NSwwLDAsMS0uMDcuNzRBNC44MSw0LjgxLDAsMCwxLDUxLjUsNDMuNjhabTAtNy45M2EzLjEsMy4xLDAsMCwwLTMuMSwzLjEsMy4yNSwzLjI1LDAsMCwwLDAsLjQ0LDMuMSwzLjEsMCwwLDAsNi4xNCwwLDIuNjYsMi42NiwwLDAsMCwwLS40NUEzLjExLDMuMTEsMCwwLDAsNTEuNSwzNS43NVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zMy42NCw3MC4xNWE0LjgzLDQuODMsMCwwLDEtMS4zNy05LjQ2LDUsNSwwLDAsMSwxLjM3LS4xOSw0LjgyLDQuODIsMCwwLDEsNC44Miw0LjgyLDQuODcsNC44NywwLDAsMS0yLjcxLDQuMzVBNC43Myw0LjczLDAsMCwxLDMzLjY0LDcwLjE1Wm0wLTcuOTNhMywzLDAsMCwwLS44OS4xMywzLjEsMy4xLDAsMCwwLC44OSw2LjA4QTMsMywwLDAsMCwzNSw2OC4xMmEzLjExLDMuMTEsMCwwLDAtMS4zNS01LjlaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMzIuMTgsNTYuMzVoLS4xMmEuODcuODcsMCwwLDEtLjczLTFBMjAuNDcsMjAuNDcsMCwwLDEsNDIsNDAuMzNhLjg2Ljg2LDAsMSwxLC44LDEuNTJBMTguNzcsMTguNzcsMCwwLDAsMzMsNTUuNjEuODYuODYsMCwwLDEsMzIuMTgsNTYuMzVaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTEuNSw3OC43OWEyMC4xNywyMC4xNywwLDAsMS0xMi4yNy00LjExLjg2Ljg2LDAsMCwxLS4xNy0xLjIxLjg1Ljg1LDAsMCwxLDEuMi0uMTZBMTguNTIsMTguNTIsMCwwLDAsNTEuNSw3Ny4wNywxOC4yMywxOC4yMywwLDAsMCw1NSw3Ni43M2EuODcuODcsMCwwLDEsLjMzLDEuN0EyMC44NywyMC44NywwLDAsMSw1MS41LDc4Ljc5WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTcwLDY1LjQyYS44NC44NCwwLDAsMS0uMjcsMCwuODYuODYsMCwwLDEtLjU0LTEuMDksMTguNzEsMTguNzEsMCwwLDAtOC41NS0yMi4xNy44Ni44NiwwLDEsMSwuODUtMS41LDIwLjQyLDIwLjQyLDAsMCwxLDkuMzMsMjQuMjFBLjg3Ljg3LDAsMCwxLDcwLDY1LjQyWiIvPjwvZz48ZyBpZD0iSE9TVElORyI+PHRleHQgY2xhc3M9ImNscy0zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy45MyAtNC45OCkiPkpTT04gPHRzcGFuIGNsYXNzPSJjbHMtNCIgeD0iMjkuMDYiIHk9IjAiPnQ8L3RzcGFuPjx0c3BhbiB4PSIzMi45NiIgeT0iMCI+byBKU09OPC90c3Bhbj48L3RleHQ+PC9nPjwvc3ZnPg==",
330
- category: "transformation",
331
- onRequest: true,
332
- onResponse: true
333
- },
334
- {
335
- id: "json-xml",
336
- name: "JSON to XML",
337
- description: "Description of the JSON to XML Transformation Gravitee Policy",
338
- version: "1.0.0",
339
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:json2xml:configuration:JsonToXMLTransformationPolicyConfiguration\",\n \"properties\" : {\n \"scope\" : {\n \"title\": \"Scope\",\n \"description\": \"Execute policy on <strong>request</strong> or <strong>response</strong> phase.\",\n \"type\" : \"string\",\n \"default\": \"REQUEST\",\n \"enum\" : [ \"REQUEST\", \"RESPONSE\" ]\n },\n \"rootElement\" : {\n \"title\": \"Root element\",\n \"description\": \"Root element name that's enclose content\",\n \"type\" : \"string\",\n \"default\": \"root\",\n \"pattern\": \"^[a-z:_A-Z]+[a-zA-Z0-9:-_]*\"\n }\n },\n \"required\": [\n \"rootElement\"\n ]\n}\n",
340
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJBUEkiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTUwLjM1LDEzLjM3YTQzLDQzLDAsMSwwLDQzLjA1LDQzQTQzLDQzLDAsMCwwLDUwLjM1LDEzLjM3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUxLjUsNjQuOTJBNi41Myw2LjUzLDAsMSwxLDU4LDU4LjM5LDYuNTMsNi41MywwLDAsMSw1MS41LDY0LjkyWm0wLTExLjM0YTQuODEsNC44MSwwLDEsMCw0LjgxLDQuODFBNC44MSw0LjgxLDAsMCwwLDUxLjUsNTMuNThaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjMuOCw3Ny4wOWE0LjgzLDQuODMsMCwxLDEsMy42OS03LjkyLDQuNzQsNC43NCwwLDAsMSwxLjEzLDMuMDlBNC44Myw0LjgzLDAsMCwxLDYzLjgsNzcuMDlabTAtNy45M2EzLjExLDMuMTEsMCwxLDAsMi4zOCwxLjEyQTMuMSwzLjEsMCwwLDAsNjMuOCw2OS4xNloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MS41LDQzLjY4YTQuODUsNC44NSwwLDAsMS00Ljc3LTQuMTQsNSw1LDAsMCwxLDAtLjY5LDQuODMsNC44MywwLDAsMSw5LjY1LDAsMy40NSwzLjQ1LDAsMCwxLS4wNy43NEE0LjgxLDQuODEsMCwwLDEsNTEuNSw0My42OFptMC03LjkzYTMuMSwzLjEsMCwwLDAtMy4xLDMuMSwzLjI1LDMuMjUsMCwwLDAsMCwuNDQsMy4xLDMuMSwwLDAsMCw2LjE0LDAsMi42NiwyLjY2LDAsMCwwLDAtLjQ1QTMuMTEsMy4xMSwwLDAsMCw1MS41LDM1Ljc1WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTMzLjY0LDcwLjE1YTQuODMsNC44MywwLDAsMS0xLjM3LTkuNDYsNSw1LDAsMCwxLDEuMzctLjE5LDQuODIsNC44MiwwLDAsMSw0LjgyLDQuODIsNC44Nyw0Ljg3LDAsMCwxLTIuNzEsNC4zNUE0LjczLDQuNzMsMCwwLDEsMzMuNjQsNzAuMTVabTAtNy45M2EzLDMsMCwwLDAtLjg5LjEzLDMuMSwzLjEsMCwwLDAsLjg5LDYuMDhBMywzLDAsMCwwLDM1LDY4LjEyYTMuMTEsMy4xMSwwLDAsMC0xLjM1LTUuOVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zMi4xOCw1Ni4zNWgtLjEyYS44Ny44NywwLDAsMS0uNzMtMUEyMC40NywyMC40NywwLDAsMSw0Miw0MC4zM2EuODYuODYsMCwxLDEsLjgsMS41MkExOC43NywxOC43NywwLDAsMCwzMyw1NS42MS44Ni44NiwwLDAsMSwzMi4xOCw1Ni4zNVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MS41LDc4Ljc5YTIwLjE3LDIwLjE3LDAsMCwxLTEyLjI3LTQuMTEuODYuODYsMCwwLDEtLjE3LTEuMjEuODUuODUsMCwwLDEsMS4yLS4xNkExOC41MiwxOC41MiwwLDAsMCw1MS41LDc3LjA3LDE4LjIzLDE4LjIzLDAsMCwwLDU1LDc2LjczYS44Ny44NywwLDAsMSwuMzMsMS43QTIwLjg3LDIwLjg3LDAsMCwxLDUxLjUsNzguNzlaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNzAsNjUuNDJhLjg0Ljg0LDAsMCwxLS4yNywwLC44Ni44NiwwLDAsMS0uNTQtMS4wOSwxOC43MSwxOC43MSwwLDAsMC04LjU1LTIyLjE3Ljg2Ljg2LDAsMSwxLC44NS0xLjUsMjAuNDIsMjAuNDIsMCwwLDEsOS4zMywyNC4yMUEuODcuODcsMCwwLDEsNzAsNjUuNDJaIi8+PC9nPjxnIGlkPSJIT1NUSU5HIj48dGV4dCBjbGFzcz0iY2xzLTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjkzIC00Ljk4KSI+WE1MIDx0c3BhbiBjbGFzcz0iY2xzLTQiIHg9IjI0LjcxIiB5PSIwIj50PC90c3Bhbj48dHNwYW4geD0iMjguNjEiIHk9IjAiPm8gSlNPTjwvdHNwYW4+PC90ZXh0PjwvZz48L3N2Zz4=",
341
- category: "transformation",
342
- onRequest: true,
343
- onResponse: true
344
- },
345
- {
346
- id: "key-less",
347
- name: "Keyless",
348
- description: "Description of the Keyless Security Gravitee Policy",
349
- version: "1.4.0",
350
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZpbGw6bm9uZTtzdHJva2U6I2ZmZjtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MnB4O308L3N0eWxlPjwvZGVmcz48ZyBpZD0iQVBJIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01MC4zNSwxNC4yNGE0Myw0MywwLDEsMCw0My4wNSw0M0E0Myw0MywwLDAsMCw1MC4zNSwxNC4yNFoiLz48L2c+PGcgaWQ9IkhPU1RJTkciPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTU3LjU2LDg4LjYzSDQzLjE1YTIuOSwyLjksMCwwLDEtMi45LTIuOVY3Ni42MmEyLjg5LDIuODksMCwwLDEsMi45LTIuODlINTcuNTZhMi44OSwyLjg5LDAsMCwxLDIuOSwyLjg5djkuMTFBMi45LDIuOSwwLDAsMSw1Ny41Niw4OC42M1pNNDMuMTUsNzYuMTRhLjQ4LjQ4LDAsMCwwLS40OS40OHY5LjExYS40OS40OSwwLDAsMCwuNDkuNDlINTcuNTZhLjQ5LjQ5LDAsMCwwLC40OS0uNDlWNzYuNjJhLjQ4LjQ4LDAsMCwwLS40OS0uNDhaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTAuMzUsNjMuNjJBNy41OCw3LjU4LDAsMCwwLDQyLjg5LDcwaDIuNDdhNS4xNSw1LjE1LDAsMCwxLDEwLjE1LDEuMjN2My43NGExLjIxLDEuMjEsMCwxLDAsMi40MSwwVjcxLjE5QTcuNTgsNy41OCwwLDAsMCw1MC4zNSw2My42MloiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0yNi4xNiw0Ny40M2EyNS4yMiwyNS4yMiwwLDAsMSw0OC4zOS0uMzEiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0zMi4xMiw1Mi44YTE5LDE5LDAsMCwxLDM2LjQ3LS4yMyIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTM5LjM0LDU2LjY1YTExLDExLDAsMCwxLDIxLjE3LS4xNCIvPjwvZz48L3N2Zz4=",
351
- category: "security",
352
- onRequest: true,
353
- onResponse: false
354
- },
355
- {
356
- id: "latency",
357
- name: "Latency",
358
- description: "Description of the Latency Gravitee Policy",
359
- version: "1.4.0",
360
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:latency:configuration:LatencyPolicyConfiguration\",\n \"properties\" : {\n \"time\" : {\n \"title\": \"Time duration\",\n \"type\" : \"integer\",\n \"default\": 100\n },\n \"timeUnit\" : {\n \"title\": \"Time unit\",\n \"type\" : \"string\",\n \"default\": \"MILLISECONDS\",\n \"enum\" : [ \"MILLISECONDS\", \"SECONDS\" ]\n }\n }\n}",
361
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkFQSSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMzUsMTMuMzdhNDMsNDMsMCwxLDAsNDMuMDUsNDNBNDMsNDMsMCwwLDAsNTAuMzUsMTMuMzdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTAuMzUsNzguNTFhMjIuMSwyMi4xLDAsMSwxLDIyLjExLTIyLjFBMjIuMTMsMjIuMTMsMCwwLDEsNTAuMzUsNzguNTFabTAtNDIuNWEyMC40LDIwLjQsMCwxLDAsMjAuNDEsMjAuNEEyMC40MiwyMC40MiwwLDAsMCw1MC4zNSwzNloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MC4zNSw1OS43OGEzLjM4LDMuMzgsMCwxLDEsMy4zOC0zLjM3QTMuMzcsMy4zNywwLDAsMSw1MC4zNSw1OS43OFptMC01LjA1QTEuNjgsMS42OCwwLDEsMCw1Miw1Ni40MSwxLjY4LDEuNjgsMCwwLDAsNTAuMzUsNTQuNzNaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTIsNTUuMzVhLjg0Ljg0LDAsMCwxLS41NS0uMjEuODUuODUsMCwwLDEtLjA5LTEuMmw5Ljc2LTExLjE5YS44NS44NSwwLDAsMSwxLjI5LDEuMTFsLTkuNzYsMTEuMkEuODcuODcsMCwwLDEsNTIsNTUuMzVaIi8+PC9nPjwvc3ZnPg==",
362
- category: "others",
363
- onRequest: true,
364
- onResponse: false
365
- },
366
- {
367
- id: "metrics-reporter",
368
- name: "Metrics Reporter",
369
- description: "Description of the Assign metrics Policy",
370
- version: "1.1.0",
371
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:metricsreporter:configuration:MetricsReporterPolicyConfiguration\",\n \"properties\" : {\n \"method\" : {\n \"title\": \"HTTP Method\",\n \"description\": \"HTTP method to invoke the endpoint.\",\n \"type\" : \"string\",\n \"default\": \"POST\",\n \"enum\" : [ \"POST\", \"PUT\", \"PATCH\" ]\n },\n \"url\": {\n \"title\": \"URL\",\n \"type\" : \"string\"\n },\n \"useSystemProxy\": {\n \"title\": \"Use system proxy\",\n \"description\": \"Use the configured system proxy.\",\n \"type\": \"boolean\"\n },\n \"headers\" : {\n \"type\" : \"array\",\n \"title\": \"Request Headers\",\n \"items\" : {\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:metricsreporter:configuration:HttpHeader\",\n \"title\": \"Header\",\n \"properties\" : {\n \"name\" : {\n \"title\": \"Name\",\n \"type\" : \"string\"\n },\n \"value\" : {\n \"title\": \"Value\",\n \"type\" : \"string\"\n }\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ]\n },\n \"body\" : {\n \"title\": \"Request body\",\n \"type\" : \"string\",\n \"x-schema-form\": {\n \"type\": \"codemirror\",\n \"codemirrorOptions\": {\n \"placeholder\": \"Put request body here\",\n \"lineWrapping\": true,\n \"lineNumbers\": true,\n \"allowDropFileTypes\": true,\n \"autoCloseTags\": true\n }\n }\n }\n },\"required\": [\n \"url\",\n \"method\",\n \"body\"\n ]\n}\n",
372
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkFQSSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMzUsMTQuMjRhNDMsNDMsMCwxLDAsNDMuMDUsNDNBNDMsNDMsMCwwLDAsNTAuMzUsMTQuMjRaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMzUsMTQuMjRhNDMsNDMsMCwxLDAsNDMuMDUsNDNBNDMsNDMsMCwwLDAsNTAuMzUsMTQuMjRaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNzguNjUsNzAuNDVsLTE0LDE0YTIuMTgsMi4xOCwwLDAsMS0zLjA4LDBsLTQwLTQwYTIuMTgsMi4xOCwwLDAsMSwwLTMuMDhsMTQtMTRhMi4xOCwyLjE4LDAsMCwxLDMuMDgsMGw0MCw0MEEyLjE4LDIuMTgsMCwwLDEsNzguNjUsNzAuNDVabS0xNS41Niw5LjRMNzQsNjguOTEsMzcuMDksMzIsMjYuMTUsNDIuOTFaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNDcuODgsMzkuNjhsLTcsN2EyLjE4LDIuMTgsMCwwLDEtMy4wOC0zLjA4bDctN2EyLjE4LDIuMTgsMCwxLDEsMy4wOCwzLjA4WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTU1LjA1LDQ2Ljg1bC0zLjkzLDMuOTNBMi4xNywyLjE3LDAsMSwxLDQ4LDQ3LjcxTDUyLDQzLjc3YTIuMTgsMi4xOCwwLDAsMSwzLjA4LDMuMDhaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjIuMjIsNTQsNTguMjksNThhMi4xOCwyLjE4LDAsMCwxLTMuMDgtMy4wOEw1OS4xNSw1MUEyLjE3LDIuMTcsMCwxLDEsNjIuMjIsNTRaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjkuNCw2MS4ybC03LDdhMi4xOCwyLjE4LDAsMCwxLTMuMDgtMy4wOGw3LTdBMi4xOCwyLjE4LDAsMSwxLDY5LjQsNjEuMloiLz48L2c+PC9zdmc+",
373
- category: "others",
374
- onRequest: false,
375
- onResponse: true
376
- },
377
- {
378
- id: "mock",
379
- name: "Mock",
380
- description: "Description of the Mock Gravitee Policy",
381
- version: "1.12.0",
382
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:mock:configuration:MockPolicyConfiguration\",\n \"properties\" : {\n \"status\" : {\n \"title\": \"HTTP Status Code\",\n \"description\": \"HTTP Status Code send to the consumer\",\n \"type\" : \"string\",\n \"enum\": [\n \"100\",\n \"101\",\n \"102\",\n \"200\",\n \"201\",\n \"202\",\n \"203\",\n \"204\",\n \"205\",\n \"206\",\n \"207\",\n \"300\",\n \"301\",\n \"302\",\n \"303\",\n \"304\",\n \"305\",\n \"307\",\n \"400\",\n \"401\",\n \"402\",\n \"403\",\n \"404\",\n \"405\",\n \"406\",\n \"407\",\n \"408\",\n \"409\",\n \"410\",\n \"411\",\n \"412\",\n \"413\",\n \"414\",\n \"415\",\n \"416\",\n \"417\",\n \"422\",\n \"423\",\n \"424\",\n \"429\",\n \"500\",\n \"501\",\n \"502\",\n \"503\",\n \"504\",\n \"505\",\n \"507\"\n ],\n \"x-schema-form\": {\n \"type\": \"select\",\n \"titleMap\": {\n \"100\": \"100 - CONTINUE\",\n \"101\": \"101 - SWITCHING_PROTOCOLS\",\n \"102\": \"102 - PROCESSING\",\n \"200\": \"200 - OK\",\n \"201\": \"201 - CREATED\",\n \"202\": \"202 - ACCEPTED\",\n \"203\": \"203 - NON_AUTHORITATIVE_INFORMATION\",\n \"204\": \"204 - NO_CONTENT\",\n \"205\": \"205 - RESET_CONTENT\",\n \"206\": \"206 - PARTIAL_CONTENT\",\n \"207\": \"207 - MULTI_STATUS\",\n \"300\": \"300 - MULTIPLE_CHOICES\",\n \"301\": \"301 - MOVED_PERMANENTLY\",\n \"302\": \"302 - MOVED_TEMPORARILY\",\n \"303\": \"303 - SEE_OTHER\",\n \"304\": \"304 - NOT_MODIFIED\",\n \"305\": \"305 - USE_PROXY\",\n \"307\": \"307 - TEMPORARY_REDIRECT\",\n \"400\": \"400 - BAD_REQUEST\",\n \"401\": \"401 - UNAUTHORIZED\",\n \"402\": \"402 - PAYMENT_REQUIRED\",\n \"403\": \"403 - FORBIDDEN\",\n \"404\": \"404 - NOT_FOUND\",\n \"405\": \"405 - METHOD_NOT_ALLOWED\",\n \"406\": \"406 - NOT_ACCEPTABLE\",\n \"407\": \"407 - PROXY_AUTHENTICATION_REQUIRED\",\n \"408\": \"408 - REQUEST_TIMEOUT\",\n \"409\": \"409 - CONFLICT\",\n \"410\": \"410 - GONE\",\n \"411\": \"411 - LENGTH_REQUIRED\",\n \"412\": \"412 - PRECONDITION_FAILED\",\n \"413\": \"413 - REQUEST_ENTITY_TOO_LARGE\",\n \"414\": \"414 - REQUEST_URI_TOO_LONG\",\n \"415\": \"415 - UNSUPPORTED_MEDIA_TYPE\",\n \"416\": \"416 - REQUESTED_RANGE_NOT_SATISFIABLE\",\n \"417\": \"417 - EXPECTATION_FAILED\",\n \"422\": \"422 - UNPROCESSABLE_ENTITY\",\n \"423\": \"423 - LOCKED\",\n \"424\": \"424 - FAILED_DEPENDENCY\",\n \"429\": \"429 - TOO_MANY_REQUESTS\",\n \"500\": \"500 - INTERNAL_SERVER_ERROR\",\n \"501\": \"501 - NOT_IMPLEMENTED\",\n \"502\": \"502 - BAD_GATEWAY\",\n \"503\": \"503 - SERVICE_UNAVAILABLE\",\n \"504\": \"504 - GATEWAY_TIMEOUT\",\n \"505\": \"505 - HTTP_VERSION_NOT_SUPPORTED\",\n \"507\": \"507 - INSUFFICIENT_STORAGE\"\n }\n }\n },\n \"headers\" : {\n \"type\" : \"array\",\n \"title\": \"Headers\",\n \"items\" : {\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:mock:configuration:HttpHeader\",\n \"title\": \"Header\",\n \"properties\" : {\n \"name\" : {\n \"title\": \"Name\",\n \"description\": \"Name of the header\",\n \"type\" : \"string\"\n },\n \"value\" : {\n \"title\": \"Value\",\n \"description\": \"Value of the header (support EL)\",\n \"type\" : \"string\",\n \"x-schema-form\": {\n \"expression-language\": true\n }\n }\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ]\n },\n \"content\" : {\n \"title\": \"Response body\",\n \"description\": \"The payload of the mocked response (support EL)\",\n \"type\" : \"string\",\n \"x-schema-form\": {\n \"type\": \"codemirror\",\n \"codemirrorOptions\": {\n \"placeholder\": \"Put the body content here\",\n \"lineWrapping\": true,\n \"lineNumbers\": true,\n \"allowDropFileTypes\": true,\n \"autoCloseTags\": true,\n \"mode\": \"text\"\n },\n \"expression-language\": true\n }\n }\n },\"required\": [\n \"status\"\n ]\n}\n",
383
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOjAuMDFlbTt9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkFQSSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMzUsMTMuMzdhNDMsNDMsMCwxLDAsNDMuMDUsNDNBNDMsNDMsMCwwLDAsNTAuMzUsMTMuMzdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNzUuMSw1Ny40SDY4Ljg2YTEsMSwwLDEsMSwwLTJINzUuMWExLDEsMCwwLDEsMCwyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTU3LjI5LDU3LjRIMjUuNjFhMSwxLDAsMCwxLDAtMkg1Ny4yOWExLDEsMCwwLDEsMCwyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTYzLjA3LDYzLjE5YTYuNzksNi43OSwwLDEsMSw2Ljc4LTYuNzlBNi43OSw2Ljc5LDAsMCwxLDYzLjA3LDYzLjE5Wm0wLTExLjU4YTQuOCw0LjgsMCwxLDAsNC43OSw0Ljc5QTQuOCw0LjgsMCwwLDAsNjMuMDcsNTEuNjFaIi8+PC9nPjxnIGlkPSJIT1NUSU5HIj48dGV4dCBjbGFzcz0iY2xzLTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjkzIC00Ljk4KSI+PHRzcGFuIGNsYXNzPSJjbHMtNCI+TTwvdHNwYW4+PHRzcGFuIHg9IjkuNzIiIHk9IjAiPm9jazwvdHNwYW4+PC90ZXh0PjwvZz48L3N2Zz4=",
384
- category: "others",
385
- onRequest: true,
386
- onResponse: false
387
- },
388
- {
389
- id: "oauth2",
390
- name: "OAuth2",
391
- description: "Description of the OAuth2 Gravitee Policy",
392
- version: "1.18.0",
393
- schema: "{\n \"type\": \"object\",\n \"id\": \"urn:jsonschema:io:gravitee:policy:oauth2:configuration:OAuth2PolicyConfiguration\",\n \"properties\": {\n \"oauthResource\": {\n \"title\": \"OAuth2 resource\",\n \"description\": \"OAuth2 resource used to validate token. Supports EL.\",\n \"type\": \"string\",\n \"x-schema-form\": {\n \"event\": {\n \"name\": \"fetch-resources\",\n \"regexTypes\": \"^oauth2\"\n },\n \"placeholder\": \"oauth-resource-name\"\n }\n },\n \"oauthCacheResource\": {\n \"title\": \"Cache resource\",\n \"description\": \"Cache resource used to store the tokens.\",\n \"type\": \"string\",\n \"x-schema-form\": {\n \"event\": {\n \"name\": \"fetch-resources\",\n \"regexTypes\": \"^cache\"\n },\n \"placeholder\": \"cache-resource-name\"\n }\n },\n \"extractPayload\": {\n \"title\": \"Extract OAuth2 payload\",\n \"description\": \"Push the token endpoint payload into the 'oauth.payload' context attribute.\",\n \"type\": \"boolean\",\n \"default\": false\n },\n \"checkRequiredScopes\": {\n \"title\": \"Check scopes\",\n \"description\": \"Check required scopes to access the resource\",\n \"type\": \"boolean\",\n \"default\": false\n },\n \"requiredScopes\": {\n \"type\": \"array\",\n \"title\": \"Required scopes\",\n \"description\": \"List of required scopes to access the resource.\",\n \"items\": {\n \"type\": \"string\",\n \"title\": \"Scope\"\n }\n },\n \"modeStrict\": {\n \"title\": \"Mode strict\",\n \"description\": \"Check scopes with exactly those configured\",\n \"type\": \"boolean\",\n \"default\": true\n },\n \"propagateAuthHeader\": {\n \"title\": \"Propagate Authorization header\",\n \"description\": \"Allows to propagate Authorization header to the target endpoints\",\n \"type\": \"boolean\",\n \"default\": true\n }\n },\n \"required\": [\n \"oauthResource\"\n ]\n}\n",
394
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fS5jbHMtNXtsZXR0ZXItc3BhY2luZzowLjAxZW07fS5jbHMtNntsZXR0ZXItc3BhY2luZzowZW07fS5jbHMtN3tsZXR0ZXItc3BhY2luZzotMC4wMWVtO30uY2xzLTh7bGV0dGVyLXNwYWNpbmc6MC4wMWVtO30uY2xzLTl7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy0xMHtsZXR0ZXItc3BhY2luZzotMC4wMWVtO30uY2xzLTExe2xldHRlci1zcGFjaW5nOi0wLjAxZW07fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJBUEkiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTUwLjM1LDEzLjM3YTQzLDQzLDAsMSwwLDQzLjA1LDQzQTQzLDQzLDAsMCwwLDUwLjM1LDEzLjM3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUwLjE5LDMzLjc1YzUuOCwwLDYuNTUuNTMsOC4zNiw2UTYzLjg5LDU1Ljg4LDY5LjIxLDcyYy45MywyLjgxLjA3LDUuMjUtMi4wOCw2LjM4LTIuODgsMS41MS01Ljg3LjMxLTcuMDgtMi45NC0uNzktMi4xMi0xLjMxLTQuMzUtMi4yMy02LjQxYTMuMjksMy4yOSwwLDAsMC0yLjI0LTEuNzcsOTIuMyw5Mi4zLDAsMCwwLTEwLjUyLDAsMy4yNywzLjI3LDAsMCwwLTIuMTksMS44Yy0uODUsMi0xLjMyLDQuMTMtMiw2LjE4LTEuMDYsMy0zLjQ3LDQuMzItNi4xNywzLjQ5LTIuODctLjg4LTQuMTktMy4zNy0zLjIyLTYuNXE1LTE2LjExLDEwLjEyLTMyLjE3QzQzLjQsMzQuMjcsNDQuMTIsMzMuNzUsNTAuMTksMzMuNzVaIi8+PC9nPjxnIGlkPSJIT1NUSU5HIj48dGV4dCBjbGFzcz0iY2xzLTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkyLjQ1IC00Ljk4KSI+T3BlbklEIDx0c3BhbiBjbGFzcz0iY2xzLTQiIHg9IjQxLjE3IiB5PSIwIj5DPC90c3Bhbj48dHNwYW4geD0iNDgiIHk9IjAiPm9ubmU8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTUiIHg9IjczLjkyIiB5PSIwIj5jPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy02IiB4PSI3OS40NSIgeT0iMCI+dCAtIDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNyIgeD0iOTIuMTkiIHk9IjAiPlU8L3RzcGFuPjx0c3BhbiB4PSI5OS44OSIgeT0iMCI+c2VyPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy04IiB4PSIxMTQuNTciIHk9IjAiPkk8L3RzcGFuPjx0c3BhbiB4PSIxMTcuNTYiIHk9IjAiPm48L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTkiIHg9IjEyNC4yMiIgeT0iMCI+ZjwvdHNwYW4+PHRzcGFuIHg9IjEyNy41NyIgeT0iMCI+bzwvdHNwYW4+PC90ZXh0Pjx0ZXh0IGNsYXNzPSJjbHMtMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTcuOTMgLTQuOTgpIj48dHNwYW4gY2xhc3M9ImNscy0xMCI+TzwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtMTEiIHg9IjguMSIgeT0iMCI+QTwvdHNwYW4+PHRzcGFuIHg9IjE1LjMiIHk9IjAiPnV0aDI8L3RzcGFuPjwvdGV4dD48L2c+PC9zdmc+",
395
- category: "security",
396
- onRequest: true,
397
- onResponse: false
398
- },
399
- {
400
- id: "policy-openid-userinfo",
401
- name: "OpenID Connect - UserInfo",
402
- description: "Description of the OpenID Connect - UserInfo Gravitee Policy",
403
- version: "1.4.0",
404
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:openid:userinfo:configuration:UserInfoPolicyConfiguration\",\n \"properties\" : {\n \"oauthResource\" : {\n \"title\": \"OpenID Connect resource\",\n \"description\": \"OpenID Connect resource used to validate token. (support EL)\",\n \"type\" : \"string\",\n \"x-schema-form\": {\n \"expression-language\": true\n }\n },\n \"extractPayload\" : {\n \"title\": \"Extract UserInfo payload\",\n \"description\": \"Extract UserInfo response and put it into the 'openid.userinfo.payload' context attribute.\",\n \"type\" : \"boolean\",\n \"default\": false\n }\n },\n \"required\": [\n \"oauthResource\"\n ]\n}\n",
405
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fS5jbHMtNXtsZXR0ZXItc3BhY2luZzowLjAxZW07fS5jbHMtNntsZXR0ZXItc3BhY2luZzowZW07fS5jbHMtN3tsZXR0ZXItc3BhY2luZzotMC4wMWVtO30uY2xzLTh7bGV0dGVyLXNwYWNpbmc6MC4wMWVtO30uY2xzLTl7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkFQSSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMzUsMTMuMzdhNDMsNDMsMCwxLDAsNDMuMDUsNDNBNDMsNDMsMCwwLDAsNTAuMzUsMTMuMzdaIi8+PGcgaWQ9ImM5RmtYVS50aWYiPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTc0LjU3LDYwLjE1QTE0LjQsMTQuNCwwLDAsMSw3Myw1OS44NGwtNi4yLTEuMzQtNi4yNi0xLjM3LS4xMiwwYy4zNS0uMjUuNzItLjQyLDEuMDYtLjYyLjg4LS41LDEuNzYtMSwyLjY1LTEuNDkuMTctLjA5LjE1LS4xNSwwLS4yM0EyMS44NywyMS44NywwLDAsMCw1OS45Myw1M2EyNS42NywyNS42NywwLDAsMC0zLS43MmMtLjE0LDAtLjE3LS4wOC0uMTctLjIxLDAtMS40MiwwLTIuODUsMC00LjI4LDAtLjE3LjA3LS4yLjIyLS4xOEEzNy44MSwzNy44MSwwLDAsMSw2My4yOCw0OWEzMC44OSwzMC44OSwwLDAsMSw1LjMsMi4xN2MuMzMuMTcuNjUuMzUsMSwuNTRhLjM4LjM4LDAsMCwwLC40NCwwYzEuMDktLjYzLDIuMTktMS4yNCwzLjMtMS44NmwuMjUtLjEzYzAsLjU4LjEsMS4xMy4xNiwxLjY5TDc0LDU0LjA1Yy4wNi42My4xMSwxLjI2LjE3LDEuODhzLjEyLDEuMi4xOCwxLjguMSwxLjE2LjE2LDEuNzRhMiwyLDAsMCwwLC4wOS41OFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik00OC4xMyw3NC4xM1YzNy45M2EuMzguMzgsMCwwLDEsLjI0LS40MWw2Ljk0LTMuMzcuMTMtLjA2YS41My41MywwLDAsMSwwLC4zcTAsMjAuMzEsMCw0MC42M2EuMzcuMzcsMCwwLDEtLjI2LjQxbC02Ljg4LDMuMjItLjE4LjA3YzAtMS40MywwLTIuODcsMC00LjNBLjcuNywwLDAsMCw0OC4xMyw3NC4xM1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik00OC4xMyw3NC4xM2EuNy43LDAsMCwxLDAsLjI5YzAsMS40MywwLDIuODcsMCw0LjNhMTEuMDksMTEuMDksMCwwLDEtMS42Mi0uMTVBMzcsMzcsMCwwLDEsNDIsNzcuN2EyOS4zNiwyOS4zNiwwLDAsMS04LjkyLTMuODEsMTcuMDcsMTcuMDcsMCwwLDEtNS4xNi01LDEwLjk0LDEwLjk0LDAsMCwxLTEuNjYtNC4zNkExMC4yNywxMC4yNywwLDAsMSwyNy41Myw1OGExNC4zLDE0LjMsMCwwLDEsMi43MS0zLjQzLDIxLjQ4LDIxLjQ4LDAsMCwxLDQuMjgtMy4xMSwzMC4xLDMwLjEsMCwwLDEsNS4yNC0yLjI4LDM2LjMsMzYuMywwLDAsMSw1LjYzLTEuMzRjLjQxLS4wNi44Mi0uMTEsMS4yMi0uMTguMTcsMCwuMjUsMCwuMjUuMjEsMCwxLjQsMCwyLjgsMCw0LjIsMCwuMTgtLjA2LjIzLS4yMy4yNmEyMS44NSwyMS44NSwwLDAsMC04LjU0LDMuMzUsMTEuNDIsMTEuNDIsMCwwLDAtMy43LDQsNy4zNSw3LjM1LDAsMCwwLS44NywzLjA1LDcuODIsNy44MiwwLDAsMCwyLjA2LDUuNjRBMTUuMDgsMTUuMDgsMCwwLDAsNDEsNzIuMjFhMjMuNjEsMjMuNjEsMCwwLDAsNS43NCwxLjczQzQ3LjIzLDc0LDQ3LjY4LDc0LjA3LDQ4LjEzLDc0LjEzWiIvPjwvZz48L2c+PGcgaWQ9IkhPU1RJTkciPjx0ZXh0IGNsYXNzPSJjbHMtMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTE0LjYzIC00Ljk4KSI+T3BlbklEIDx0c3BhbiBjbGFzcz0iY2xzLTQiIHg9IjQxLjE3IiB5PSIwIj5DPC90c3Bhbj48dHNwYW4geD0iNDgiIHk9IjAiPm9ubmU8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTUiIHg9IjczLjkyIiB5PSIwIj5jPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy02IiB4PSI3OS40NSIgeT0iMCI+dCAtIDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNyIgeD0iOTIuMTkiIHk9IjAiPlU8L3RzcGFuPjx0c3BhbiB4PSI5OS44OSIgeT0iMCI+c2VyPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy04IiB4PSIxMTQuNTciIHk9IjAiPkk8L3RzcGFuPjx0c3BhbiB4PSIxMTcuNTYiIHk9IjAiPm48L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTkiIHg9IjEyNC4yMiIgeT0iMCI+ZjwvdHNwYW4+PHRzcGFuIHg9IjEyNy41NyIgeT0iMCI+bzwvdHNwYW4+PC90ZXh0PjwvZz48L3N2Zz4=",
406
- category: "security",
407
- onRequest: true,
408
- onResponse: false
409
- },
410
- {
411
- id: "policy-override-request-method",
412
- name: "Override HTTP Method",
413
- description: "Description of the override HTTP request method Gravitee Policy",
414
- version: "1.3.0",
415
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:overriderequestmethod:configuration:OverrideRequestMethodPolicyConfiguration\",\n \"properties\" : {\n \"method\" : {\n \"title\": \"HTTP Method\",\n \"description\": \"Override the HTTP request method with the given value.\",\n \"type\" : \"string\",\n \"default\": \"GET\",\n \"enum\" : [ \"GET\", \"POST\", \"PUT\", \"DELETE\", \"PATCH\", \"HEAD\", \"CONNECT\", \"OPTIONS\", \"TRACE\" ]\n }\n },\n \"required\": [\n \"method\"\n ]\n}\n",
416
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fS5jbHMtNXtsZXR0ZXItc3BhY2luZzowLjAxZW07fS5jbHMtNntsZXR0ZXItc3BhY2luZzowZW07fS5jbHMtN3tsZXR0ZXItc3BhY2luZzotMC4wMWVtO30uY2xzLTh7bGV0dGVyLXNwYWNpbmc6MC4wMWVtO30uY2xzLTl7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy0xMHtsZXR0ZXItc3BhY2luZzowLjAxZW07fS5jbHMtMTF7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy0xMntsZXR0ZXItc3BhY2luZzowZW07fS5jbHMtMTN7bGV0dGVyLXNwYWNpbmc6MC4wNGVtO308L3N0eWxlPjwvZGVmcz48ZyBpZD0iQVBJIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01MC4zNSwxMy4zN2E0Myw0MywwLDEsMCw0My4wNSw0M0E0Myw0MywwLDAsMCw1MC4zNSwxMy4zN1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik03NC4zOSw3NS44NkgyNi4zMmEzLjQxLDMuNDEsMCwwLDEtMy40MS0zLjQxVjQ4LjE0QTEuMDYsMS4wNiwwLDAsMSwyNCw0Ny4wOEg3Ni43NGExLjA2LDEuMDYsMCwwLDEsMS4wNiwxLjA2VjcyLjQ1QTMuNDEsMy40MSwwLDAsMSw3NC4zOSw3NS44NlpNMjUsNDkuMTlWNzIuNDVhMS4zLDEuMywwLDAsMCwxLjMsMS4zSDc0LjM5YTEuMywxLjMsMCwwLDAsMS4zLTEuM1Y0OS4xOVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik03Ni43NCw0OS4xOUgyNGExLDEsMCwwLDEtMS4wNS0xVjQwLjM3QTMuNDEsMy40MSwwLDAsMSwyNi4zMiwzN0g3NC4zOWEzLjQxLDMuNDEsMCwwLDEsMy40MSwzLjQxdjcuNzdBMS4wNSwxLjA1LDAsMCwxLDc2Ljc0LDQ5LjE5Wk0yNSw0Ny4wOEg3NS42OVY0MC4zN2ExLjMsMS4zLDAsMCwwLTEuMy0xLjNIMjYuMzJhMS4zLDEuMywwLDAsMC0xLjMsMS4zWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTYxLjY1LDQzLjA4YTEuMzcsMS4zNywwLDEsMS0xLjM3LTEuMzdBMS4zNiwxLjM2LDAsMCwxLDYxLjY1LDQzLjA4WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTY2LjY3LDQzLjA4YTEuMzcsMS4zNywwLDEsMS0xLjM3LTEuMzdBMS4zNiwxLjM2LDAsMCwxLDY2LjY3LDQzLjA4WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTcxLjY5LDQzLjA4YTEuMzcsMS4zNywwLDEsMS0xLjM3LTEuMzdBMS4zNiwxLjM2LDAsMCwxLDcxLjY5LDQzLjA4WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUwLjM1LDYyLjc2QTEuMDUsMS4wNSwwLDAsMSw0OS4zLDYxLjdWMzhhMS4wNiwxLjA2LDAsMCwxLDIuMTEsMFY2MS43QTEuMDUsMS4wNSwwLDAsMSw1MC4zNSw2Mi43NloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MC4zNSw2NC41NGExLDEsMCwwLDEtLjc0LS4zMWwtNy43Ny03Ljc2YTEuMDcsMS4wNywwLDAsMSwwLTEuNSwxLjA2LDEuMDYsMCwwLDEsMS40OSwwbDcsNyw3LTdhMS4wNiwxLjA2LDAsMCwxLDEuNDksMCwxLjA3LDEuMDcsMCwwLDEsMCwxLjVMNTEuMSw2NC4yM0ExLjA1LDEuMDUsMCwwLDEsNTAuMzUsNjQuNTRaIi8+PC9nPjxnIGlkPSJIT1NUSU5HIj48dGV4dCBjbGFzcz0iY2xzLTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMjMuNiAtNC45OCkiPk9wZW5JRCA8dHNwYW4gY2xhc3M9ImNscy00IiB4PSI0MS4xNyIgeT0iMCI+QzwvdHNwYW4+PHRzcGFuIHg9IjQ4IiB5PSIwIj5vbm5lPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy01IiB4PSI3My45MiIgeT0iMCI+YzwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNiIgeD0iNzkuNDUiIHk9IjAiPnQgLSA8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTciIHg9IjkyLjE5IiB5PSIwIj5VPC90c3Bhbj48dHNwYW4geD0iOTkuODkiIHk9IjAiPnNlcjwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtOCIgeD0iMTE0LjU3IiB5PSIwIj5JPC90c3Bhbj48dHNwYW4geD0iMTE3LjU2IiB5PSIwIj5uPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy05IiB4PSIxMjQuMjIiIHk9IjAiPmY8L3RzcGFuPjx0c3BhbiB4PSIxMjcuNTciIHk9IjAiPm88L3RzcGFuPjwvdGV4dD48dGV4dCBjbGFzcz0iY2xzLTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIzLjEzIC02LjM2KSI+PHRzcGFuIGNsYXNzPSJjbHMtMTAiPk88L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTExIiB4PSI4LjQ0IiB5PSIwIj52PC90c3Bhbj48dHNwYW4geD0iMTQuMDkiIHk9IjAiPmU8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTEyIiB4PSIyMC4xIiB5PSIwIj5ycjwvdHNwYW4+PHRzcGFuIHg9IjI4LjA0IiB5PSIwIj5pZGUgSDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtMTMiIHg9IjU0IiB5PSIwIj5UPC90c3Bhbj48dHNwYW4geD0iNjAuNDIiIHk9IjAiPlRQIG1ldGhvZDwvdHNwYW4+PC90ZXh0PjwvZz48L3N2Zz4=",
417
- category: "transformation",
418
- onRequest: true,
419
- onResponse: false
420
- },
421
- {
422
- id: "quota",
423
- name: "Quota",
424
- description: "Description of the Quota Gravitee Policy",
425
- version: "1.14.0",
426
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:quota:configuration:QuotaPolicyConfiguration\",\n \"properties\" : {\n \"async\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"title\": \"Non-strict mode (async)\",\n \"description\": \"By activating this option, quota is applied in an asynchronous way meaning that the distributed counter value is not strict.\"\n },\n \"addHeaders\": {\n \"type\": \"boolean\",\n \"default\": true,\n \"title\": \"Add response headers\",\n \"description\": \"Add X-Quota-Limit, X-Quota-Remaining and X-Quota-Reset headers in HTTP response\"\n },\n \"quota\" : {\n \"type\" : \"object\",\n \"title\": \"Apply quota\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:quota:configuration:QuotaConfiguration\",\n \"properties\" : {\n \"key\": {\n \"type\": \"string\",\n \"default\": \"\",\n \"title\": \"Key\",\n \"description\": \"Key to identify a consumer against whom the quota will be applied. Leave it empty to use the default behavior (plan/subscription pair). Supports EL.\",\n \"x-schema-form\": {\n \"expression-language\": true\n }\n },\n \"limit\" : {\n \"type\" : \"integer\",\n \"title\": \"Max requests (static)\",\n \"description\": \"Static limit on the number of requests that can be sent (this limit is used if the value > 0).\",\n \"minimum\": 0\n },\n \"dynamicLimit\" : {\n \"type\" : \"string\",\n \"title\": \"Max requests (dynamic)\",\n \"description\": \"Dynamic limit on the number of requests that can be sent (this limit is used if static limit = 0). The dynamic value is based on EL expressions.\",\n \"x-schema-form\": {\n \"expression-language\": true\n }\n },\n \"periodTime\" : {\n \"type\" : \"integer\",\n \"title\": \"Time duration\",\n \"default\": 1\n },\n \"periodTimeUnit\" : {\n \"type\" : \"string\",\n \"title\": \"Time unit\",\n \"default\": \"MONTHS\",\n \"enum\" : [ \"HOURS\", \"DAYS\", \"WEEKS\", \"MONTHS\" ]\n }\n },\n \"required\": [\n \"periodTime\",\n \"periodTimeUnit\"\n ]\n }\n },\n \"required\": [\n \"quota\"\n ]\n}\n",
427
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZpbGw6bm9uZTtzdHJva2U6I2ZmZjtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MnB4O30uY2xzLTR7Zm9udC1zaXplOjEycHg7ZmlsbDojMWQxZDFiO2ZvbnQtZmFtaWx5Ok15cmlhZFByby1SZWd1bGFyLCBNeXJpYWQgUHJvO30uY2xzLTV7bGV0dGVyLXNwYWNpbmc6MGVtO30uY2xzLTZ7bGV0dGVyLXNwYWNpbmc6MGVtO30uY2xzLTd7bGV0dGVyLXNwYWNpbmc6LTAuMDRlbTt9LmNscy04e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fS5jbHMtOXtsZXR0ZXItc3BhY2luZzowZW07fS5jbHMtMTB7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy0xMXtsZXR0ZXItc3BhY2luZzowZW07fS5jbHMtMTJ7bGV0dGVyLXNwYWNpbmc6MGVtO30uY2xzLTEze2xldHRlci1zcGFjaW5nOi0wLjAyZW07fS5jbHMtMTR7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy0xNXtsZXR0ZXItc3BhY2luZzowLjAxZW07fS5jbHMtMTZ7bGV0dGVyLXNwYWNpbmc6MC4wMWVtO30uY2xzLTE3e2xldHRlci1zcGFjaW5nOjBlbTt9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkFQSSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMzUsMTMuMzdhNDMsNDMsMCwxLDAsNDMuMDUsNDNBNDMsNDMsMCwwLDAsNTAuMzUsMTMuMzdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNDYuNyw0OC4yMWE4LjMxLDguMzEsMCwxLDEtOC4zLDguMzFBOC4zMiw4LjMyLDAsMCwxLDQ2LjcsNDguMjFabTAsMTQuOWE2LjU5LDYuNTksMCwxLDAtNi41OC02LjU5QTYuNiw2LjYsMCwwLDAsNDYuNyw2My4xMVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0yNS41OSwzNGE2LjA4LDYuMDgsMCwxLDEtNi4wOCw2LjA4QTYuMDksNi4wOSwwLDAsMSwyNS41OSwzNFptMCwxMC40M2E0LjM1LDQuMzUsMCwxLDAtNC4zNS00LjM1QTQuMzYsNC4zNiwwLDAsMCwyNS41OSw0NC40NFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0yNS41OSw2Ni42NmE2LjA3LDYuMDcsMCwxLDEtNi4wOCw2LjA3QTYuMDgsNi4wOCwwLDAsMSwyNS41OSw2Ni42NlptMCwxMC40MmE0LjM1LDQuMzUsMCwxLDAtNC4zNS00LjM1QTQuMzYsNC4zNiwwLDAsMCwyNS41OSw3Ny4wOFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik00MS40NCw2MC45M2EuODYuODYsMCwwLDEsLjQ0LDEuNkwyOS43Miw2OS43OWEuODUuODUsMCwwLDEtMS4xOC0uMy44Ny44NywwLDAsMSwuMy0xLjE4TDQxLDYxLjA1QS44Ni44NiwwLDAsMSw0MS40NCw2MC45M1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0yOS4yOCw0My4xM2EuODguODgsMCwwLDEsLjQ0LjEybDEyLjE2LDcuMjdBLjg2Ljg2LDAsMSwxLDQxLDUyTDI4Ljg0LDQ0LjczYS44Ni44NiwwLDAsMSwuNDQtMS42WiIvPjxsaW5lIGNsYXNzPSJjbHMtMyIgeDE9IjUzLjI5IiB5MT0iNTYuNTIiIHgyPSI4MS4yIiB5Mj0iNTYuNTIiLz48L2c+PGcgaWQ9IkhPU1RJTkciPjx0ZXh0IGNsYXNzPSJjbHMtNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAwLjcxIC00Ljk4KSI+PHRzcGFuIGNsYXNzPSJjbHMtNSI+UjwvdHNwYW4+PHRzcGFuIHg9IjYuNSIgeT0iMCI+ZWc8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTYiIHg9IjE5LjIyIiB5PSIwIj5lPC90c3Bhbj48dHNwYW4geD0iMjUuMiIgeT0iMCI+eDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNyIgeD0iMzAuNzYiIHk9IjAiPiA8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTgiIHg9IjMyLjgxIiB5PSIwIj5UPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy05IiB4PSIzOC42OSIgeT0iMCI+aDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtMTAiIHg9IjQ1LjM1IiB5PSIwIj5yPC90c3Bhbj48dHNwYW4geD0iNDkuMTUiIHk9IjAiPmU8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTExIiB4PSI1NS4xNiIgeT0iMCI+YTwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtMTIiIHg9IjYwLjkiIHk9IjAiPnQgPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy0xMyIgeD0iNjcuNDIiIHk9IjAiPlA8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTEwIiB4PSI3My42MSIgeT0iMCI+cjwvdHNwYW4+PHRzcGFuIHg9Ijc3LjQxIiB5PSIwIj5vPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy0xNCIgeD0iODQiIHk9IjAiPnQ8L3RzcGFuPjx0c3BhbiB4PSI4Ny45IiB5PSIwIj5lPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy0xNSIgeD0iOTMuOTEiIHk9IjAiPmM8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTEyIiB4PSI5OS40NCIgeT0iMCI+dGlvbjwvdHNwYW4+PC90ZXh0Pjx0ZXh0IGNsYXNzPSJjbHMtNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTcuOTMgLTQuOTgpIj48dHNwYW4gY2xhc3M9ImNscy0xNiI+UjwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtMTciIHg9IjYuNiIgeT0iMCI+YTwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtMTQiIHg9IjEyLjM0IiB5PSIwIj50PC90c3Bhbj48dHNwYW4geD0iMTYuMjQiIHk9IjAiPmUgTGltaXRpbmc8L3RzcGFuPjwvdGV4dD48L2c+PC9zdmc+",
428
- category: "others",
429
- onRequest: true,
430
- onResponse: false
431
- },
432
- {
433
- id: "rate-limit",
434
- name: "Rate Limit",
435
- description: "Description of the Rate Limit Gravitee Policy",
436
- version: "1.14.0",
437
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:ratelimit:configuration:RateLimitPolicyConfiguration\",\n \"properties\" : {\n \"async\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"title\": \"Non-strict mode (async)\",\n \"description\": \"By activating this option, rate-limiting is applied in an asynchronous way meaning that the distributed counter value is not strict.\"\n },\n \"addHeaders\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"title\": \"Add response headers\",\n \"description\": \"Add X-Rate-Limit-Limit, X-Rate-Limit-Remaining and X-Rate-Limit-Reset headers in HTTP response\"\n },\n \"rate\" : {\n \"type\" : \"object\",\n \"title\": \"Apply rate-limiting\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:ratelimit:configuration:RateLimitConfiguration\",\n \"properties\" : {\n \"key\": {\n \"type\": \"string\",\n \"default\": \"\",\n \"title\": \"Key\",\n \"description\": \"Key to identify a consumer against whom the rate-limiting will be applied. Leave it empty to use the default behavior (plan/subscription pair). Supports EL.\",\n \"x-schema-form\": {\n \"expression-language\": true\n }\n },\n \"limit\" : {\n \"type\" : \"integer\",\n \"title\": \"Max requests (static)\",\n \"description\": \"Static limit on the number of requests that can be sent (this limit is used if the value > 0).\",\n \"minimum\": 0\n },\n \"dynamicLimit\" : {\n \"type\" : \"string\",\n \"title\": \"Max requests (dynamic)\",\n \"description\": \"Dynamic limit on the number of requests that can be sent (this limit is used if static limit = 0). The dynamic value is based on EL expressions.\",\n \"x-schema-form\": {\n \"expression-language\": true\n }\n },\n \"periodTime\" : {\n \"type\" : \"integer\",\n \"title\": \"Time duration\",\n \"default\": 1\n },\n \"periodTimeUnit\" : {\n \"type\" : \"string\",\n \"title\": \"Time unit\",\n \"default\": \"SECONDS\",\n \"enum\" : [ \"SECONDS\", \"MINUTES\" ]\n }\n },\n \"required\": [\n \"periodTime\",\n \"periodTimeUnit\"\n ]\n }\n },\n \"required\": [\n \"rate\"\n ]\n}\n",
438
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZpbGw6bm9uZTtzdHJva2U6I2ZmZjtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MnB4O30uY2xzLTR7Zm9udC1zaXplOjEycHg7ZmlsbDojMWQxZDFiO2ZvbnQtZmFtaWx5Ok15cmlhZFByby1SZWd1bGFyLCBNeXJpYWQgUHJvO30uY2xzLTV7bGV0dGVyLXNwYWNpbmc6MGVtO30uY2xzLTZ7bGV0dGVyLXNwYWNpbmc6MGVtO30uY2xzLTd7bGV0dGVyLXNwYWNpbmc6LTAuMDRlbTt9LmNscy04e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fS5jbHMtOXtsZXR0ZXItc3BhY2luZzowZW07fS5jbHMtMTB7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy0xMXtsZXR0ZXItc3BhY2luZzowZW07fS5jbHMtMTJ7bGV0dGVyLXNwYWNpbmc6MGVtO30uY2xzLTEze2xldHRlci1zcGFjaW5nOi0wLjAyZW07fS5jbHMtMTR7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy0xNXtsZXR0ZXItc3BhY2luZzowLjAxZW07fS5jbHMtMTZ7bGV0dGVyLXNwYWNpbmc6MC4wMWVtO30uY2xzLTE3e2xldHRlci1zcGFjaW5nOjBlbTt9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkFQSSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMzUsMTMuMzdhNDMsNDMsMCwxLDAsNDMuMDUsNDNBNDMsNDMsMCwwLDAsNTAuMzUsMTMuMzdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNDYuNyw0OC4yMWE4LjMxLDguMzEsMCwxLDEtOC4zLDguMzFBOC4zMiw4LjMyLDAsMCwxLDQ2LjcsNDguMjFabTAsMTQuOWE2LjU5LDYuNTksMCwxLDAtNi41OC02LjU5QTYuNiw2LjYsMCwwLDAsNDYuNyw2My4xMVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0yNS41OSwzNGE2LjA4LDYuMDgsMCwxLDEtNi4wOCw2LjA4QTYuMDksNi4wOSwwLDAsMSwyNS41OSwzNFptMCwxMC40M2E0LjM1LDQuMzUsMCwxLDAtNC4zNS00LjM1QTQuMzYsNC4zNiwwLDAsMCwyNS41OSw0NC40NFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0yNS41OSw2Ni42NmE2LjA3LDYuMDcsMCwxLDEtNi4wOCw2LjA3QTYuMDgsNi4wOCwwLDAsMSwyNS41OSw2Ni42NlptMCwxMC40MmE0LjM1LDQuMzUsMCwxLDAtNC4zNS00LjM1QTQuMzYsNC4zNiwwLDAsMCwyNS41OSw3Ny4wOFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik00MS40NCw2MC45M2EuODYuODYsMCwwLDEsLjQ0LDEuNkwyOS43Miw2OS43OWEuODUuODUsMCwwLDEtMS4xOC0uMy44Ny44NywwLDAsMSwuMy0xLjE4TDQxLDYxLjA1QS44Ni44NiwwLDAsMSw0MS40NCw2MC45M1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0yOS4yOCw0My4xM2EuODguODgsMCwwLDEsLjQ0LjEybDEyLjE2LDcuMjdBLjg2Ljg2LDAsMSwxLDQxLDUyTDI4Ljg0LDQ0LjczYS44Ni44NiwwLDAsMSwuNDQtMS42WiIvPjxsaW5lIGNsYXNzPSJjbHMtMyIgeDE9IjUzLjI5IiB5MT0iNTYuNTIiIHgyPSI4MS4yIiB5Mj0iNTYuNTIiLz48L2c+PGcgaWQ9IkhPU1RJTkciPjx0ZXh0IGNsYXNzPSJjbHMtNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAwLjcxIC00Ljk4KSI+PHRzcGFuIGNsYXNzPSJjbHMtNSI+UjwvdHNwYW4+PHRzcGFuIHg9IjYuNSIgeT0iMCI+ZWc8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTYiIHg9IjE5LjIyIiB5PSIwIj5lPC90c3Bhbj48dHNwYW4geD0iMjUuMiIgeT0iMCI+eDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNyIgeD0iMzAuNzYiIHk9IjAiPiA8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTgiIHg9IjMyLjgxIiB5PSIwIj5UPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy05IiB4PSIzOC42OSIgeT0iMCI+aDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtMTAiIHg9IjQ1LjM1IiB5PSIwIj5yPC90c3Bhbj48dHNwYW4geD0iNDkuMTUiIHk9IjAiPmU8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTExIiB4PSI1NS4xNiIgeT0iMCI+YTwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtMTIiIHg9IjYwLjkiIHk9IjAiPnQgPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy0xMyIgeD0iNjcuNDIiIHk9IjAiPlA8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTEwIiB4PSI3My42MSIgeT0iMCI+cjwvdHNwYW4+PHRzcGFuIHg9Ijc3LjQxIiB5PSIwIj5vPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy0xNCIgeD0iODQiIHk9IjAiPnQ8L3RzcGFuPjx0c3BhbiB4PSI4Ny45IiB5PSIwIj5lPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy0xNSIgeD0iOTMuOTEiIHk9IjAiPmM8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTEyIiB4PSI5OS40NCIgeT0iMCI+dGlvbjwvdHNwYW4+PC90ZXh0Pjx0ZXh0IGNsYXNzPSJjbHMtNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTcuOTMgLTQuOTgpIj48dHNwYW4gY2xhc3M9ImNscy0xNiI+UjwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtMTciIHg9IjYuNiIgeT0iMCI+YTwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtMTQiIHg9IjEyLjM0IiB5PSIwIj50PC90c3Bhbj48dHNwYW4geD0iMTYuMjQiIHk9IjAiPmUgTGltaXRpbmc8L3RzcGFuPjwvdGV4dD48L2c+PC9zdmc+",
439
- category: "others",
440
- onRequest: true,
441
- onResponse: false
442
- },
443
- {
444
- id: "regex-threat-protection",
445
- name: "Regex Threat Protection",
446
- description: "Description of the RegexThreatProtection Gravitee Policy",
447
- version: "1.2.0",
448
- schema: "{\n \"type\": \"object\",\n \"id\": \"urn:jsonschema:io:gravitee:policy:threatprotection:regex:RegexThreatProtectionPolicyConfiguration\",\n \"properties\": {\n \"regex\": {\n \"title\": \"Regex\",\n \"description\": \"Regex used to detect malicious injections. You can enable this regular expression on headers, path and body or add multiple Regex Threat Protection Policies with different regex depending on your needs.<br><br>Some regex detection examples:<ul><li>SQL Injection: <code>.*[\\\\s]*((delete)|(exec)|(drop\\\\s*table)|(insert)|(shutdown)|(update)|(\\\\bor\\\\b)).*</code></li><li>Server-Side Include Injection: <code>.*&lt;!--#(include|exec|echo|config|printenv)\\\\s+.*</code></li><li>Java Exception Injection<code>.*Exception in thread.*</code></li><li>Javascript Injection<code>.*<\\\\s*script\\\\b[^>]*>[^<]+<\\\\s*/\\\\s*script\\\\s*>.*</code></li><li>XPath Injection: <code>.*(/(@?[\\\\w_?\\\\w:\\\\*]+(\\\\[[^]]+\\\\])*)?)+.*</code></li></ul>\",\n \"type\": \"string\",\n \"format\": \"java-regex\"\n },\n \"caseSensitive\": {\n \"title\": \"Case sensitive\",\n \"description\": \"Perform case sensitive matching.<br><strong>WARNING</strong>: Please beware that enabling case sensitive matching may let pass some risky patterns such as <code>DrOp TaBlE</code>.\",\n \"type\": \"boolean\",\n \"default\": false\n },\n \"checkHeaders\": {\n \"title\": \"Check headers\",\n \"description\": \"Evaluate regex on request headers\",\n \"type\": \"boolean\",\n \"default\": true\n },\n \"checkPath\": {\n \"title\": \"Check path\",\n \"description\": \"Evaluate regex on request path and query parameters\",\n \"type\": \"boolean\",\n \"default\": true\n },\n \"checkBody\": {\n \"title\": \"Check body\",\n \"description\": \"Evaluate regex on request body content\",\n \"type\": \"boolean\",\n \"default\": true\n }\n },\n \"required\": [\n \"regex\"\n ]\n}",
449
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOjBlbTt9LmNscy01e2xldHRlci1zcGFjaW5nOjBlbTt9LmNscy02e2xldHRlci1zcGFjaW5nOi0wLjA0ZW07fS5jbHMtN3tsZXR0ZXItc3BhY2luZzotMC4wMWVtO30uY2xzLTh7bGV0dGVyLXNwYWNpbmc6MGVtO30uY2xzLTl7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy0xMHtsZXR0ZXItc3BhY2luZzowZW07fS5jbHMtMTF7bGV0dGVyLXNwYWNpbmc6MGVtO30uY2xzLTEye2xldHRlci1zcGFjaW5nOi0wLjAyZW07fS5jbHMtMTN7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy0xNHtsZXR0ZXItc3BhY2luZzowLjAxZW07fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJBUEkiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTUwLjM1LDEzLjM3YTQzLDQzLDAsMSwwLDQzLjA1LDQzQTQzLDQzLDAsMCwwLDUwLjM1LDEzLjM3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUwLjM1LDc5LjExYS44NC44NCwwLDAsMS0uNDYtLjEzLDQyLDQyLDAsMCwxLTIwLjEtMzUuNnYtLjYzYS44Ny44NywwLDAsMSwuODgtLjg3LDcuNSw3LjUsMCwwLDAsNy42Ni03LjMuODcuODcsMCwwLDEsLjg4LS44OEg2MS41YS44Ny44NywwLDAsMSwuODcuODhBNy41LDcuNSwwLDAsMCw3MCw0MS44OGEuODcuODcsMCwwLDEsLjg3Ljg3di42M2E0MC44MSw0MC44MSwwLDAsMS0uODcsOC40QTQxLjg5LDQxLjg5LDAsMCwxLDU3LjkxLDczLjQ2LDQ0LjIsNDQuMiwwLDAsMSw1MC44Miw3OSwuODguODgsMCwwLDEsNTAuMzUsNzkuMTFaTTMxLjU0LDQzLjU5QTQwLjIzLDQwLjIzLDAsMCwwLDUwLjM1LDc3LjIxYTQyLjMsNDIuMywwLDAsMCw2LjM1LTVBNDAuMTMsNDAuMTMsMCwwLDAsNjguMzMsNTEuNDJhMzkuNTksMzkuNTksMCwwLDAsLjg0LTcuODMsOS4yNiw5LjI2LDAsMCwxLTguNS04LjE0SDQwQTkuMjcsOS4yNywwLDAsMSwzMS41NCw0My41OVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01Mi41Niw2My40SDQ4LjE1YS44OC44OCwwLDAsMS0uODgtLjg4VjU3LjIzYTQuNDcsNC40NywwLDAsMS0xLjQ0LTMuMjksNC41Miw0LjUyLDAsMCwxLDksMCw0LjQ2LDQuNDYsMCwwLDEtMS40MywzLjI5djUuMjlBLjg4Ljg4LDAsMCwxLDUyLjU2LDYzLjRaTTQ5LDYxLjY1aDIuNjdWNTYuODNhLjkuOSwwLDAsMSwuMzQtLjcsMi43MywyLjczLDAsMCwwLDEuMS0yLjE5LDIuNzgsMi43OCwwLDAsMC01LjU1LDAsMi43MywyLjczLDAsMCwwLDEuMSwyLjE5LjkuOSwwLDAsMSwuMzQuN1oiLz48L2c+PGcgaWQ9IkhPU1RJTkciPjx0ZXh0IGNsYXNzPSJjbHMtMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTYuMzcgLTQuOTgpIj48dHNwYW4gY2xhc3M9ImNscy00Ij5SPC90c3Bhbj48dHNwYW4geD0iNi41IiB5PSIwIj5lZzwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNSIgeD0iMTkuMjIiIHk9IjAiPmU8L3RzcGFuPjx0c3BhbiB4PSIyNS4yIiB5PSIwIj54PC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy02IiB4PSIzMC43NiIgeT0iMCI+IDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNyIgeD0iMzIuODEiIHk9IjAiPlQ8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTgiIHg9IjM4LjY5IiB5PSIwIj5oPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy05IiB4PSI0NS4zNSIgeT0iMCI+cjwvdHNwYW4+PHRzcGFuIHg9IjQ5LjE1IiB5PSIwIj5lPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy0xMCIgeD0iNTUuMTYiIHk9IjAiPmE8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTExIiB4PSI2MC45IiB5PSIwIj50IDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtMTIiIHg9IjY3LjQyIiB5PSIwIj5QPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy05IiB4PSI3My42MSIgeT0iMCI+cjwvdHNwYW4+PHRzcGFuIHg9Ijc3LjQxIiB5PSIwIj5vPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy0xMyIgeD0iODQiIHk9IjAiPnQ8L3RzcGFuPjx0c3BhbiB4PSI4Ny45IiB5PSIwIj5lPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy0xNCIgeD0iOTMuOTEiIHk9IjAiPmM8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTExIiB4PSI5OS40NCIgeT0iMCI+dGlvbjwvdHNwYW4+PC90ZXh0PjwvZz48L3N2Zz4=",
450
- category: "security",
451
- onRequest: true,
452
- onResponse: false
453
- },
454
- {
455
- id: "request-content-limit",
456
- name: "Request Content Limit",
457
- description: "Description of the Request Content Limit Gravitee Policy",
458
- version: "1.7.0",
459
- schema: "{\n \"type\" : \"object\",\n \"title\": \"Request content limit\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:rcl:configuration:RequestContentLimitPolicyConfiguration\",\n \"properties\" : {\n \"limit\" : {\n \"title\": \"Limit\",\n \"type\" : \"integer\"\n }\n },\n \"required\": [\"limit\"]\n}",
460
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOjBlbTt9LmNscy01e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fS5jbHMtNntsZXR0ZXItc3BhY2luZzowZW07fS5jbHMtN3tsZXR0ZXItc3BhY2luZzotMC4wMWVtO30uY2xzLTh7bGV0dGVyLXNwYWNpbmc6MGVtO30uY2xzLTl7bGV0dGVyLXNwYWNpbmc6MGVtO30uY2xzLTEwe2xldHRlci1zcGFjaW5nOi0wLjA0ZW07fS5jbHMtMTF7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy0xMntsZXR0ZXItc3BhY2luZzowZW07fS5jbHMtMTN7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy0xNHtsZXR0ZXItc3BhY2luZzotMC4wMmVtO30uY2xzLTE1e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fS5jbHMtMTZ7bGV0dGVyLXNwYWNpbmc6MC4wMWVtO308L3N0eWxlPjwvZGVmcz48ZyBpZD0iQVBJIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01MC4zNSwxMy4zN2E0Myw0MywwLDEsMCw0My4wNSw0M0E0Myw0MywwLDAsMCw1MC4zNSwxMy4zN1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MC4zNiw2My42OGMtNi40LDAtMTEuMjMtMi4zNC0xMS4yMy01LjQ1VjM5Ljg0YS44NS44NSwwLDEsMSwxLjY5LDBjMCwxLjc3LDMuOTIsMy43NSw5LjU0LDMuNzVzOS41My0yLDkuNTMtMy43NWEuODUuODUsMCwxLDEsMS42OSwwVjU4LjIzQzYxLjU4LDYxLjM0LDU2Ljc2LDYzLjY4LDUwLjM2LDYzLjY4Wk00MC44Miw0Mi44VjU4LjIzQzQwLjgyLDYwLDQ0Ljc0LDYyLDUwLjM2LDYyczkuNTMtMiw5LjUzLTMuNzVWNDIuOGMtMiwxLjUxLTUuNDIsMi40OC05LjUzLDIuNDhTNDIuNzcsNDQuMzEsNDAuODIsNDIuOFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MC4zNiw0NS4yOGMtNi40LDAtMTEuMjMtMi4zNC0xMS4yMy01LjQ0UzQ0LDM0LjM5LDUwLjM2LDM0LjM5czExLjIyLDIuMzQsMTEuMjIsNS40NVM1Ni43Niw0NS4yOCw1MC4zNiw0NS4yOFptMC05LjJjLTUuNjIsMC05LjU0LDItOS41NCwzLjc2czMuOTIsMy43NSw5LjU0LDMuNzUsOS41My0yLDkuNTMtMy43NVM1NiwzNi4wOCw1MC4zNiwzNi4wOFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MC4zNSw1Ny41NWMtNi40LDAtMTEuMjItMi4zNC0xMS4yMi01LjQ1YS44NS44NSwwLDEsMSwxLjY5LDBjMCwxLjc4LDMuOTIsMy43NSw5LjUzLDMuNzVzOS41NC0yLDkuNTQtMy43NWEuODQuODQsMCwwLDEsLjg0LS44NS44NS44NSwwLDAsMSwuODUuODVDNjEuNTgsNTUuMjEsNTYuNzUsNTcuNTUsNTAuMzUsNTcuNTVaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTAuMzUsNTEuNDJjLTYuNCwwLTExLjIyLTIuMzUtMTEuMjItNS40NWEuODUuODUsMCwxLDEsMS42OSwwYzAsMS43NywzLjkyLDMuNzUsOS41MywzLjc1czkuNTQtMiw5LjU0LTMuNzVhLjg0Ljg0LDAsMCwxLC44NC0uODUuODUuODUsMCwwLDEsLjg1Ljg1QzYxLjU4LDQ5LjA3LDU2Ljc1LDUxLjQyLDUwLjM1LDUxLjQyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUwLjM1LDc4LjQzYTQuMzYsNC4zNiwwLDEsMSw0LjM2LTQuMzZBNC4zNiw0LjM2LDAsMCwxLDUwLjM1LDc4LjQzWm0wLTdBMi42NywyLjY3LDAsMSwwLDUzLDc0LjA3LDIuNjYsMi42NiwwLDAsMCw1MC4zNSw3MS40MVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik03MCw3NC45Mkg1My44N2EuODUuODUsMCwxLDEsMC0xLjdINzBhLjg1Ljg1LDAsMCwxLDAsMS43WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTQ2Ljg0LDc0LjkySDMwLjcxYS44NS44NSwwLDAsMSwwLTEuN0g0Ni44NGEuODUuODUsMCwxLDEsMCwxLjdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTAuMzUsNzEuNDFhLjg1Ljg1LDAsMCwxLS44NC0uODVWNjIuODNhLjg1Ljg1LDAsMSwxLDEuNjksMHY3LjczQS44NS44NSwwLDAsMSw1MC4zNSw3MS40MVoiLz48L2c+PGcgaWQ9IkhPU1RJTkciPjx0ZXh0IGNsYXNzPSJjbHMtMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNi4zNiAtNC45OCkiPjx0c3BhbiBjbGFzcz0iY2xzLTQiPlI8L3RzcGFuPjx0c3BhbiB4PSI2LjUiIHk9IjAiPmVxdWVzdCA8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTUiIHg9IjQzLjE2IiB5PSIwIj5DPC90c3Bhbj48dHNwYW4geD0iNDkuOTkiIHk9IjAiPm88L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTYiIHg9IjU2LjU4IiB5PSIwIj5uPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy03IiB4PSI2My4xOSIgeT0iMCI+dDwvdHNwYW4+PHRzcGFuIHg9IjY3LjA5IiB5PSIwIj5lPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy02IiB4PSI3My4xIiB5PSIwIj5uPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy04IiB4PSI3OS43MSIgeT0iMCI+dCBMaW1pdDwvdHNwYW4+PC90ZXh0Pjx0ZXh0IGNsYXNzPSJjbHMtMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTExNS4zMyAtNC45OCkiPjx0c3BhbiBjbGFzcz0iY2xzLTQiPlI8L3RzcGFuPjx0c3BhbiB4PSI2LjUiIHk9IjAiPmVnPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy05IiB4PSIxOS4yMiIgeT0iMCI+ZTwvdHNwYW4+PHRzcGFuIHg9IjI1LjIiIHk9IjAiPng8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTEwIiB4PSIzMC43NiIgeT0iMCI+IDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtMTEiIHg9IjMyLjgxIiB5PSIwIj5UPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy0xMiIgeD0iMzguNjkiIHk9IjAiPmg8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTEzIiB4PSI0NS4zNSIgeT0iMCI+cjwvdHNwYW4+PHRzcGFuIHg9IjQ5LjE1IiB5PSIwIj5lPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy02IiB4PSI1NS4xNiIgeT0iMCI+YTwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtOCIgeD0iNjAuOSIgeT0iMCI+dCA8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTE0IiB4PSI2Ny40MiIgeT0iMCI+UDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtMTMiIHg9IjczLjYxIiB5PSIwIj5yPC90c3Bhbj48dHNwYW4geD0iNzcuNDEiIHk9IjAiPm88L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTE1IiB4PSI4NCIgeT0iMCI+dDwvdHNwYW4+PHRzcGFuIHg9Ijg3LjkiIHk9IjAiPmU8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTE2IiB4PSI5My45MSIgeT0iMCI+YzwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtOCIgeD0iOTkuNDQiIHk9IjAiPnRpb248L3RzcGFuPjwvdGV4dD48L2c+PC9zdmc+",
461
- category: "others",
462
- onRequest: true,
463
- onResponse: false
464
- },
465
- {
466
- id: "resource-filtering",
467
- name: "Resource Filtering",
468
- description: "Description of the Resource Filtering Gravitee Policy",
469
- version: "1.8.0",
470
- schema: "{\n \"type\": \"object\",\n \"id\": \"urn:jsonschema:io:gravitee:policy:resourcefiltering:configuration:ResourceFilteringPolicyConfiguration\",\n \"properties\": {\n \"whitelist\": {\n \"title\": \"Whitelist\",\n \"type\": \"array\",\n \"items\": {\n \"title\": \"Rule\",\n \"type\": \"object\",\n \"id\": \"urn:jsonschema:io:gravitee:policy:resourcefiltering:configuration:Resource\",\n \"properties\": {\n \"pattern\": {\n \"type\": \"string\",\n \"title\": \"Path pattern\",\n \"description\": \"Ant-style path patterns\"\n },\n \"methods\": {\n \"title\": \"Methods\",\n \"description\": \"HTTP Methods\",\n \"type\": \"array\",\n \"items\" : {\n \"type\" : \"string\",\n \"enum\" : [ \"CONNECT\", \"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"PATCH\", \"POST\", \"PUT\", \"TRACE\" ]\n }\n }\n },\n \"required\": [\n \"pattern\"\n ]\n }\n },\n \"blacklist\": {\n \"title\": \"Blacklist\",\n \"type\": \"array\",\n \"items\": {\n \"title\": \"Rule\",\n \"type\": \"object\",\n \"id\": \"urn:jsonschema:io:gravitee:policy:resourcefiltering:configuration:Resource\",\n \"properties\": {\n \"pattern\": {\n \"type\": \"string\",\n \"title\": \"Path pattern\",\n \"description\": \"Ant-style path patterns\"\n },\n \"methods\": {\n \"title\": \"Methods\",\n \"description\": \"HTTP Methods\",\n \"type\": \"array\",\n \"items\" : {\n \"type\" : \"string\",\n \"enum\" : [ \"CONNECT\", \"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"PATCH\", \"POST\", \"PUT\", \"TRACE\" ]\n }\n }\n },\n \"required\": [\n \"pattern\"\n ]\n }\n }\n }\n}\n",
471
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOjBlbTt9LmNscy01e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fS5jbHMtNntsZXR0ZXItc3BhY2luZzotMC4wMWVtO30uY2xzLTd7bGV0dGVyLXNwYWNpbmc6LTAuMDNlbTt9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkFQSSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMzUsMTMuMzdhNDMsNDMsMCwxLDAsNDMuMDUsNDNBNDMsNDMsMCwwLDAsNTAuMzUsMTMuMzdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTAuMzUsNzguOTNhMSwxLDAsMCwxLS4zMy0uMDZsLS40OS0uMjFhMjguNiwyOC42LDAsMCwxLTE3LjMtMjYuMzdWNDEuMDZhLjg3Ljg3LDAsMCwxLC44Ny0uODdjNS4xOSwwLDE2LjczLTYuMTQsMTYuODUtNi4yYS44My44MywwLDAsMSwuODEsMGMuMTIuMDYsMTEuNjUsNi4yLDE2Ljg1LDYuMmEuODcuODcsMCwwLDEsLjg3Ljg3VjUyLjI5YTI4LjYsMjguNiwwLDAsMS0xNy4zLDI2LjM3bC0uNDkuMjFBMSwxLDAsMCwxLDUwLjM1LDc4LjkzWk0zNCw0MS44OFY1Mi4yOUEyNi44OCwyNi44OCwwLDAsMCw1MC4yMSw3Ny4wN2wuMTQuMDYuMTUtLjA2QTI2Ljg3LDI2Ljg3LDAsMCwwLDY2Ljc0LDUyLjI5VjQxLjg4Yy01LjI5LS40OS0xNC4zMy01LjA4LTE2LjM5LTYuMTVDNDguMywzNi44LDM5LjI2LDQxLjM5LDM0LDQxLjg4WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTYxLDQ4LjYxSDQ4LjQ2YS40My40MywwLDAsMSwwLS44Nkg2MWEuNDMuNDMsMCwwLDEsMCwuODZaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNDMuNDcsNDguNjFIMzkuNjhhLjQzLjQzLDAsMCwxLDAtLjg2aDMuNzlhLjQzLjQzLDAsMSwxLDAsLjg2WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTYxLDU2LjgzSDU4LjMzYS40My40MywwLDAsMSwwLS44NUg2MWEuNDMuNDMsMCwxLDEsMCwuODVaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTMuMzUsNTYuODNIMzkuNjhhLjQzLjQzLDAsMSwxLDAtLjg1SDUzLjM1YS40My40MywwLDAsMSwwLC44NVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik02MSw2NS4wNkg1Mi44NWEuNDMuNDMsMCwxLDEsMC0uODVINjFhLjQzLjQzLDAsMSwxLDAsLjg1WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTQ3Ljg2LDY1LjA2SDM5LjY4YS40My40MywwLDEsMSwwLS44NWg4LjE4YS40My40MywwLDEsMSwwLC44NVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik00Niw1MS4xYTIuOTIsMi45MiwwLDEsMSwyLjkzLTIuOTJBMi45MiwyLjkyLDAsMCwxLDQ2LDUxLjFabTAtNUEyLjA3LDIuMDcsMCwxLDAsNDgsNDguMTgsMi4wNiwyLjA2LDAsMCwwLDQ2LDQ2LjEyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTU1Ljg0LDU5LjMzYTIuOTMsMi45MywwLDEsMSwyLjkyLTIuOTJBMi45MiwyLjkyLDAsMCwxLDU1Ljg0LDU5LjMzWm0wLTVhMi4wNywyLjA3LDAsMSwwLDIuMDcsMi4wN0EyLjA3LDIuMDcsMCwwLDAsNTUuODQsNTQuMzRaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTAuMzYsNjcuNTZhMi45MywyLjkzLDAsMSwxLDIuOTItMi45MkEyLjkzLDIuOTMsMCwwLDEsNTAuMzYsNjcuNTZabTAtNWEyLjA3LDIuMDcsMCwxLDAsMi4wNiwyLjA4QTIuMDcsMi4wNywwLDAsMCw1MC4zNiw2Mi41NloiLz48L2c+PGcgaWQ9IkhPU1RJTkciPjx0ZXh0IGNsYXNzPSJjbHMtMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTcuOTMgLTQuOTgpIj48dHNwYW4gY2xhc3M9ImNscy00Ij5SPC90c3Bhbj48dHNwYW4geD0iNi41IiB5PSIwIj5lc291PC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy01IiB4PSIzMC40NyIgeT0iMCI+cjwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNiIgeD0iMzQuMjciIHk9IjAiPmM8L3RzcGFuPjx0c3BhbiB4PSIzOS41OCIgeT0iMCI+ZSA8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTciIHg9IjQ4LjEzIiB5PSIwIj5GPC90c3Bhbj48dHNwYW4geD0iNTMuNjYiIHk9IjAiPmlsPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy02IiB4PSI1OS4zIiB5PSIwIj50PC90c3Bhbj48dHNwYW4geD0iNjMuMiIgeT0iMCI+ZTwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNCIgeD0iNjkuMjIiIHk9IjAiPnI8L3RzcGFuPjx0c3BhbiB4PSI3My4xOSIgeT0iMCI+aW5nPC90c3Bhbj48L3RleHQ+PC9nPjwvc3ZnPg==",
472
- category: "others",
473
- onRequest: true,
474
- onResponse: false
475
- },
476
- {
477
- id: "rest-to-soap",
478
- name: "Rest to SOAP Transformer",
479
- description: "Description of the Rest to SOAP Transformer Policy",
480
- version: "1.12.0",
481
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:rest2soap:configuration:SoapTransformerPolicyConfiguration\",\n \"properties\" : {\n \"envelope\" : {\n \"title\": \"SOAP Envelope\",\n \"description\": \"SOAP envelope used to invoke WS (support EL)\",\n \"type\" : \"string\",\n \"x-schema-form\": {\n \"type\": \"codemirror\",\n \"codemirrorOptions\": {\n \"placeholder\": \"Place your SOAP envelope here\",\n \"lineWrapping\": true,\n \"lineNumbers\": true,\n \"allowDropFileTypes\": true,\n \"autoCloseTags\": true,\n \"mode\": \"xml\"\n },\n \"expression-language\": true\n }\n },\n \"soapAction\": {\n \"title\": \"SOAP Action\",\n \"description\": \"'SOAPAction' HTTP header send when invoking WS\",\n \"type\": \"string\"\n },\n \"charset\": {\n \"title\": \"Charset\",\n \"description\": \"This charset will be appended to the Content-Type header value\",\n \"type\": \"string\"\n },\n \"preserveQueryParams\": {\n \"title\": \"Preserve Query Parameters\",\n \"description\": \"Define if the query parameters are propagated to the backend SOAP service\",\n \"type\": \"boolean\"\n },\n \"stripPath\": {\n \"title\": \"Strip path\",\n \"description\": \"Strip the path before propagating it to the backend SOAP service\",\n \"type\": \"boolean\",\n \"default\": false\n }\n },\n \"required\": [\n \"envelope\"\n ]\n}\n",
482
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOjBlbTt9LmNscy01e2xldHRlci1zcGFjaW5nOjAuMDNlbTt9LmNscy02e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fS5jbHMtN3tsZXR0ZXItc3BhY2luZzotMC4wMWVtO30uY2xzLTh7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy05e2xldHRlci1zcGFjaW5nOjBlbTt9LmNscy0xMHtsZXR0ZXItc3BhY2luZzotMC4wMWVtO30uY2xzLTExe2xldHRlci1zcGFjaW5nOjAuMDFlbTt9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkFQSSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMzUsMTMuMzdhNDMsNDMsMCwxLDAsNDMuMDUsNDNBNDMsNDMsMCwwLDAsNTAuMzUsMTMuMzdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjIuOSw0OC4yNGE0LjQxLDQuNDEsMCwxLDEsNC40LTQuNDFBNC40MSw0LjQxLDAsMCwxLDYyLjksNDguMjRabTAtN2EyLjU3LDIuNTcsMCwxLDAsMi41NiwyLjU2QTIuNTcsMi41NywwLDAsMCw2Mi45LDQxLjI3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTM3LjgxLDczLjMyYTQuNDEsNC40MSwwLDEsMSw0LjQxLTQuNDFBNC40MSw0LjQxLDAsMCwxLDM3LjgxLDczLjMyWm0wLTdhMi41NywyLjU3LDAsMSwwLDIuNTcsMi41NkEyLjU2LDIuNTYsMCwwLDAsMzcuODEsNjYuMzVaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTkuNDEsNDQuNzVoLTEzYS45Mi45MiwwLDAsMSwwLTEuODRoMTNhLjkyLjkyLDAsMCwxLDAsMS44NFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zNy44MSw2Ni4zNWEuOTIuOTIsMCwwLDEtLjkyLS45MlY1My4zM2EuOTIuOTIsMCwwLDEsMS44NCwwdjEyLjFBLjkyLjkyLDAsMCwxLDM3LjgxLDY2LjM1WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTU0LjM1LDY5Ljg0SDQxLjNhLjkzLjkzLDAsMCwxLDAtMS44NUg1NC4zNWEuOTMuOTMsMCwwLDEsMCwxLjg1WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTYyLjksNjEuMTNhLjkzLjkzLDAsMCwxLS45My0uOTJWNDcuMzJhLjkzLjkzLDAsMCwxLDEuODUsMFY2MC4yMUEuOTIuOTIsMCwwLDEsNjIuOSw2MS4xM1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik03Mi43LDY5LjkxSDUzLjA5YTEuNjIsMS42MiwwLDAsMS0xLjYxLTEuNjJWNjAuOWExLjYxLDEuNjEsMCwwLDEsMS42MS0xLjYxSDcyLjdhMS42MSwxLjYxLDAsMCwxLDEuNjEsMS42MXY3LjM5QTEuNjIsMS42MiwwLDAsMSw3Mi43LDY5LjkxWk01My4zMiw2OC4wNkg3Mi40N1Y2MS4xM0g1My4zMloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik03MCw2NC42YTEuMTUsMS4xNSwwLDEsMS0xLjE1LTEuMTVBMS4xNSwxLjE1LDAsMCwxLDcwLDY0LjZaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjQuNTYsNjUuNTJoLTguNGEuOTIuOTIsMCwwLDEsMC0xLjg0aDguNGEuOTIuOTIsMCwxLDEsMCwxLjg0WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTcyLjcsNzguNjhINTMuMDlhMS42MSwxLjYxLDAsMCwxLTEuNjEtMS42MVY2OS42OGExLjYyLDEuNjIsMCwwLDEsMS42MS0xLjYySDcyLjdhMS42MiwxLjYyLDAsMCwxLDEuNjEsMS42MnY3LjM5QTEuNjEsMS42MSwwLDAsMSw3Mi43LDc4LjY4Wk01My4zMiw3Ni44NEg3Mi40N1Y2OS45MUg1My4zMloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik03MCw3My4zN2ExLjE1LDEuMTUsMCwxLDEtMi4yOSwwLDEuMTUsMS4xNSwwLDAsMSwyLjI5LDBaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjQuNTYsNzQuMjloLTguNGEuOTIuOTIsMCwxLDEsMC0xLjg0aDguNGEuOTIuOTIsMCwwLDEsMCwxLjg0WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTQ3LjYyLDQ0Ljc1SDI4YTEuNjEsMS42MSwwLDAsMS0xLjYxLTEuNjFWMzUuNzVBMS42MSwxLjYxLDAsMCwxLDI4LDM0LjE0SDQ3LjYyYTEuNjEsMS42MSwwLDAsMSwxLjYxLDEuNjF2Ny4zOUExLjYxLDEuNjEsMCwwLDEsNDcuNjIsNDQuNzVaTTI4LjI0LDQyLjkxSDQ3LjM5VjM2SDI4LjI0WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTQ0LjkyLDM5LjQ1YTEuMTQsMS4xNCwwLDEsMS0xLjE0LTEuMTVBMS4xNCwxLjE0LDAsMCwxLDQ0LjkyLDM5LjQ1WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTM5LjQ4LDQwLjM3aC04LjRhLjkzLjkzLDAsMCwxLDAtMS44NWg4LjRhLjkzLjkzLDAsMCwxLDAsMS44NVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik00Ny42Miw1My41M0gyOGExLjYyLDEuNjIsMCwwLDEtMS42MS0xLjYyVjQ0LjUyQTEuNjEsMS42MSwwLDAsMSwyOCw0Mi45MUg0Ny42MmExLjYxLDEuNjEsMCwwLDEsMS42MSwxLjYxdjcuMzlBMS42MiwxLjYyLDAsMCwxLDQ3LjYyLDUzLjUzWk0yOC4yNCw1MS42OEg0Ny4zOVY0NC43NUgyOC4yNFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik00NC45Miw0OC4yMmExLjE0LDEuMTQsMCwxLDEtMS4xNC0xLjE1QTEuMTQsMS4xNCwwLDAsMSw0NC45Miw0OC4yMloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zOS40OCw0OS4xNGgtOC40YS45Mi45MiwwLDEsMSwwLTEuODRoOC40YS45Mi45MiwwLDAsMSwwLDEuODRaIi8+PC9nPjxnIGlkPSJIT1NUSU5HIj48dGV4dCBjbGFzcz0iY2xzLTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkyLjQ1IC00Ljk4KSI+PHRzcGFuIGNsYXNzPSJjbHMtNCI+UjwvdHNwYW4+PHRzcGFuIHg9IjYuNSIgeT0iMCI+b2w8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTUiIHg9IjE1LjkyIiB5PSIwIj5lPC90c3Bhbj48dHNwYW4geD0iMjIuMjciIHk9IjAiPi1CYXNlZCA8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTYiIHg9IjU4LjMyIiB5PSIwIj5BPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy03IiB4PSI2NS41MiIgeT0iMCI+Y2M8L3RzcGFuPjx0c3BhbiB4PSI3Ni4xMyIgeT0iMCI+ZXNzIDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtOCIgeD0iOTQuMTkiIHk9IjAiPkM8L3RzcGFuPjx0c3BhbiB4PSIxMDEuMDIiIHk9IjAiPm88L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTkiIHg9IjEwNy42IiB5PSIwIj5uPC90c3Bhbj48dHNwYW4geD0iMTE0LjIxIiB5PSIwIj50PC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy0xMCIgeD0iMTE4LjE5IiB5PSIwIj5yPC90c3Bhbj48dHNwYW4geD0iMTIxLjk5IiB5PSIwIj5vbDwvdHNwYW4+PC90ZXh0Pjx0ZXh0IGNsYXNzPSJjbHMtMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTcuOTMgLTQuOTgpIj48dHNwYW4gY2xhc3M9ImNscy00Ij5SPC90c3Bhbj48dHNwYW4geD0iNi41IiB5PSIwIj5lc3QgPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy03IiB4PSIyMy43OCIgeT0iMCI+dDwvdHNwYW4+PHRzcGFuIHg9IjI3LjY4IiB5PSIwIj5vIDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtMTEiIHg9IjM2LjgyIiB5PSIwIj5TPC90c3Bhbj48dHNwYW4geD0iNDIuOCIgeT0iMCI+b2FwPC90c3Bhbj48L3RleHQ+PC9nPjwvc3ZnPg==",
483
- category: "transformation",
484
- onRequest: true,
485
- onResponse: false
486
- },
487
- {
488
- id: "retry",
489
- name: "Retry",
490
- description: "Description of the Retry Gravitee Policy",
491
- version: "1.1.0",
492
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:retry:configuration:RetryPolicyConfiguration\",\n \"properties\": {\n \"condition\" : {\n \"title\": \"Retry condition\",\n \"description\": \"The condition to check to retry or not the request (supports EL)\",\n \"type\" : \"string\",\n \"x-schema-form\": {\n \"expression-language\": true\n }\n },\n \"maxRetries\": {\n \"title\": \"Max attempts\",\n \"description\": \"Number of attempts before failing (502 - Bad Gateway)\",\n \"type\" : \"integer\",\n \"default\": 1,\n \"minimum\": 1\n },\n \"delay\": {\n \"title\": \"Delay (ms)\",\n \"description\": \"The delay between each attempt\",\n \"default\": 0,\n \"type\" : \"integer\",\n \"minimum\": 0\n },\n \"timeout\": {\n \"title\": \"Timeout (ms)\",\n \"description\": \"Consider a failure if a retry attempt does not succeed in time\",\n \"default\": 1000,\n \"type\" : \"integer\",\n \"minimum\": 0\n },\n \"lastResponse\": {\n \"title\": \"Send last attempt response\",\n \"description\": \"Returns the last attempt response, even if it's a failure.\",\n \"type\" : \"boolean\",\n \"default\": false\n }\n },\n \"required\": [\n \"condition\",\n \"maxRetries\",\n \"timeout\"\n ]\n}",
493
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjtzdHJva2U6I2ZmZjtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkhPU1RJTkciPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTcuMzEsNTYuNzhhNDMsNDMsMCwxLDAsNDMtNDNBNDMsNDMsMCwwLDAsNy4zMSw1Ni43OFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik03MS41Miw1OS42OGEyMy4yOSwyMy4yOSwwLDAsMS0uNjQsNS40NmwtMS45NS0uNDdhMjEuMzQsMjEuMzQsMCwxLDAtMzQuODIsMTFsLTEuMzIsMS41QTIzLjMzLDIzLjMzLDAsMSwxLDcxLjUyLDU5LjY4WiIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSI2NC44MyA2MC44NSA2Ni4zMSA3Mi43MyA3NS44NiA2NS41MSA2NC44MyA2MC44NSIvPjwvZz48L3N2Zz4=",
494
- onRequest: true,
495
- onResponse: false
496
- },
497
- {
498
- id: "rbac",
499
- name: "Role Based Access Control",
500
- description: "Description of the RBAC Gravitee Policy",
501
- version: "1.1.0",
502
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:rbac:configuration:RoleBasedAccessControlPolicyConfiguration\",\n \"properties\" : {\n \"roles\": {\n \"type\" : \"array\",\n \"title\": \"Required roles\",\n \"description\": \"List of required roles to access the resource.\",\n \"items\" : {\n \"type\" : \"string\",\n \"title\": \"Role\"\n }\n },\n \"strict\" : {\n \"title\": \"Strict mode\",\n \"description\": \"Check roles with exactly those configured\",\n \"type\" : \"boolean\",\n \"default\": true\n }\n },\n \"required\": [\n \"roles\",\n \"strict\"\n ]\n}",
503
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOjBlbTt9LmNscy01e2xldHRlci1zcGFjaW5nOjAuMDNlbTt9LmNscy02e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fS5jbHMtN3tsZXR0ZXItc3BhY2luZzotMC4wMWVtO30uY2xzLTh7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy05e2xldHRlci1zcGFjaW5nOjBlbTt9LmNscy0xMHtsZXR0ZXItc3BhY2luZzotMC4wMWVtO308L3N0eWxlPjwvZGVmcz48ZyBpZD0iQVBJIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01MC4zNSwxMy4zN2E0Myw0MywwLDEsMCw0My4wNSw0M0E0Myw0MywwLDAsMCw1MC4zNSwxMy4zN1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik03MS44Miw3OC41SDI4Ljg5YTMuMDYsMy4wNiwwLDAsMS0zLjA1LTNWNDQuMzFhMSwxLDAsMCwxLC45NC0xSDczLjkzYTEsMSwwLDAsMSwuOTQsMVY3NS40NUEzLjA2LDMuMDYsMCwwLDEsNzEuODIsNzguNVpNMjcuNzIsNDUuMjV2MzAuMmExLjE3LDEuMTcsMCwwLDAsMS4xNywxLjE2SDcxLjgyQTEuMTYsMS4xNiwwLDAsMCw3Myw3NS40NVY0NS4yNVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik03My45Myw0NS4yNUgyNi43OGEuOTQuOTQsMCwwLDEtLjk0LS45NFYzNy4zN2EzLjA2LDMuMDYsMCwwLDEsMy4wNS0zSDcxLjgyYTMuMDYsMy4wNiwwLDAsMSwzLjA1LDN2Ni45NEEuOTQuOTQsMCwwLDEsNzMuOTMsNDUuMjVaTTI3LjcyLDQzLjM2SDczdi02YTEuMTcsMS4xNywwLDAsMC0xLjE2LTEuMTdIMjguODlhMS4xOCwxLjE4LDAsMCwwLTEuMTcsMS4xN1oiLz48Y2lyY2xlIGNsYXNzPSJjbHMtMiIgY3g9IjU5LjIyIiBjeT0iMzkuNzgiIHI9IjEuMjIiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik02NC45MywzOS43OGExLjIzLDEuMjMsMCwxLDEtMS4yMi0xLjIyQTEuMjMsMS4yMywwLDAsMSw2NC45MywzOS43OFoiLz48Y2lyY2xlIGNsYXNzPSJjbHMtMiIgY3g9IjY4LjE5IiBjeT0iMzkuNzgiIHI9IjEuMjIiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01NS41MSw1Ni45SDQ1LjE5YS45NC45NCwwLDAsMS0uOTQtLjk0VjUwLjY3YS45NC45NCwwLDAsMSwuOTQtLjk0SDU1LjUxYTEsMSwwLDAsMSwxLC45NFY1NkExLDEsMCwwLDEsNTUuNTEsNTYuOVpNNDYuMTQsNTVoOC40M3YtMy40SDQ2LjE0WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTQwLjI5LDcyLjEzYTMuODQsMy44NCwwLDEsMSwzLjgzLTMuODNBMy44NCwzLjg0LDAsMCwxLDQwLjI5LDcyLjEzWm0wLTUuNzlhMiwyLDAsMSwwLDIsMkEyLDIsMCwwLDAsNDAuMjksNjYuMzRaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTAuMzUsNzIuMTNhMy44NCwzLjg0LDAsMSwxLDMuODQtMy44M0EzLjg0LDMuODQsMCwwLDEsNTAuMzUsNzIuMTNabTAtNS43OWEyLDIsMCwxLDAsMiwyQTIsMiwwLDAsMCw1MC4zNSw2Ni4zNFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik02MC40Miw3Mi4xM2EzLjg0LDMuODQsMCwxLDEsMy44NC0zLjgzQTMuODQsMy44NCwwLDAsMSw2MC40Miw3Mi4xM1ptMC01Ljc5YTIsMiwwLDEsMCwyLDJBMiwyLDAsMCwwLDYwLjQyLDY2LjM0WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUwLjM1LDY2LjM0YS45NC45NCwwLDAsMS0uOTQtLjk0VjU2YS45NS45NSwwLDAsMSwxLjg5LDBWNjUuNEEuOTQuOTQsMCwwLDEsNTAuMzUsNjYuMzRaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjAuNDIsNjYuMzRhLjk0Ljk0LDAsMCwxLS45NC0uOTRWNjEuNjNINDEuMjNWNjUuNGEuOTUuOTUsMCwwLDEtMS44OSwwVjYwLjY4YS45NC45NCwwLDAsMSwuOTUtLjk0SDYwLjQyYTEsMSwwLDAsMSwuOTUuOTRWNjUuNEExLDEsMCwwLDEsNjAuNDIsNjYuMzRaIi8+PC9nPjxnIGlkPSJIT1NUSU5HIj48dGV4dCBjbGFzcz0iY2xzLTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xNi41MiAtNC45OCkiPjx0c3BhbiBjbGFzcz0iY2xzLTQiPlI8L3RzcGFuPjx0c3BhbiB4PSI2LjUiIHk9IjAiPm9sPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy01IiB4PSIxNS45MiIgeT0iMCI+ZTwvdHNwYW4+PHRzcGFuIHg9IjIyLjI3IiB5PSIwIj4tQmFzZWQgPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy02IiB4PSI1OC4zMiIgeT0iMCI+QTwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNyIgeD0iNjUuNTIiIHk9IjAiPmNjPC90c3Bhbj48dHNwYW4geD0iNzYuMTMiIHk9IjAiPmVzcyA8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTgiIHg9Ijk0LjE5IiB5PSIwIj5DPC90c3Bhbj48dHNwYW4geD0iMTAxLjAyIiB5PSIwIj5vPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy05IiB4PSIxMDcuNiIgeT0iMCI+bjwvdHNwYW4+PHRzcGFuIHg9IjExNC4yMSIgeT0iMCI+dDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtMTAiIHg9IjExOC4xOSIgeT0iMCI+cjwvdHNwYW4+PHRzcGFuIHg9IjEyMS45OSIgeT0iMCI+b2w8L3RzcGFuPjwvdGV4dD48L2c+PC9zdmc+",
504
- category: "security",
505
- onRequest: true,
506
- onResponse: false
507
- },
508
- {
509
- id: "ssl-enforcement",
510
- name: "SSL Enforcement",
511
- description: "Description of the SSL Enforcement Gravitee Policy",
512
- version: "1.2.0",
513
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:sslenforcement:configuration:SslEnforcementPolicyConfiguration\",\n \"properties\" : {\n \"requiresSsl\" : {\n \"title\": \"Requires SSL\",\n \"description\": \"Requires SSL\",\n \"type\" : \"boolean\",\n \"default\": true\n },\n \"requiresClientAuthentication\" : {\n \"title\": \"Requires client authentication\",\n \"description\": \"Consumer must pass a valid certificate\",\n \"type\" : \"boolean\",\n \"default\": false\n },\n \"whitelistClientCertificates\" : {\n \"type\" : \"array\",\n \"title\": \"Allowed client certificates (requires client authentication)\",\n \"items\" : {\n \"type\" : \"string\",\n \"description\": \"Name of client (X.500 principal). Can be expressed with an Ant pattern.\",\n \"title\": \"Distinguish Name\"\n }\n }\n }\n}",
514
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fS5jbHMtNXtsZXR0ZXItc3BhY2luZzotMC4wMWVtO30uY2xzLTZ7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy03e2xldHRlci1zcGFjaW5nOjBlbTt9LmNscy04e2xldHRlci1zcGFjaW5nOjBlbTt9LmNscy05e2xldHRlci1zcGFjaW5nOjBlbTt9LmNscy0xMHtsZXR0ZXItc3BhY2luZzowLjAzZW07fS5jbHMtMTF7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy0xMntsZXR0ZXItc3BhY2luZzotMC4wMWVtO30uY2xzLTEze2xldHRlci1zcGFjaW5nOi0wLjAxZW07fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJBUEkiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTUwLjM1LDEzLjM3YTQzLDQzLDAsMSwwLDQzLjA1LDQzQTQzLDQzLDAsMCwwLDUwLjM1LDEzLjM3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTYyLjU1LDc4LjE2aC0xYS44NC44NCwwLDAsMS0uODQtLjgzVjM1LjQ5YS44NS44NSwwLDAsMSwuODQtLjg0aDFhNSw1LDAsMCwxLDUsNVY3My4xNEE1LDUsMCwwLDEsNjIuNTUsNzguMTZabS0uMTQtMS42N2guMTRhMy4zNSwzLjM1LDAsMCwwLDMuMzQtMy4zNVYzOS42N2EzLjM1LDMuMzUsMCwwLDAtMy4zNC0zLjM0aC0uMTRaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjEuNTcsNzguMTZIMzRhLjg0Ljg0LDAsMCwxLS44NC0uODNWMzUuNDlhLjg1Ljg1LDAsMCwxLC44NC0uODRINjEuNTdhLjg1Ljg1LDAsMCwxLC44NC44NFY3Ny4zM0EuODQuODQsMCwwLDEsNjEuNTcsNzguMTZaTTM0LjgyLDc2LjQ5SDYwLjczVjM2LjMzSDM0LjgyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTQ4LjA1LDQ1LjQ3YS44OC44OCwwLDAsMS0uNDQtLjEybC00LjEzLTIuNS00LjE0LDIuNWEuODYuODYsMCwwLDEtLjg1LDAsLjg0Ljg0LDAsMCwxLS40Mi0uNzNWMzUuNDlhLjg0Ljg0LDAsMCwxLC44NC0uODRoOS4xNGEuODQuODQsMCwwLDEsLjgzLjg0djkuMTRhLjg0Ljg0LDAsMCwxLS40Mi43M0EuODcuODcsMCwwLDEsNDguMDUsNDUuNDdaTTQzLjQ4LDQxYS44Mi44MiwwLDAsMSwuNDMuMTJsMy4zLDJWMzYuMzNIMzkuNzR2Ni44MmwzLjMtMkEuODguODgsMCwwLDEsNDMuNDgsNDFaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTIuNTQsNTIuMzdINDNhLjg0Ljg0LDAsMSwxLDAtMS42N2g5LjUzYS44NC44NCwwLDEsMSwwLDEuNjdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTIuNTQsNTcuMjVINDNhLjg0Ljg0LDAsMCwxLDAtMS42OGg5LjUzYS44NC44NCwwLDAsMSwwLDEuNjhaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTIuNTQsNjIuMTJINDNhLjg0Ljg0LDAsMSwxLDAtMS42N2g5LjUzYS44NC44NCwwLDEsMSwwLDEuNjdaIi8+PC9nPjxnIGlkPSJIT1NUSU5HIj48dGV4dCBjbGFzcz0iY2xzLTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjkzIC00Ljk4KSI+U1NMIEVuPHRzcGFuIGNsYXNzPSJjbHMtNCIgeD0iMzIuNiIgeT0iMCI+ZjwvdHNwYW4+PHRzcGFuIHg9IjM1Ljk1IiB5PSIwIj5vPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy01IiB4PSI0Mi41NCIgeT0iMCI+cjwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNiIgeD0iNDYuMzQiIHk9IjAiPmM8L3RzcGFuPjx0c3BhbiB4PSI1MS42NSIgeT0iMCI+ZW1lPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy03IiB4PSI3My42OCIgeT0iMCI+bjwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtOCIgeD0iODAuMjkiIHk9IjAiPnQ8L3RzcGFuPjwvdGV4dD48dGV4dCBjbGFzcz0iY2xzLTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMjQuODMgLTQuOTgpIj48dHNwYW4gY2xhc3M9ImNscy05Ij5SPC90c3Bhbj48dHNwYW4geD0iNi41IiB5PSIwIj5vbDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtMTAiIHg9IjE1LjkyIiB5PSIwIj5lPC90c3Bhbj48dHNwYW4geD0iMjIuMjciIHk9IjAiPi1CYXNlZCA8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTExIiB4PSI1OC4zMiIgeT0iMCI+QTwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNiIgeD0iNjUuNTIiIHk9IjAiPmNjPC90c3Bhbj48dHNwYW4geD0iNzYuMTMiIHk9IjAiPmVzcyA8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTEyIiB4PSI5NC4xOSIgeT0iMCI+QzwvdHNwYW4+PHRzcGFuIHg9IjEwMS4wMiIgeT0iMCI+bzwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNyIgeD0iMTA3LjYiIHk9IjAiPm48L3RzcGFuPjx0c3BhbiB4PSIxMTQuMjEiIHk9IjAiPnQ8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTEzIiB4PSIxMTguMTkiIHk9IjAiPnI8L3RzcGFuPjx0c3BhbiB4PSIxMjEuOTkiIHk9IjAiPm9sPC90c3Bhbj48L3RleHQ+PC9nPjwvc3ZnPg==",
515
- category: "security",
516
- onRequest: true,
517
- onResponse: false
518
- },
519
- {
520
- id: "spike-arrest",
521
- name: "Spike Arrest",
522
- description: "The Spike Arrest Policy allows to limit the requests received by a backend",
523
- version: "1.14.0",
524
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:spike:configuration:SpikeArrestPolicyConfiguration\",\n \"properties\" : {\n \"async\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"title\": \"Non-strict mode (async)\",\n \"description\": \"By activating this option, spike limit is applied in an asynchronous way meaning that the distributed counter value is not strict.\"\n },\n \"addHeaders\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"title\": \"Add response headers\",\n \"description\": \"Add X-Spike-Arrest-Limit, X-Spike-Arrest-Remaining and X-Spike-Arrest-Reset headers in HTTP response\"\n },\n \"spike\" : {\n \"type\" : \"object\",\n \"title\": \"Apply spike limit\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:spike:configuration:SpikeArrestConfiguration\",\n \"properties\" : {\n \"key\": {\n \"type\": \"string\",\n \"default\": \"\",\n \"title\": \"Key\",\n \"description\": \"Key to identify a consumer against whom the quota will be applied. Leave it empty to use the default behavior. Supports EL.\",\n \"x-schema-form\": {\n \"expression-language\": true\n }\n },\n \"limit\" : {\n \"type\" : \"integer\",\n \"title\": \"Max requests (static)\",\n \"description\": \"Static limit on the number of requests that can be sent (this limit is used if the value > 0).\",\n \"minimum\": 0\n },\n \"dynamicLimit\" : {\n \"type\" : \"string\",\n \"title\": \"Max requests (dynamic)\",\n \"description\": \"Dynamic limit on the number of requests that can be sent (this limit is used if static limit = 0). The dynamic value is based on EL expressions.\",\n \"x-schema-form\": {\n \"expression-language\": true\n }\n },\n \"periodTime\" : {\n \"type\" : \"integer\",\n \"title\": \"Time duration\",\n \"default\": 1\n },\n \"periodTimeUnit\" : {\n \"type\" : \"string\",\n \"title\": \"Time unit\",\n \"default\": \"SECONDS\",\n \"enum\" : [ \"SECONDS\", \"MINUTES\" ]\n }\n },\n \"required\": [\n \"periodTime\",\n \"periodTimeUnit\"\n ]\n }\n },\n \"required\": [\n \"spike\"\n ]\n}\n",
525
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZpbGw6bm9uZTtzdHJva2U6I2ZmZjtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MnB4O30uY2xzLTR7Zm9udC1zaXplOjEycHg7ZmlsbDojMWQxZDFiO2ZvbnQtZmFtaWx5Ok15cmlhZFByby1SZWd1bGFyLCBNeXJpYWQgUHJvO30uY2xzLTV7bGV0dGVyLXNwYWNpbmc6MGVtO30uY2xzLTZ7bGV0dGVyLXNwYWNpbmc6MGVtO30uY2xzLTd7bGV0dGVyLXNwYWNpbmc6LTAuMDRlbTt9LmNscy04e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fS5jbHMtOXtsZXR0ZXItc3BhY2luZzowZW07fS5jbHMtMTB7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy0xMXtsZXR0ZXItc3BhY2luZzowZW07fS5jbHMtMTJ7bGV0dGVyLXNwYWNpbmc6MGVtO30uY2xzLTEze2xldHRlci1zcGFjaW5nOi0wLjAyZW07fS5jbHMtMTR7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy0xNXtsZXR0ZXItc3BhY2luZzowLjAxZW07fS5jbHMtMTZ7bGV0dGVyLXNwYWNpbmc6MC4wMWVtO30uY2xzLTE3e2xldHRlci1zcGFjaW5nOjBlbTt9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkFQSSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMzUsMTMuMzdhNDMsNDMsMCwxLDAsNDMuMDUsNDNBNDMsNDMsMCwwLDAsNTAuMzUsMTMuMzdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNDYuNyw0OC4yMWE4LjMxLDguMzEsMCwxLDEtOC4zLDguMzFBOC4zMiw4LjMyLDAsMCwxLDQ2LjcsNDguMjFabTAsMTQuOWE2LjU5LDYuNTksMCwxLDAtNi41OC02LjU5QTYuNiw2LjYsMCwwLDAsNDYuNyw2My4xMVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0yNS41OSwzNGE2LjA4LDYuMDgsMCwxLDEtNi4wOCw2LjA4QTYuMDksNi4wOSwwLDAsMSwyNS41OSwzNFptMCwxMC40M2E0LjM1LDQuMzUsMCwxLDAtNC4zNS00LjM1QTQuMzYsNC4zNiwwLDAsMCwyNS41OSw0NC40NFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0yNS41OSw2Ni42NmE2LjA3LDYuMDcsMCwxLDEtNi4wOCw2LjA3QTYuMDgsNi4wOCwwLDAsMSwyNS41OSw2Ni42NlptMCwxMC40MmE0LjM1LDQuMzUsMCwxLDAtNC4zNS00LjM1QTQuMzYsNC4zNiwwLDAsMCwyNS41OSw3Ny4wOFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik00MS40NCw2MC45M2EuODYuODYsMCwwLDEsLjQ0LDEuNkwyOS43Miw2OS43OWEuODUuODUsMCwwLDEtMS4xOC0uMy44Ny44NywwLDAsMSwuMy0xLjE4TDQxLDYxLjA1QS44Ni44NiwwLDAsMSw0MS40NCw2MC45M1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0yOS4yOCw0My4xM2EuODguODgsMCwwLDEsLjQ0LjEybDEyLjE2LDcuMjdBLjg2Ljg2LDAsMSwxLDQxLDUyTDI4Ljg0LDQ0LjczYS44Ni44NiwwLDAsMSwuNDQtMS42WiIvPjxsaW5lIGNsYXNzPSJjbHMtMyIgeDE9IjUzLjI5IiB5MT0iNTYuNTIiIHgyPSI4MS4yIiB5Mj0iNTYuNTIiLz48L2c+PGcgaWQ9IkhPU1RJTkciPjx0ZXh0IGNsYXNzPSJjbHMtNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAwLjcxIC00Ljk4KSI+PHRzcGFuIGNsYXNzPSJjbHMtNSI+UjwvdHNwYW4+PHRzcGFuIHg9IjYuNSIgeT0iMCI+ZWc8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTYiIHg9IjE5LjIyIiB5PSIwIj5lPC90c3Bhbj48dHNwYW4geD0iMjUuMiIgeT0iMCI+eDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNyIgeD0iMzAuNzYiIHk9IjAiPiA8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTgiIHg9IjMyLjgxIiB5PSIwIj5UPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy05IiB4PSIzOC42OSIgeT0iMCI+aDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtMTAiIHg9IjQ1LjM1IiB5PSIwIj5yPC90c3Bhbj48dHNwYW4geD0iNDkuMTUiIHk9IjAiPmU8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTExIiB4PSI1NS4xNiIgeT0iMCI+YTwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtMTIiIHg9IjYwLjkiIHk9IjAiPnQgPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy0xMyIgeD0iNjcuNDIiIHk9IjAiPlA8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTEwIiB4PSI3My42MSIgeT0iMCI+cjwvdHNwYW4+PHRzcGFuIHg9Ijc3LjQxIiB5PSIwIj5vPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy0xNCIgeD0iODQiIHk9IjAiPnQ8L3RzcGFuPjx0c3BhbiB4PSI4Ny45IiB5PSIwIj5lPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy0xNSIgeD0iOTMuOTEiIHk9IjAiPmM8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTEyIiB4PSI5OS40NCIgeT0iMCI+dGlvbjwvdHNwYW4+PC90ZXh0Pjx0ZXh0IGNsYXNzPSJjbHMtNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTcuOTMgLTQuOTgpIj48dHNwYW4gY2xhc3M9ImNscy0xNiI+UjwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtMTciIHg9IjYuNiIgeT0iMCI+YTwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtMTQiIHg9IjEyLjM0IiB5PSIwIj50PC90c3Bhbj48dHNwYW4geD0iMTYuMjQiIHk9IjAiPmUgTGltaXRpbmc8L3RzcGFuPjwvdGV4dD48L2c+PC9zdmc+",
526
- category: "others",
527
- onRequest: true,
528
- onResponse: false
529
- },
530
- {
531
- id: "traffic-shadowing",
532
- name: "Traffic Shadowing",
533
- description: "Description of the Traffic Shadowing Gravitee Policy",
534
- version: "1.1.0",
535
- schema: "{\n \"type\": \"object\",\n \"id\": \"urn:jsonschema:io:gravitee:policy:trafficshadowing:configuration:TrafficShadowingPolicy\",\n \"properties\": {\n \"target\" : {\n \"title\": \"Target\",\n \"description\": \"Target\",\n \"type\" : \"string\",\n \"x-schema-form\": {\n \"expression-language\": true\n }\n },\n \"headers\" : {\n \"type\" : \"array\",\n \"title\": \"Add / update headers\",\n \"items\" : {\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:trafficshadowing:configuration:HttpHeader\",\n \"title\": \"Header\",\n \"properties\" : {\n \"name\" : {\n \"title\": \"Name\",\n \"description\": \"Name of the header\",\n \"type\" : \"string\",\n \"pattern\" : \"^\\\\S*$\",\n \"validationMessage\": {\n \"202\": \"Header name must not contain spaces.\"\n }\n },\n \"value\" : {\n \"title\": \"Value\",\n \"description\": \"Value of the header\",\n \"type\" : \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ]\n }\n }\n },\n \"required\": [\n \"target\"\n ]\n}\n",
536
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2Y2ZjZmNjt9PC9zdHlsZT48L2RlZnM+PGcgaWQ9IkFQSSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMzUsMTQuMjRhNDMsNDMsMCwxLDAsNDMuMDUsNDNBNDMsNDMsMCwwLDAsNTAuMzUsMTQuMjRaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMzUsMTQuMjRhNDMsNDMsMCwxLDAsNDMuMDUsNDNBNDMsNDMsMCwwLDAsNTAuMzUsMTQuMjRaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTEuMTEsODEuMzRjLS44MSwwLTEuNDctLjI5LTEuNDctLjY1VjUzLjIzYzAtLjM2LjY2LS42NiwxLjQ3LS42NnMxLjQ3LjMsMS40Ny42NlY4MC42OUM1Mi41OCw4MS4wNSw1MS45Miw4MS4zNCw1MS4xMSw4MS4zNFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MS4xMSw5My4yOGE3LjQ0LDcuNDQsMCwxLDEsNy40NS03LjQ0QTcuNDUsNy40NSwwLDAsMSw1MS4xMSw5My4yOFptMC0xMS45NGE0LjUsNC41LDAsMSwwLDQuNSw0LjVBNC41MSw0LjUxLDAsMCwwLDUxLjExLDgxLjM0WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUxLjExLDU1LjNhMS40NywxLjQ3LDAsMCwxLS43Ny0yLjczbDE1LjI4LTkuMzRWMzQuNzFhMS40OCwxLjQ4LDAsMSwxLDIuOTUsMHY5LjM1YTEuNDksMS40OSwwLDAsMS0uNzEsMS4yNmwtMTYsOS43N0ExLjU0LDEuNTQsMCwwLDEsNTEuMTEsNTUuM1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MS4xMSw1NS43N2ExLjUsMS41LDAsMCwxLS44Ny0uMjhMMzIuNzcsNDIuNzNhMS40OCwxLjQ4LDAsMCwxLS42MS0xLjE5VjMyLjE5YTEuNDgsMS40OCwwLDEsMSwzLDB2OC42TDUyLDUzLjExYTEuNDcsMS40NywwLDAsMSwuMzIsMi4wNkExLjQ5LDEuNDksMCwwLDEsNTEuMTEsNTUuNzdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjAuNjQsMzkuMDdhMS40NywxLjQ3LDAsMCwxLTEtMi41MWw2LjQ1LTYuNDVhMS40NywxLjQ3LDAsMCwxLDIuMDksMGw2LjQ1LDYuNDVhMS40NywxLjQ3LDAsMCwxLTIuMDksMi4wOGwtNS40MS01LjQxLTUuNCw1LjQxQTEuNDgsMS40OCwwLDAsMSw2MC42NCwzOS4wN1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0yNy4wOSwzNi42OWExLjQ3LDEuNDcsMCwwLDEtMS0yLjUxbDYuNDUtNi40NWExLjQ2LDEuNDYsMCwwLDEsMi4wOCwwTDQxLDM0LjE4QTEuNDcsMS40NywwLDAsMSwzOSwzNi4yNmwtNS40MS01LjQxLTUuNDEsNS40MUExLjQ1LDEuNDUsMCwwLDEsMjcuMDksMzYuNjlaIi8+PC9nPjwvc3ZnPg==",
537
- category: "others",
538
- onRequest: true,
539
- onResponse: false
540
- },
541
- {
542
- id: "transform-headers",
543
- name: "Transform Headers",
544
- description: "Description of the Transform Headers Gravitee Policy",
545
- version: "1.8.2",
546
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:transformheaders:configuration:TransformHeadersPolicyConfiguration\",\n \"properties\" : {\n \"scope\" : {\n \"title\": \"Scope\",\n \"description\": \"Execute policy on <strong>request</strong> or <strong>response</strong> phase.\",\n \"type\" : \"string\",\n \"default\": \"REQUEST\",\n \"enum\" : [ \"REQUEST\", \"RESPONSE\" ],\n \"deprecated\": \"true\"\n },\n \"removeHeaders\" : {\n \"type\" : \"array\",\n \"title\": \"Remove headers\",\n \"items\" : {\n \"type\" : [\"string\", \"null\"],\n \"description\": \"Name of the header\",\n \"title\": \"Header\"\n }\n },\n \"whitelistHeaders\": {\n \"type\": \"array\",\n \"title\": \"Headers to keep\",\n \"description\": \"Works like a whitelist. All other headers will be removed.\",\n \"items\": {\n \"type\": [\"string\", \"null\"],\n \"description\": \"Name of the header\",\n \"title\": \"Header\"\n }\n },\n \"addHeaders\" : {\n \"type\" : \"array\",\n \"title\": \"Add / update headers\",\n \"items\" : {\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:transformheaders:configuration:HttpHeader\",\n \"title\": \"Header\",\n \"properties\" : {\n \"name\" : {\n \"title\": \"Name\",\n \"description\": \"Name of the header\",\n \"type\" : \"string\",\n \"pattern\" : \"^\\\\S*$\",\n \"validationMessage\": {\n \"202\": \"Header name must not contain spaces.\"\n }\n },\n \"value\" : {\n \"title\": \"Value\",\n \"description\": \"Value of the header\",\n \"type\" : \"string\",\n \"x-schema-form\": {\n \"expression-language\": true\n }\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ]\n }\n }\n }\n}\n",
547
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjA1ZW07fS5jbHMtNXtsZXR0ZXItc3BhY2luZzowZW07fS5jbHMtNntsZXR0ZXItc3BhY2luZzotMC4wMWVtO30uY2xzLTd7bGV0dGVyLXNwYWNpbmc6MGVtO30uY2xzLTh7bGV0dGVyLXNwYWNpbmc6MGVtO308L3N0eWxlPjwvZGVmcz48ZyBpZD0iQVBJIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01MC4zNSwxMy4zN2E0Myw0MywwLDEsMCw0My4wNSw0M0E0Myw0MywwLDAsMCw1MC4zNSwxMy4zN1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik00My4zNyw1MEgzMC40OWEzLjYyLDMuNjIsMCwwLDEtMy42Mi0zLjYxdi05YTMuNjIsMy42MiwwLDAsMSwzLjYyLTMuNjFINDMuMzdBMy42MSwzLjYxLDAsMCwxLDQ3LDM3LjQxdjlBMy42MSwzLjYxLDAsMCwxLDQzLjM3LDUwWk0zMC40OSwzNS42MWExLjgxLDEuODEsMCwwLDAtMS44MSwxLjh2OWExLjgxLDEuODEsMCwwLDAsMS44MSwxLjhINDMuMzdhMS44MSwxLjgxLDAsMCwwLDEuOC0xLjh2LTlhMS44MSwxLjgxLDAsMCwwLTEuOC0xLjhaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNzAuMjIsNzUuNDVINTcuMzRhMy42MSwzLjYxLDAsMCwxLTMuNjEtMy42MXYtOWEzLjYxLDMuNjEsMCwwLDEsMy42MS0zLjYxSDcwLjIyYTMuNjEsMy42MSwwLDAsMSwzLjYxLDMuNjF2OUEzLjYxLDMuNjEsMCwwLDEsNzAuMjIsNzUuNDVaTTU3LjM0LDYxYTEuODIsMS44MiwwLDAsMC0xLjgxLDEuODF2OWExLjgxLDEuODEsMCwwLDAsMS44MSwxLjhINzAuMjJBMS44MSwxLjgxLDAsMCwwLDcyLDcxLjg0di05QTEuODIsMS44MiwwLDAsMCw3MC4yMiw2MVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik02Ni4xNSw3OUg2MS40MmEuOTEuOTEsMCwxLDEsMC0xLjgxaDQuNzNhLjkxLjkxLDAsMCwxLDAsMS44MVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik02My43OCw0Ni41NWE0LjY0LDQuNjQsMCwxLDEsNC42NC00LjY0QTQuNjQsNC42NCwwLDAsMSw2My43OCw0Ni41NVptMC03LjQ3YTIuODMsMi44MywwLDEsMCwyLjgzLDIuODNBMi44MywyLjgzLDAsMCwwLDYzLjc4LDM5LjA4WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTM2LjkzLDczLjRhNC42NCw0LjY0LDAsMSwxLDQuNjMtNC42NEE0LjY0LDQuNjQsMCwwLDEsMzYuOTMsNzMuNFptMC03LjQ3YTIuODQsMi44NCwwLDEsMCwyLjgzLDIuODNBMi44MywyLjgzLDAsMCwwLDM2LjkzLDY1LjkzWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTYwLjA1LDQyLjgxaC0xNGEuOS45LDAsMSwxLDAtMS44aDE0YS45LjksMCwwLDEsMCwxLjhaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMzYuOTMsNjUuOTNBLjkuOSwwLDAsMSwzNiw2NVY0OS4xMmEuOTEuOTEsMCwxLDEsMS44MSwwVjY1QS45LjksMCwwLDEsMzYuOTMsNjUuOTNaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTQuNjMsNjkuNjdoLTE0YS45MS45MSwwLDAsMSwwLTEuODFoMTRhLjkxLjkxLDAsMCwxLDAsMS44MVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik02My43OCw2MWEuOS45LDAsMCwxLS45LS45VjQ1LjY0YS45LjksMCwxLDEsMS44LDBWNjAuMTNBLjkuOSwwLDAsMSw2My43OCw2MVoiLz48L2c+PGcgaWQ9IkhPU1RJTkciPjx0ZXh0IGNsYXNzPSJjbHMtMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTcuOTMgLTQuOTgpIj48dHNwYW4gY2xhc3M9ImNscy00Ij5UPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy01IiB4PSI1LjQyIiB5PSIwIj5yPC90c3Bhbj48dHNwYW4geD0iOS4yOSIgeT0iMCI+YW5zPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy02IiB4PSIyNi40OCIgeT0iMCI+ZjwvdHNwYW4+PHRzcGFuIHg9IjI5LjgzIiB5PSIwIj5vPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy03IiB4PSIzNi40MiIgeT0iMCI+cjwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtOCIgeD0iNDAuMzkiIHk9IjAiPm0gSGVhZGVyczwvdHNwYW4+PC90ZXh0PjwvZz48L3N2Zz4=",
548
- category: "transformation",
549
- onRequest: true,
550
- onResponse: true
551
- },
552
- {
553
- id: "transform-queryparams",
554
- name: "Transform Query Parameters",
555
- description: "Description of the Transform Query Parameters Policy",
556
- version: "1.6.0",
557
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:transformqueryparams:configuration:TransformQueryParametersPolicyConfiguration\",\n \"properties\" : {\n \"clearAll\" : {\n \"type\" : \"boolean\",\n \"title\": \"Clear all query parameters\",\n \"description\": \"Please be aware that by clearing all query parameters, you mustn't be able to use them in expression language.\"\n },\n \"removeQueryParameters\" : {\n \"type\" : \"array\",\n \"title\": \"Remove query parameters\",\n \"items\" : {\n \"type\" : \"string\",\n \"title\": \"Query Parameter\"\n }\n },\n \"addQueryParameters\" : {\n \"type\" : \"array\",\n \"title\": \"Add query parameter\",\n \"items\" : {\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:transformqueryparams:configuration:HttpQueryParameter\",\n \"title\": \"Query Parameter\",\n \"properties\" : {\n \"name\" : {\n \"title\": \"Name\",\n \"type\" : \"string\"\n },\n \"value\" : {\n \"title\": \"Value. Supports EL.\",\n \"type\" : \"string\",\n \"x-schema-form\": {\n \"expression-language\": true\n }\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ]\n }\n }\n }\n}\n",
558
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjA1ZW07fS5jbHMtNXtsZXR0ZXItc3BhY2luZzowZW07fS5jbHMtNntsZXR0ZXItc3BhY2luZzotMC4wMWVtO30uY2xzLTd7bGV0dGVyLXNwYWNpbmc6MGVtO30uY2xzLTh7bGV0dGVyLXNwYWNpbmc6MGVtO30uY2xzLTl7bGV0dGVyLXNwYWNpbmc6MGVtO30uY2xzLTEwe2xldHRlci1zcGFjaW5nOjAuMDJlbTt9LmNscy0xMXtsZXR0ZXItc3BhY2luZzotMC4wM2VtO30uY2xzLTEye2xldHRlci1zcGFjaW5nOjBlbTt9LmNscy0xM3tsZXR0ZXItc3BhY2luZzotMC4wMWVtO308L3N0eWxlPjwvZGVmcz48ZyBpZD0iQVBJIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01MC4zNSwxMy4zN2E0Myw0MywwLDEsMCw0My4wNSw0M0E0Myw0MywwLDAsMCw1MC4zNSwxMy4zN1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01Mi40Niw2NS4yNWEuODYuODYsMCwwLDEtLjg0LS42NS44Ny44NywwLDAsMSwuNjItMS4wNkE2LjE2LDYuMTYsMCwwLDAsNTUsNjJhNi4wOSw2LjA5LDAsMCwwLDEuNjgtMy4xNy44Ni44NiwwLDAsMSwxLS42OS44Ny44NywwLDAsMSwuNjksMSw3Ljg0LDcuODQsMCwwLDEtNS43Myw2LjExWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTU2LjUzLDU0LjY3YS44Ny44NywwLDAsMS0uNzItLjM5LDYuMDksNi4wOSwwLDAsMC04LjU2LTEuNjcuODcuODcsMCwwLDEtMS0xLjQzLDcuODIsNy44MiwwLDAsMSwxMCwuOTEsOC40Nyw4LjQ3LDAsMCwxLDEsMS4yMy44Ny44NywwLDAsMS0uMjUsMS4yQS44NS44NSwwLDAsMSw1Ni41Myw1NC42N1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik00OC4yLDY1YS44NS44NSwwLDAsMS0uMzEtLjA2LDcuOSw3LjksMCwwLDEtMi43Mi0xLjc3LDcuNzgsNy43OCwwLDAsMS0yLjI1LTYuMzUuODYuODYsMCwxLDEsMS43Mi4xNyw2LjEyLDYuMTIsMCwwLDAsMy44OCw2LjMzQS44Ny44NywwLDAsMSw0OC4yLDY1WiIvPjxjaXJjbGUgY2xhc3M9ImNscy0yIiBjeD0iNTcuNyIgY3k9IjU4LjgiIHI9IjIuMTIiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik00OC4yNiw1My4zOWEyLjEyLDIuMTIsMCwxLDEsMC0zQTIuMTIsMi4xMiwwLDAsMSw0OC4yNiw1My4zOVoiLz48Y2lyY2xlIGNsYXNzPSJjbHMtMiIgY3g9IjQ4LjI1IiBjeT0iNjQuMSIgcj0iMi4xMiIvPjxjaXJjbGUgY2xhc3M9ImNscy0yIiBjeD0iNjUuNTkiIGN5PSI3MC45MiIgcj0iMi4xMiIvPjxjaXJjbGUgY2xhc3M9ImNscy0yIiBjeD0iNjQuMTciIGN5PSI2Mi4xMSIgcj0iMi4xMiIvPjxjaXJjbGUgY2xhc3M9ImNscy0yIiBjeD0iNDUuMDEiIGN5PSI0My4yNSIgcj0iMi4xMiIvPjxjaXJjbGUgY2xhc3M9ImNscy0yIiBjeD0iNDAuNDQiIGN5PSI2Ny44IiByPSIyLjEyIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTIuNDgsMzYuNDNhMi4xMywyLjEzLDAsMSwxLTIuMTMtMi4xM0EyLjEyLDIuMTIsMCwwLDEsNTIuNDgsMzYuNDNaIi8+PGNpcmNsZSBjbGFzcz0iY2xzLTIiIGN4PSIzMy45MyIgY3k9IjY5LjY2IiByPSIyLjEyIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMzQuMDYsNzAuNTJhLjg3Ljg3LDAsMCwxLS42OS0uMzNBMjEuMjksMjEuMjksMCwwLDEsMjguODgsNTcsMjEuNTgsMjEuNTgsMCwwLDEsNDEuMiwzNy42YS44Ny44NywwLDAsMSwuNzQsMS41N0ExOS44NSwxOS44NSwwLDAsMCwzMC42MSw1N2ExOS41NCwxOS41NCwwLDAsMCw0LjEzLDEyLjA4Ljg3Ljg3LDAsMCwxLS4xNSwxLjIyQS44OS44OSwwLDAsMSwzNC4wNiw3MC41MloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MC4zNSw3OC41MWEyMS4zOSwyMS4zOSwwLDAsMS0xMS40MS0zLjI4Ljg2Ljg2LDAsMSwxLC45Mi0xLjQ2QTE5Ljc4LDE5Ljc4LDAsMCwwLDY1LDcwLjM0YS44Ni44NiwwLDAsMSwxLjIyLS4wNi44OC44OCwwLDAsMSwuMDYsMS4yM0EyMS41NiwyMS41NiwwLDAsMSw1MC4zNSw3OC41MVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik02OS43Niw2NC44N2EuNzkuNzksMCwwLDEtLjMtLjA1Ljg3Ljg3LDAsMCwxLS41Mi0xLjExQTE5Ljc1LDE5Ljc1LDAsMCwwLDUwLjM1LDM3LjI5YS44Ny44NywwLDAsMSwwLTEuNzNBMjEuNDksMjEuNDksMCwwLDEsNzAuNTcsNjQuMy44Ni44NiwwLDAsMSw2OS43Niw2NC44N1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik02NS4wNiw1Ny45QS44Ni44NiwwLDAsMSw2NC4yLDU3LDEzLjg1LDEzLjg1LDAsMCwwLDQ1LjI2LDQ0LjE2YS44Ny44NywwLDAsMS0uNjQtMS42MSwxNS40LDE1LjQsMCwwLDEsNS43My0xLjA5QTE1LjYsMTUuNiwwLDAsMSw2NS45Myw1NywuODYuODYsMCwwLDEsNjUuMDYsNTcuOVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik00MC4zMyw2OC42N2EuODYuODYsMCwwLDEtLjYtLjI0LDE1LjU5LDE1LjU5LDAsMCwxLC4xMi0yMi45Ljg3Ljg3LDAsMCwxLDEuMjMuMDZBLjg2Ljg2LDAsMCwxLDQxLDQ2LjgxYTEzLjg0LDEzLjg0LDAsMCwwLS4xLDIwLjM1Ljg3Ljg3LDAsMCwxLS41OSwxLjUxWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUwLjM1LDcyLjYxYTE1LjMyLDE1LjMyLDAsMCwxLTUuNjUtMS4wNi44Ni44NiwwLDAsMS0uNS0xLjEyLjg3Ljg3LDAsMCwxLDEuMTMtLjQ5LDEzLjg2LDEzLjg2LDAsMCwwLDE4LTguMTMuODguODgsMCwwLDEsMS4xMi0uNTJBLjg3Ljg3LDAsMCwxLDY1LDYyLjQxLDE1LjY0LDE1LjY0LDAsMCwxLDUwLjM1LDcyLjYxWiIvPjwvZz48ZyBpZD0iSE9TVElORyI+PHRleHQgY2xhc3M9ImNscy0zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy45MyAtNC45OCkiPjx0c3BhbiBjbGFzcz0iY2xzLTQiPlQ8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTUiIHg9IjUuNDIiIHk9IjAiPnI8L3RzcGFuPjx0c3BhbiB4PSI5LjI5IiB5PSIwIj5hbnM8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTYiIHg9IjI2LjQ4IiB5PSIwIj5mPC90c3Bhbj48dHNwYW4geD0iMjkuODMiIHk9IjAiPm88L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTciIHg9IjM2LjQyIiB5PSIwIj5yPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy04IiB4PSI0MC4zOSIgeT0iMCI+bSA8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTkiIHg9IjUyLjk0IiB5PSIwIj5RPC90c3Bhbj48dHNwYW4geD0iNjEuMjUiIHk9IjAiPnVlPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy0xMCIgeD0iNzMuODciIHk9IjAiPnI8L3RzcGFuPjx0c3BhbiB4PSI3OC4xIiB5PSIwIj55IDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtMTEiIHg9Ijg2LjI5IiB5PSIwIj5QPC90c3Bhbj48dHNwYW4geD0iOTIuMzYiIHk9IjAiPmE8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTUiIHg9Ijk4LjE1IiB5PSIwIj5yPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy0xMiIgeD0iMTAyLjAxIiB5PSIwIj5hbWU8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTEzIiB4PSIxMjMuODEiIHk9IjAiPnQ8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTgiIHg9IjEyNy43MSIgeT0iMCI+ZXJzPC90c3Bhbj48L3RleHQ+PHRleHQgY2xhc3M9ImNscy0zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTEuMDMgLTQuOTgpIj48dHNwYW4gY2xhc3M9ImNscy00Ij5UPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy01IiB4PSI1LjQyIiB5PSIwIj5yPC90c3Bhbj48dHNwYW4geD0iOS4yOSIgeT0iMCI+YW5zPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy02IiB4PSIyNi40OCIgeT0iMCI+ZjwvdHNwYW4+PHRzcGFuIHg9IjI5LjgzIiB5PSIwIj5vPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy03IiB4PSIzNi40MiIgeT0iMCI+cjwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtOCIgeD0iNDAuMzkiIHk9IjAiPm0gSGVhZGVyczwvdHNwYW4+PC90ZXh0PjwvZz48L3N2Zz4=",
559
- category: "transformation",
560
- onRequest: true,
561
- onResponse: false
562
- },
563
- {
564
- id: "url-rewriting",
565
- name: "URL Rewriting",
566
- description: "Description of the URL Rewriting Gravitee Policy",
567
- version: "1.4.0",
568
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:urlrewriting:configuration:URLRewritingPolicyConfiguration\",\n \"properties\" : {\n \"rewriteResponseHeaders\" : {\n \"title\": \"Rewrite HTTP response headers\",\n \"description\": \"Rewrite the value of HTTP response headers.\",\n \"type\" : \"boolean\",\n \"default\": true\n },\n \"rewriteResponseBody\" : {\n \"title\": \"Rewrite HTTP response body\",\n \"description\": \"Rewrite the HTTP response body.\",\n \"type\" : \"boolean\",\n \"default\": true\n },\n \"fromRegex\" : {\n \"title\": \"URL pattern expression\",\n \"description\": \"The regex pattern for matching URLs.\",\n \"type\" : \"string\"\n },\n \"toReplacement\" : {\n \"title\": \"Replacement value\",\n \"description\": \"The value used to replace matching URLs (support EL).\",\n \"type\" : \"string\",\n \"x-schema-form\": {\n \"expression-language\": true\n }\n }\n },\n \"required\": [\n \"fromRegex\",\n \"toReplacement\"\n ]\n}\n",
569
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fS5jbHMtNXtsZXR0ZXItc3BhY2luZzowZW07fS5jbHMtNntsZXR0ZXItc3BhY2luZzowZW07fS5jbHMtN3tsZXR0ZXItc3BhY2luZzowZW07fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJBUEkiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTQ5LjQsMTRhNDMsNDMsMCwxLDAsNDMuMDUsNDNBNDMsNDMsMCwwLDAsNDkuNCwxNFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik03My45Miw3OC41OUgyNi43OWEzLjM1LDMuMzUsMCwwLDEtMy4zNS0zLjM1di0zMGExLDEsMCwwLDEsMS0xSDc2LjIzYTEsMSwwLDAsMSwxLDFWNzUuMjRBMy4zNSwzLjM1LDAsMCwxLDczLjkyLDc4LjU5Wk0yNS41MSw0Ni4yM3YyOWExLjI4LDEuMjgsMCwwLDAsMS4yOCwxLjI4SDczLjkyYTEuMjgsMS4yOCwwLDAsMCwxLjI4LTEuMjh2LTI5WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTc2LjIzLDQ2LjIzSDI0LjQ4YTEsMSwwLDAsMS0xLTFWMzcuNTdhMy4zNSwzLjM1LDAsMCwxLDMuMzUtMy4zNEg3My45MmEzLjM1LDMuMzUsMCwwLDEsMy4zNSwzLjM0djcuNjJBMSwxLDAsMCwxLDc2LjIzLDQ2LjIzWk0yNS41MSw0NC4xNkg3NS4yVjM3LjU3YTEuMjgsMS4yOCwwLDAsMC0xLjI4LTEuMjdIMjYuNzlhMS4yNywxLjI3LDAsMCwwLTEuMjgsMS4yN1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zOSw0MC4yM2ExLjYxLDEuNjEsMCwxLDAsMS42MS0xLjYxQTEuNjEsMS42MSwwLDAsMCwzOSw0MC4yM1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zNC4wOCw0MC4yM2ExLjYyLDEuNjIsMCwxLDAsMS42Mi0xLjYxQTEuNjIsMS42MiwwLDAsMCwzNC4wOCw0MC4yM1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0yOS4xNiw0MC4yM2ExLjYxLDEuNjEsMCwxLDAsMS42MS0xLjYxQTEuNjEsMS42MSwwLDAsMCwyOS4xNiw0MC4yM1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik00NC44Myw3OC41OUgzNy42N2ExLDEsMCwwLDEtMS0xVjU4LjQ4YTEsMSwwLDAsMSwuMS0uNDVsMy41Ny03LjgyYTEuMDUsMS4wNSwwLDAsMSwuOTQtLjYsMSwxLDAsMCwxLC45NC42TDQ1Ljc3LDU4YTEuMTQsMS4xNCwwLDAsMSwuMS40NVY3Ny41NUExLDEsMCwwLDEsNDQuODMsNzguNTlabS02LjEyLTIuMDdINDMuOHYtMTdIMzguNzFabS41Ny0xOS4wN2gzLjk0bC0yLTQuMzFaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjMsNzguNTlINTMuNjFhMSwxLDAsMCwxLTEtMVY1MC42NGExLDEsMCwwLDEsMS0xSDYzYTEsMSwwLDAsMSwxLDFWNzcuNTVBMSwxLDAsMCwxLDYzLDc4LjU5Wm0tOC40LTIuMDdINjJWNTEuNjhINTQuNjRaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjMsNTcuOUg1OC4zMmExLDEsMCwwLDEsMC0yLjA3SDYzYTEsMSwwLDAsMSwwLDIuMDdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjMsNjIuNzJINjAuMzlhMSwxLDAsMCwxLDAtMi4wN0g2M2ExLDEsMCwwLDEsMCwyLjA3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTYzLDY3LjU1SDYwLjM5YTEsMSwwLDAsMSwwLTIuMDdINjNhMSwxLDAsMCwxLDAsMi4wN1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik02Myw3Mi4zN0g1OC4zMmExLDEsMCwwLDEsMC0yLjA3SDYzYTEsMSwwLDAsMSwwLDIuMDdaIi8+PC9nPjxnIGlkPSJIT1NUSU5HIj48dGV4dCBjbGFzcz0iY2xzLTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjkzIC00Ljk4KSI+VVJMIDx0c3BhbiBjbGFzcz0iY2xzLTQiIHg9IjIyLjQzIiB5PSIwIj5yPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy01IiB4PSIyNi4yMyIgeT0iMCI+ZXc8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTYiIHg9IjQxLjA4IiB5PSIwIj5yPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy03IiB4PSI0NS4wNSIgeT0iMCI+aXRpbmc8L3RzcGFuPjwvdGV4dD48L2c+PC9zdmc+",
570
- category: "transformation",
571
- onRequest: false,
572
- onResponse: true
573
- },
574
- {
575
- id: "policy-request-validation",
576
- name: "Validate Request",
577
- description: "Description of the validate HTTP request Policy",
578
- version: "1.12.0",
579
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:requestvalidation:configuration:RequestValidationPolicyConfiguration\",\n \"properties\" : {\n \"scope\" : {\n \"title\": \"Scope\",\n \"description\": \"Execute policy on <strong>request</strong> or <strong>request-content</strong> phase.\",\n \"type\" : \"string\",\n \"default\": \"REQUEST\",\n \"enum\" : [ \"REQUEST\", \"REQUEST_CONTENT\" ],\n \"deprecated\": true\n },\n \"status\" : {\n \"title\": \"Status Code\",\n \"description\": \"HTTP Status Code send to the consumer in case of validation issues\",\n \"type\" : \"string\",\n \"default\": \"400\",\n \"enum\": [\n \"100\",\n \"101\",\n \"102\",\n \"200\",\n \"201\",\n \"202\",\n \"203\",\n \"204\",\n \"205\",\n \"206\",\n \"207\",\n \"300\",\n \"301\",\n \"302\",\n \"303\",\n \"304\",\n \"305\",\n \"307\",\n \"400\",\n \"401\",\n \"402\",\n \"403\",\n \"404\",\n \"405\",\n \"406\",\n \"407\",\n \"408\",\n \"409\",\n \"410\",\n \"411\",\n \"412\",\n \"413\",\n \"414\",\n \"415\",\n \"416\",\n \"417\",\n \"422\",\n \"423\",\n \"424\",\n \"429\",\n \"500\",\n \"501\",\n \"502\",\n \"503\",\n \"504\",\n \"505\",\n \"507\"\n ],\n \"x-schema-form\": {\n \"type\": \"select\",\n \"titleMap\": {\n \"100\": \"100 - CONTINUE\",\n \"101\": \"101 - SWITCHING_PROTOCOLS\",\n \"102\": \"102 - PROCESSING\",\n \"200\": \"200 - OK\",\n \"201\": \"201 - CREATED\",\n \"202\": \"202 - ACCEPTED\",\n \"203\": \"203 - NON_AUTHORITATIVE_INFORMATION\",\n \"204\": \"204 - NO_CONTENT\",\n \"205\": \"205 - RESET_CONTENT\",\n \"206\": \"206 - PARTIAL_CONTENT\",\n \"207\": \"207 - MULTI_STATUS\",\n \"300\": \"300 - MULTIPLE_CHOICES\",\n \"301\": \"301 - MOVED_PERMANENTLY\",\n \"302\": \"302 - FOUND OR MOVED_TEMPORARILY\",\n \"303\": \"303 - SEE_OTHER\",\n \"304\": \"304 - NOT_MODIFIED\",\n \"305\": \"305 - USE_PROXY\",\n \"307\": \"307 - TEMPORARY_REDIRECT\",\n \"400\": \"400 - BAD_REQUEST\",\n \"401\": \"401 - UNAUTHORIZED\",\n \"402\": \"402 - PAYMENT_REQUIRED\",\n \"403\": \"403 - FORBIDDEN\",\n \"404\": \"404 - NOT_FOUND\",\n \"405\": \"405 - METHOD_NOT_ALLOWED\",\n \"406\": \"406 - NOT_ACCEPTABLE\",\n \"407\": \"407 - PROXY_AUTHENTICATION_REQUIRED\",\n \"408\": \"408 - REQUEST_TIMEOUT\",\n \"409\": \"409 - CONFLICT\",\n \"410\": \"410 - GONE\",\n \"411\": \"411 - LENGTH_REQUIRED\",\n \"412\": \"412 - PRECONDITION_FAILED\",\n \"413\": \"413 - REQUEST_ENTITY_TOO_LARGE\",\n \"414\": \"414 - REQUEST_URI_TOO_LONG\",\n \"415\": \"415 - UNSUPPORTED_MEDIA_TYPE\",\n \"416\": \"416 - REQUESTED_RANGE_NOT_SATISFIABLE\",\n \"417\": \"417 - EXPECTATION_FAILED\",\n \"422\": \"422 - UNPROCESSABLE_ENTITY\",\n \"423\": \"423 - LOCKED\",\n \"424\": \"424 - FAILED_DEPENDENCY\",\n \"429\": \"429 - TOO_MANY_REQUESTS\",\n \"500\": \"500 - INTERNAL_SERVER_ERROR\",\n \"501\": \"501 - NOT_IMPLEMENTED\",\n \"502\": \"502 - BAD_GATEWAY\",\n \"503\": \"503 - SERVICE_UNAVAILABLE\",\n \"504\": \"504 - GATEWAY_TIMEOUT\",\n \"505\": \"505 - HTTP_VERSION_NOT_SUPPORTED\",\n \"507\": \"507 - INSUFFICIENT_STORAGE\"\n }\n }\n },\n \"rules\" : {\n \"type\" : \"array\",\n \"title\" : \"Rules\",\n \"items\" : {\n \"type\" : \"object\",\n \"title\" : \"Rule\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:requestvalidation:Rule\",\n \"properties\" : {\n \"input\" : {\n \"type\" : \"string\",\n \"title\": \"Field value\",\n \"description\": \"The input value to validate (supports EL)\",\n \"x-schema-form\": {\n \"expression-language\": true\n }\n },\n \"isRequired\" : {\n \"type\" : \"boolean\",\n \"title\": \"Required\",\n \"description\": \"If true, check the pattern always. If false check the pattern, only if this one is present in the request\",\n \"default\": true\n },\n \"constraint\" : {\n \"type\" : \"object\",\n \"title\" : \"Constraint\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:requestvalidation:Constraint\",\n \"properties\" : {\n \"type\" : {\n \"type\" : \"string\",\n \"enum\" : [ \"NOT_NULL\", \"MIN\", \"MAX\", \"MAIL\", \"DATE\", \"PATTERN\", \"SIZE\", \"ENUM\" ],\n \"default\": \"NOT_NULL\",\n \"title\": \"Type\",\n \"description\": \"The constraint rule to apply to the field value.<ul><li>NOT_NULL: Field value is required</li><li>MIN: Field number value is greater or equals than parameter</li><li>MAX: Field number value is lower or equals than parameter</li><li>MAIL: Field value is a valid email</li><li>PATTERN: Field value is valid according to the pattern parameter</li><li>DATE: Field value is valid according to the date format parameter</li><li>SIZE: Field value length is between min and max parameters</li><li>ENUM: Field value included in ENUM</li><ul/>\"\n },\n \"parameters\" : {\n \"type\" : \"array\",\n \"title\": \"Parameters\",\n \"items\" : {\n \"type\" : \"string\",\n \"title\": \"Parameter\",\n \"description\": \"Must be defined for MIN, MAX, DATE or PATTERN constraints (supports EL)\",\n \"x-schema-form\": {\n \"expression-language\": true\n }\n }\n },\n \"message\" : {\n \"type\" : \"string\",\n \"title\": \"Message template\",\n \"description\": \"Set a message template to override the default one. (Example: <i>'%s' must be higher or equals to '%s'</i>)\"\n }\n },\n \"required\": [\n \"type\"\n ]\n }\n },\n \"required\": [\n \"input\",\n \"constraint\"\n ]\n }\n }\n },\n \"required\": [\n \"status\",\n \"rules\"\n ]\n}\n",
580
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOjBlbTt9LmNscy01e2xldHRlci1zcGFjaW5nOi0wLjA0ZW07fS5jbHMtNntsZXR0ZXItc3BhY2luZzotMC4wM2VtO30uY2xzLTd7bGV0dGVyLXNwYWNpbmc6MGVtO30uY2xzLTh7bGV0dGVyLXNwYWNpbmc6MGVtO30uY2xzLTl7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy0xMHtsZXR0ZXItc3BhY2luZzotMC4wMWVtO308L3N0eWxlPjwvZGVmcz48ZyBpZD0iQVBJIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01MC4zNSwxMy4zN2E0Myw0MywwLDEsMCw0My4wNSw0M0E0Myw0MywwLDAsMCw1MC4zNSwxMy4zN1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MC4zNSw3OC45M2ExLDEsMCwwLDEtLjMzLS4wNmwtLjQ5LS4yMWEyOC42LDI4LjYsMCwwLDEtMTcuMy0yNi4zN1Y0MS4wNmEuODcuODcsMCwwLDEsLjg3LS44N2M1LjE5LDAsMTYuNzMtNi4xNCwxNi44NS02LjJhLjgzLjgzLDAsMCwxLC44MSwwYy4xMi4wNiwxMS42NSw2LjIsMTYuODUsNi4yYS44Ny44NywwLDAsMSwuODcuODdWNTIuMjlhMjguNiwyOC42LDAsMCwxLTE3LjMsMjYuMzdsLS40OS4yMUExLDEsMCwwLDEsNTAuMzUsNzguOTNaTTM0LDQxLjg4VjUyLjI5QTI2Ljg4LDI2Ljg4LDAsMCwwLDUwLjIxLDc3LjA3bC4xNC4wNi4xNS0uMDZBMjYuODcsMjYuODcsMCwwLDAsNjYuNzQsNTIuMjlWNDEuODhjLTUuMjktLjQ5LTE0LjMzLTUuMDgtMTYuMzktNi4xNUM0OC4zLDM2LjgsMzkuMjYsNDEuMzksMzQsNDEuODhaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTEuNjYsNjcuMjRINDkuMDVhLjg2Ljg2LDAsMCwxLS44Mi0uNThsLS44MS0yLjMzYy0uMi0uMDctLjM5LS4xNi0uNTktLjI1bC0yLjIyLDEuMDhhLjg3Ljg3LDAsMCwxLTEtLjE3bC0xLjg0LTEuODVhLjg0Ljg0LDAsMCwxLS4xNy0xbDEuMDctMi4yM2MtLjA5LS4xOS0uMTctLjM5LS4yNS0uNTlsLTIuMzItLjgxYS44Ni44NiwwLDAsMS0uNTgtLjgydi0yLjZhLjg2Ljg2LDAsMCwxLC41OC0uODJsMi4zMi0uODJjLjA4LS4xOS4xNi0uMzkuMjUtLjU4bC0xLjA3LTIuMjNhLjg1Ljg1LDAsMCwxLC4xNy0xbDEuODQtMS44NGEuODcuODcsMCwwLDEsMS0uMTdsMi4yMiwxLjA3Yy4yLS4wOS4zOS0uMTcuNTktLjI0bC44MS0yLjMzYS44Ni44NiwwLDAsMSwuODItLjU4aDIuNjFhLjg3Ljg3LDAsMCwxLC44Mi41OGwuODEsMi4zM2MuMi4wNy4zOS4xNS41OS4yNGwyLjIyLTEuMDdhLjg3Ljg3LDAsMCwxLDEsLjE3bDEuODQsMS44NGEuODcuODcsMCwwLDEsLjE3LDFMNTgsNTIuODljLjA5LjE5LjE3LjM5LjI1LjU4bDIuMzIuODJhLjg2Ljg2LDAsMCwxLC41OC44MnYyLjZhLjg2Ljg2LDAsMCwxLS41OC44MmwtMi4zMi44MWMtLjA4LjItLjE2LjQtLjI1LjU5bDEuMDcsMi4yM2EuODUuODUsMCwwLDEtLjE3LDFMNTcuMDksNjVhLjg3Ljg3LDAsMCwxLTEsLjE3bC0yLjIyLTEuMDhjLS4yLjA5LS4zOS4xOC0uNTkuMjVsLS44MSwyLjMzQS44Ny44NywwLDAsMSw1MS42Niw2Ny4yNFptLTItMS43M0g1MWwuNzUtMi4xNWEuODYuODYsMCwwLDEsLjU2LS41NCw1LjY4LDUuNjgsMCwwLDAsMS4xMi0uNDcuODYuODYsMCwwLDEsLjc4LDBsMiwxLDEtMS0xLTIuMDVhLjg2Ljg2LDAsMCwxLDAtLjc4LDcuNTIsNy41MiwwLDAsMCwuNDctMS4xMS44Ni44NiwwLDAsMSwuNTQtLjU2bDIuMTQtLjc1VjU1LjcyTDU3LjMxLDU1YS44Ni44NiwwLDAsMS0uNTQtLjU2LDcuMSw3LjEsMCwwLDAtLjQ3LTEuMTEuODguODgsMCwwLDEsMC0uNzlsMS0yLTEtMS0yLDFhLjg2Ljg2LDAsMCwxLS43OCwwQTYuNjIsNi42MiwwLDAsMCw1Mi4zNSw1MGEuODYuODYsMCwwLDEtLjU2LS41NEw1MSw0Ny4zMUg0OS42N2wtLjc1LDIuMTVhLjg2Ljg2LDAsMCwxLS41Ni41NCw2LjYyLDYuNjIsMCwwLDAtMS4xMi40Ni44Ni44NiwwLDAsMS0uNzgsMGwtMi4wNS0xLTEsMSwxLDJhLjg2Ljg2LDAsMCwxLDAsLjc4LDcsNywwLDAsMC0uNDcsMS4xMi44Ni44NiwwLDAsMS0uNTQuNTZsLTIuMTQuNzVWNTcuMWwyLjE0Ljc1YS44Ni44NiwwLDAsMSwuNTQuNTYsNy41Miw3LjUyLDAsMCwwLC40NywxLjExLjg2Ljg2LDAsMCwxLDAsLjc4bC0xLDIuMDUsMSwxLDIuMDUtMWEuODYuODYsMCwwLDEsLjc4LDAsNS42OCw1LjY4LDAsMCwwLDEuMTIuNDcuODYuODYsMCwwLDEsLjU2LjU0Wm0xMC42NS03LjhoMFptLTEwLDNhNC4yNiw0LjI2LDAsMSwxLDQuMjYtNC4yNkE0LjI3LDQuMjcsMCwwLDEsNTAuMzUsNjAuNjdabTAtNi43OWEyLjUzLDIuNTMsMCwxLDAsMi41MywyLjUzQTIuNTMsMi41MywwLDAsMCw1MC4zNSw1My44OFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MC4zNSw0Ny4zMWEuODYuODYsMCwwLDEtLjg2LS44NlYzNC43NWEuODcuODcsMCwxLDEsMS43MywwdjExLjdBLjg2Ljg2LDAsMCwxLDUwLjM1LDQ3LjMxWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUwLjM1LDc4LjkzYS44Ni44NiwwLDAsMS0uODYtLjg2VjY2LjM3YS44Ny44NywwLDAsMSwxLjczLDB2MTEuN0EuODYuODYsMCwwLDEsNTAuMzUsNzguOTNaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjcuMzEsNTcuMjhoLTdhLjg3Ljg3LDAsMCwxLDAtMS43NGg3YS44Ny44NywwLDAsMSwwLDEuNzRaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNDAuMzksNTcuMjhoLTdhLjg3Ljg3LDAsMCwxLDAtMS43NGg3YS44Ny44NywwLDAsMSwwLDEuNzRaIi8+PC9nPjxnIGlkPSJIT1NUSU5HIj48dGV4dCBjbGFzcz0iY2xzLTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUuNDYgLTQuOTgpIj48dHNwYW4gY2xhc3M9ImNscy00Ij5SPC90c3Bhbj48dHNwYW4geD0iNi41IiB5PSIwIj5lcXVlc3Q8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTUiIHg9IjQwLjYyIiB5PSIwIj4gPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy02IiB4PSI0Mi43MyIgeT0iMCI+VjwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNyIgeD0iNDkuMDMiIHk9IjAiPmFsaWQ8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTgiIHg9IjY3LjIyIiB5PSIwIj5hPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy03IiB4PSI3Mi45NiIgeT0iMCI+dGlvbjwvdHNwYW4+PC90ZXh0Pjx0ZXh0IGNsYXNzPSJjbHMtMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEwMS45NSAtNC45OCkiPjx0c3BhbiBjbGFzcz0iY2xzLTQiPlI8L3RzcGFuPjx0c3BhbiB4PSI2LjUiIHk9IjAiPmVxdWVzdCA8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTkiIHg9IjQzLjE2IiB5PSIwIj5DPC90c3Bhbj48dHNwYW4geD0iNDkuOTkiIHk9IjAiPm88L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTgiIHg9IjU2LjU4IiB5PSIwIj5uPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy0xMCIgeD0iNjMuMTkiIHk9IjAiPnQ8L3RzcGFuPjx0c3BhbiB4PSI2Ny4wOSIgeT0iMCI+ZTwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtOCIgeD0iNzMuMSIgeT0iMCI+bjwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNyIgeD0iNzkuNzEiIHk9IjAiPnQgTGltaXQ8L3RzcGFuPjwvdGV4dD48L2c+PC9zdmc+",
581
- category: "others",
582
- onRequest: true,
583
- onResponse: false
584
- },
585
- {
586
- id: "xml-threat-protection",
587
- name: "XML Threat Protection",
588
- description: "Protects against main XML threats",
589
- version: "1.2.1",
590
- schema: "{\n \"type\": \"object\",\n \"id\": \"urn:jsonschema:io:gravitee:policy:threatprotection:xml:XmlThreatProtectionPolicyConfiguration\",\n \"properties\": {\n \"maxElements\": {\n \"title\": \"Maximum xml elements\",\n \"description\": \"Maximum number of elements allowed in an xml document. Example: <code>&lt;root&gt;&lt;a&gt;1&lt;/a&gt;2&lt;b&gt;&lt;/b&gt;&lt;/root&gt;</code>, document has 3 elements. (-1 to specify no limit)\",\n \"type\": \"integer\",\n \"default\": 1000\n },\n \"maxDepth\": {\n \"title\": \"Maximum xml depth\",\n \"description\": \"Maximum depth of xml structure. Example: <code>&lt;root&gt;&lt;a&gt;&lt;b&gt;1&lt;/b&gt;&lt;/a&gt;&lt;/root&gt;</code>, xml has a depth of 2. (-1 to specify no limit)\",\n \"type\": \"integer\",\n \"default\": 100\n },\n \"maxLength\": {\n \"title\": \"Maximum xml length\",\n \"description\": \"Maximum number of characters allowed for the whole xml document. (-1 to specify no limit)\",\n \"type\": \"integer\",\n \"default\": 1000\n },\n \"maxAttributesPerElement\": {\n \"title\": \"Maximum attributes per element\",\n \"description\": \"Maximum number of attributes allowed for single XML element. (-1 to specify no limit)\",\n \"type\": \"integer\",\n \"default\": 100\n },\n \"maxAttributeValueLength\": {\n \"title\": \"Maximum attribute value length\",\n \"description\": \"Maximum length of individual attribute values. (-1 to specify no limit)\",\n \"type\": \"integer\",\n \"default\": 100\n },\n \"maxChildrenPerElement\": {\n \"title\": \"Maximum children per element\",\n \"description\": \"Maximum number of child elements for a given element. Example: <code>&lt;root&gt;&lt;a&gt;&lt;b&gt;1&lt;/b&gt;&lt;c&gt;2&lt;/c&gt;&lt;/a&gt;&lt;/root&gt;</code>, 'a' element has 2 children. (-1 to specify no limit)\",\n \"type\": \"integer\",\n \"default\": 100\n },\n \"maxTextValueLength\": {\n \"title\": \"Maximum text value length\",\n \"description\": \"Maximum length of individual text value. (-1 to specify no limit)\",\n \"type\": \"integer\",\n \"default\": 100\n },\n \"maxEntities\": {\n \"title\": \"Maximum xml entities\",\n \"description\": \"Maximum number of entity expansions allowed. XML entities are kind of macros and are vulnerable to entity expansion attacks (see <a href=\\\"https://fr.wikipedia.org/wiki/XML_entity_expansion\\\">entity expansion</a>). (-1 to specify no limit)\",\n \"type\": \"integer\",\n \"default\": 100\n },\n \"maxEntityDepth\": {\n \"title\": \"Maximum xml entity depth\",\n \"description\": \"Maximum depth of nested entity expansions allowed. (-1 to specify no limit)\",\n \"type\": \"integer\",\n \"default\": 100\n },\n \"allowExternalEntities\": {\n \"title\": \"Allow external entities\",\n \"description\": \"Allow inclusion of external entities or not. <strong>WARNING</strong>: XML can be vulnerable to <a href=\\\"https://en.wikipedia.org/wiki/XML_external_entity_attack\\\">XXE Injection</a>, you should enable this feature only when you can really really trust your consumers. (-1 to specify no limit)\",\n \"type\": \"boolean\",\n \"default\": false\n }\n },\n \"required\": [\n \"maxElements\",\n \"maxDepth\",\n \"maxLength\",\n \"maxAttributesPerElement\",\n \"maxAttributeValueLength\",\n \"maxChildrenPerElement\",\n \"maxTextValueLength\",\n \"maxEntities\",\n \"maxEntityDepth\",\n \"allowExternalEntities\"\n ]\n}",
591
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjA0ZW07fS5jbHMtNXtsZXR0ZXItc3BhY2luZzotMC4wMWVtO30uY2xzLTZ7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy03e2xldHRlci1zcGFjaW5nOjBlbTt9LmNscy04e2xldHRlci1zcGFjaW5nOjBlbTt9LmNscy05e2xldHRlci1zcGFjaW5nOi0wLjAyZW07fS5jbHMtMTB7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy0xMXtsZXR0ZXItc3BhY2luZzowLjAxZW07fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJBUEkiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTUwLjM1LDEzLjM3YTQzLDQzLDAsMSwwLDQzLjA1LDQzQTQzLDQzLDAsMCwwLDUwLjM1LDEzLjM3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUwLjM1LDg0LjUzYTEsMSwwLDAsMS0uNTEtLjEzQzIyLjA4LDY5LjIxLDI2LjE5LDQ1LjQ2LDI2LjI0LDQ1LjIyYTEsMSwwLDAsMSwuNjctLjgxbC41NS0uMjFBNTUuNzMsNTUuNzMsMCwwLDAsNDkuNTMsMjguNjVhMS4xMSwxLjExLDAsMCwxLDEuNjQsMEE1NS44Nyw1NS44NywwLDAsMCw3My4yNCw0NC4ybC41Ni4yMWExLjA3LDEuMDcsMCwwLDEsLjY3LjgxYzAsLjI0LDQuMTYsMjQtMjMuNiwzOS4xOEExLjA2LDEuMDYsMCwwLDEsNTAuMzUsODQuNTNaTTI4LjI3LDQ2LjJjLS40NiwzLjY1LTEuNjQsMjIuNzUsMjIuMDgsMzYsMjMuNDgtMTMuMTIsMjIuNDgtMzIuNDMsMjIuMDgtMzZBNTgsNTgsMCwwLDEsNTAuMzUsMzEsNTcuNzcsNTcuNzcsMCwwLDEsMjguMjcsNDYuMloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MC4zNiw3MC41MWMtNi4yMSwwLTEwLjg4LTIuMzMtMTAuODgtNS40MlY0Ny43M2ExLjA4LDEuMDgsMCwwLDEsMi4xNiwwYzAsMS4zMywzLjQsMy4yNiw4LjcyLDMuMjZzOC43MS0xLjkzLDguNzEtMy4yNmExLjA4LDEuMDgsMCwwLDEsMi4xNiwwVjY1LjA5QzYxLjIzLDY4LjE4LDU2LjU2LDcwLjUxLDUwLjM2LDcwLjUxWk00MS42NCw1MS4wNnYxNGMwLDEuMzMsMy40LDMuMjYsOC43MiwzLjI2czguNzEtMS45Myw4LjcxLTMuMjZ2LTE0YTE2LjMzLDE2LjMzLDAsMCwxLTguNzEsMi4wOUExNi4zNSwxNi4zNSwwLDAsMSw0MS42NCw1MS4wNloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MC4zNiw1My4xNWMtNi4yMSwwLTEwLjg4LTIuMzMtMTAuODgtNS40MnM0LjY3LTUuNDMsMTAuODgtNS40MywxMC44NywyLjM0LDEwLjg3LDUuNDNTNTYuNTYsNTMuMTUsNTAuMzYsNTMuMTVabTAtOC42OGMtNS4zMiwwLTguNzIsMS45My04LjcyLDMuMjZTNDUsNTEsNTAuMzYsNTFzOC43MS0xLjkzLDguNzEtMy4yNlM1NS42OCw0NC40Nyw1MC4zNiw0NC40N1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MC4zNSw2MS44M2MtNi4yLDAtMTAuODgtMi4zMy0xMC44OC01LjQyYTEuMDksMS4wOSwwLDAsMSwyLjE3LDBjMCwxLjMzLDMuMzksMy4yNiw4LjcxLDMuMjZzOC43Mi0xLjkzLDguNzItMy4yNmExLjA4LDEuMDgsMCwwLDEsMi4xNiwwQzYxLjIzLDU5LjUsNTYuNTYsNjEuODMsNTAuMzUsNjEuODNaIi8+PC9nPjxnIGlkPSJIT1NUSU5HIj48dGV4dCBjbGFzcz0iY2xzLTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjkzIC00Ljk4KSI+WE1MPHRzcGFuIGNsYXNzPSJjbHMtNCIgeD0iMjIuMTYiIHk9IjAiPiA8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTUiIHg9IjI0LjIyIiB5PSIwIj5UPC90c3Bhbj48dHNwYW4geD0iMzAuMSIgeT0iMCI+aDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNiIgeD0iMzYuNzYiIHk9IjAiPnI8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTciIHg9IjQwLjU2IiB5PSIwIj5lPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy04IiB4PSI0Ni41NyIgeT0iMCI+YTwvdHNwYW4+PHRzcGFuIHg9IjUyLjMxIiB5PSIwIj50IDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtOSIgeD0iNTguODIiIHk9IjAiPlA8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTYiIHg9IjY1LjAyIiB5PSIwIj5yPC90c3Bhbj48dHNwYW4geD0iNjguODIiIHk9IjAiPm88L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTEwIiB4PSI3NS40MSIgeT0iMCI+dDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNyIgeD0iNzkuMzEiIHk9IjAiPmU8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTExIiB4PSI4NS4zMiIgeT0iMCI+YzwvdHNwYW4+PHRzcGFuIHg9IjkwLjg1IiB5PSIwIj50aW9uPC90c3Bhbj48L3RleHQ+PC9nPjwvc3ZnPg==",
592
- category: "security",
593
- onRequest: true,
594
- onResponse: false
595
- },
596
- {
597
- id: "xml-validation",
598
- name: "XML Validation",
599
- description: "Description of the XML validation Policy",
600
- version: "1.1.0",
601
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:xmlschema:io:gravitee:policy:XmlValidationPolicyConfiguration\",\n \"properties\" : {\n \"errorMessage\": {\n \"title\": \"Http error message\",\n \"description\": \"Http error message to send when request is not valid. Status code is 400 as Bad request. Supports EL.\",\n \"type\": \"string\",\n \"x-schema-form\": {\n \"type\": \"codemirror\",\n \"codemirrorOptions\": {\n \"placeholder\": \"Put your error message here or drag'n'drop it\",\n \"lineWrapping\": true,\n \"lineNumbers\": true,\n \"allowDropFileTypes\": true,\n \"autoCloseTags\": true,\n \"mode\": \"xml\",\n \"value\": \"validation/internal\"\n },\n \"expression-language\": true\n }\n },\n \"xsdSchema\": {\n \"title\": \"xsdSchema\",\n \"description\": \"XML schema used for request payload validation\",\n \"type\": \"string\",\n \"x-schema-form\": {\n \"type\": \"codemirror\",\n \"codemirrorOptions\": {\n \"placeholder\": \"Put your xml schema here or drag'n'drop it\",\n \"lineWrapping\": true,\n \"lineNumbers\": true,\n \"allowDropFileTypes\": true,\n \"autoCloseTags\": true,\n \"mode\": \"xml\"\n }\n }\n }\n },\n \"required\": [\n \"xsdSchema\"\n ]\n}\n",
602
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjA0ZW07fS5jbHMtNXtsZXR0ZXItc3BhY2luZzotMC4wM2VtO30uY2xzLTZ7bGV0dGVyLXNwYWNpbmc6MGVtO30uY2xzLTd7bGV0dGVyLXNwYWNpbmc6MGVtO308L3N0eWxlPjwvZGVmcz48ZyBpZD0iQVBJIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01MC4zNSwxMy4zN2E0Myw0MywwLDEsMCw0My4wNSw0M0E0Myw0MywwLDAsMCw1MC4zNSwxMy4zN1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MC4zNSw3OC41NGEuOC44LDAsMCwxLS40LS4xMUMyOC4xLDY2LjQ4LDMxLjM0LDQ3Ljc5LDMxLjM3LDQ3LjZBLjg1Ljg1LDAsMCwxLDMxLjksNDdsLjQ0LS4xN0E0My44MSw0My44MSwwLDAsMCw0OS43MSwzNC41NmEuODkuODksMCwwLDEsMS4yOSwwQTQzLjgxLDQzLjgxLDAsMCwwLDY4LjM3LDQ2LjhsLjQzLjE3YS44MS44MSwwLDAsMSwuNTMuNjNjMCwuMTksMy4yOCwxOC44OC0xOC41NywzMC44M0EuODEuODEsMCwwLDEsNTAuMzUsNzguNTRaTTMzLDQ4LjM4Yy0uMzcsMi44Ny0xLjMsMTcuOSwxNy4zNywyOC4zM0M2OSw2Ni4yOCw2OC4xLDUxLjI1LDY3LjczLDQ4LjM4YTQ1LjUxLDQ1LjUxLDAsMCwxLTE3LjM4LTEyQTQ1LjQsNDUuNCwwLDAsMSwzMyw0OC4zOFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01NS40NSw2NS4yM0g0NS4yNmEyLDIsMCwwLDEtMi0yVjU2Ljc1YTIsMiwwLDAsMSwyLTJINTUuNDVhMiwyLDAsMCwxLDIsMnY2LjQ0QTIsMiwwLDAsMSw1NS40NSw2NS4yM1pNNDUuMjYsNTYuNDFhLjM0LjM0LDAsMCwwLS4zNC4zNHY2LjQ0YS4zNS4zNSwwLDAsMCwuMzQuMzRINTUuNDVhLjM1LjM1LDAsMCwwLC4zNC0uMzRWNTYuNzVhLjM0LjM0LDAsMCwwLS4zNC0uMzRaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTQuODUsNTYuNDFhLjg1Ljg1LDAsMCwxLS44NS0uODVWNTIuOTJhMy42NSwzLjY1LDAsMCwwLTcuMjksMHYyLjY0YS44NS44NSwwLDAsMS0xLjcsMFY1Mi45MmE1LjM1LDUuMzUsMCwxLDEsMTAuNjksMHYyLjY0QS44NS44NSwwLDAsMSw1NC44NSw1Ni40MVoiLz48L2c+PGcgaWQ9IkhPU1RJTkciPjx0ZXh0IGNsYXNzPSJjbHMtMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTcuOTMgLTQuOTgpIj5KU09OPHRzcGFuIGNsYXNzPSJjbHMtNCIgeD0iMjYuNTIiIHk9IjAiPiA8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTUiIHg9IjI4LjYzIiB5PSIwIj5WPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy02IiB4PSIzNC45MyIgeT0iMCI+YWxpZDwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtNyIgeD0iNTMuMTIiIHk9IjAiPmE8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTYiIHg9IjU4Ljg2IiB5PSIwIj50aW9uPC90c3Bhbj48L3RleHQ+PC9nPjwvc3ZnPg==",
603
- category: "others",
604
- onRequest: true,
605
- onResponse: false
606
- },
607
- {
608
- id: "xml-json",
609
- name: "XML to JSON",
610
- description: "Description of the XML to JSON Transformation Gravitee Policy",
611
- version: "1.7.0",
612
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:xml2json:configuration:XmlToJsonTransformationPolicyConfiguration\",\n \"properties\" : {\n \"scope\" : {\n \"title\": \"Scope\",\n \"description\": \"Execute policy on <strong>request</strong> or <strong>response</strong> phase.\",\n \"type\" : \"string\",\n \"default\": \"REQUEST\",\n \"enum\" : [ \"REQUEST\", \"RESPONSE\" ],\n \"deprecated\": \"true\"\n }\n }\n}\n",
613
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjAxZW07fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJBUEkiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTUwLjM1LDEzLjM3YTQzLDQzLDAsMSwwLDQzLjA1LDQzQTQzLDQzLDAsMCwwLDUwLjM1LDEzLjM3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUxLjUsNjQuOTJBNi41Myw2LjUzLDAsMSwxLDU4LDU4LjM5LDYuNTMsNi41MywwLDAsMSw1MS41LDY0LjkyWm0wLTExLjM0YTQuODEsNC44MSwwLDEsMCw0LjgxLDQuODFBNC44MSw0LjgxLDAsMCwwLDUxLjUsNTMuNThaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjMuOCw3Ny4wOWE0LjgzLDQuODMsMCwxLDEsMy42OS03LjkyLDQuNzQsNC43NCwwLDAsMSwxLjEzLDMuMDlBNC44Myw0LjgzLDAsMCwxLDYzLjgsNzcuMDlabTAtNy45M2EzLjExLDMuMTEsMCwxLDAsMi4zOCwxLjEyQTMuMSwzLjEsMCwwLDAsNjMuOCw2OS4xNloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MS41LDQzLjY4YTQuODUsNC44NSwwLDAsMS00Ljc3LTQuMTQsNSw1LDAsMCwxLDAtLjY5LDQuODMsNC44MywwLDAsMSw5LjY1LDAsMy40NSwzLjQ1LDAsMCwxLS4wNy43NEE0LjgxLDQuODEsMCwwLDEsNTEuNSw0My42OFptMC03LjkzYTMuMSwzLjEsMCwwLDAtMy4xLDMuMSwzLjI1LDMuMjUsMCwwLDAsMCwuNDQsMy4xLDMuMSwwLDAsMCw2LjE0LDAsMi42NiwyLjY2LDAsMCwwLDAtLjQ1QTMuMTEsMy4xMSwwLDAsMCw1MS41LDM1Ljc1WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTMzLjY0LDcwLjE1YTQuODMsNC44MywwLDAsMS0xLjM3LTkuNDYsNSw1LDAsMCwxLDEuMzctLjE5LDQuODIsNC44MiwwLDAsMSw0LjgyLDQuODIsNC44Nyw0Ljg3LDAsMCwxLTIuNzEsNC4zNUE0LjczLDQuNzMsMCwwLDEsMzMuNjQsNzAuMTVabTAtNy45M2EzLDMsMCwwLDAtLjg5LjEzLDMuMSwzLjEsMCwwLDAsLjg5LDYuMDhBMywzLDAsMCwwLDM1LDY4LjEyYTMuMTEsMy4xMSwwLDAsMC0xLjM1LTUuOVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zMi4xOCw1Ni4zNWgtLjEyYS44Ny44NywwLDAsMS0uNzMtMUEyMC40NywyMC40NywwLDAsMSw0Miw0MC4zM2EuODYuODYsMCwxLDEsLjgsMS41MkExOC43NywxOC43NywwLDAsMCwzMyw1NS42MS44Ni44NiwwLDAsMSwzMi4xOCw1Ni4zNVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MS41LDc4Ljc5YTIwLjE3LDIwLjE3LDAsMCwxLTEyLjI3LTQuMTEuODYuODYsMCwwLDEtLjE3LTEuMjEuODUuODUsMCwwLDEsMS4yLS4xNkExOC41MiwxOC41MiwwLDAsMCw1MS41LDc3LjA3LDE4LjIzLDE4LjIzLDAsMCwwLDU1LDc2LjczYS44Ny44NywwLDAsMSwuMzMsMS43QTIwLjg3LDIwLjg3LDAsMCwxLDUxLjUsNzguNzlaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNzAsNjUuNDJhLjg0Ljg0LDAsMCwxLS4yNywwLC44Ni44NiwwLDAsMS0uNTQtMS4wOSwxOC43MSwxOC43MSwwLDAsMC04LjU1LTIyLjE3Ljg2Ljg2LDAsMSwxLC44NS0xLjUsMjAuNDIsMjAuNDIsMCwwLDEsOS4zMywyNC4yMUEuODcuODcsMCwwLDEsNzAsNjUuNDJaIi8+PC9nPjxnIGlkPSJIT1NUSU5HIj48dGV4dCBjbGFzcz0iY2xzLTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjkzIC00Ljk4KSI+WE1MIDx0c3BhbiBjbGFzcz0iY2xzLTQiIHg9IjI0LjcxIiB5PSIwIj50PC90c3Bhbj48dHNwYW4geD0iMjguNjEiIHk9IjAiPm8gSlNPTjwvdHNwYW4+PC90ZXh0PjwvZz48L3N2Zz4=",
614
- category: "transformation",
615
- onRequest: true,
616
- onResponse: true
617
- },
618
- {
619
- id: "xslt",
620
- name: "XSLT Transformation",
621
- description: "Description of the XSLT Gravitee Policy",
622
- version: "1.6.0",
623
- schema: "{\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:xslt:configuration:XSLTTransformationPolicyConfiguration\",\n \"properties\" : {\n \"scope\" : {\n \"title\": \"Scope\",\n \"description\": \"Execute policy on <strong>request</strong> or <strong>response</strong> phase.\",\n \"type\" : \"string\",\n \"default\": \"REQUEST\",\n \"enum\" : [ \"REQUEST\", \"RESPONSE\" ],\n \"deprecated\": \"true\"\n },\n \"stylesheet\" : {\n \"title\": \"XSLT stylesheet\",\n \"type\" : \"string\",\n \"x-schema-form\": {\n \"type\": \"codemirror\",\n \"codemirrorOptions\": {\n \"placeholder\": \"Place your XSLT stylesheet here or Drag&Drop your XML file\",\n \"lineWrapping\": true,\n \"lineNumbers\": true,\n \"allowDropFileTypes\": true,\n \"autoCloseTags\": true,\n \"mode\": \"xml\"\n },\n \"expression-language\": true\n }\n },\n \"parameters\" : {\n \"type\" : \"array\",\n \"title\": \"XSLT parameters\",\n \"items\" : {\n \"type\" : \"object\",\n \"id\" : \"urn:jsonschema:io:gravitee:policy:xslt:configuration:XSLTParameter\",\n \"title\": \"Parameter\",\n \"properties\" : {\n \"name\" : {\n \"title\": \"Name\",\n \"type\" : \"string\"\n },\n \"value\" : {\n \"title\": \"Value (support EL)\",\n \"type\" : \"string\",\n \"x-schema-form\": {\n \"expression-language\": true\n }\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ]\n }\n }\n },\n \"required\": [\n \"stylesheet\"\n ]\n}\n",
624
- icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAuNzEgMTEyLjgyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg2YzNkMDt9LmNscy0ye2ZpbGw6I2ZmZjt9LmNscy0ze2ZvbnQtc2l6ZToxMnB4O2ZpbGw6IzFkMWQxYjtmb250LWZhbWlseTpNeXJpYWRQcm8tUmVndWxhciwgTXlyaWFkIFBybzt9LmNscy00e2xldHRlci1zcGFjaW5nOi0wLjA0ZW07fS5jbHMtNXtsZXR0ZXItc3BhY2luZzotMC4wMWVtO30uY2xzLTZ7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy03e2xldHRlci1zcGFjaW5nOjBlbTt9LmNscy04e2xldHRlci1zcGFjaW5nOjBlbTt9LmNscy05e2xldHRlci1zcGFjaW5nOi0wLjAyZW07fS5jbHMtMTB7bGV0dGVyLXNwYWNpbmc6LTAuMDFlbTt9LmNscy0xMXtsZXR0ZXItc3BhY2luZzowLjAxZW07fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJBUEkiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTUwLjM1LDEzLjM3YTQzLDQzLDAsMSwwLDQzLjA1LDQzQTQzLDQzLDAsMCwwLDUwLjM1LDEzLjM3WiIvPjxjaXJjbGUgY2xhc3M9ImNscy0yIiBjeD0iNjUuNTkiIGN5PSI3MC45MiIgcj0iMi4xMiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUyLjQ4LDM2LjQzYTIuMTMsMi4xMywwLDEsMS0yLjEzLTIuMTNBMi4xMiwyLjEyLDAsMCwxLDUyLjQ4LDM2LjQzWiIvPjxjaXJjbGUgY2xhc3M9ImNscy0yIiBjeD0iMzMuOTMiIGN5PSI2OS42NiIgcj0iMi4xMiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTM0LjA2LDcwLjUyYS44Ny44NywwLDAsMS0uNjktLjMzQTIxLjI5LDIxLjI5LDAsMCwxLDI4Ljg4LDU3LDIxLjU4LDIxLjU4LDAsMCwxLDQxLjIsMzcuNmEuODcuODcsMCwwLDEsLjc0LDEuNTdBMTkuODUsMTkuODUsMCwwLDAsMzAuNjEsNTdhMTkuNTQsMTkuNTQsMCwwLDAsNC4xMywxMi4wOC44Ny44NywwLDAsMS0uMTUsMS4yMkEuODkuODksMCwwLDEsMzQuMDYsNzAuNTJaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTAuMzUsNzguNTFhMjEuMzksMjEuMzksMCwwLDEtMTEuNDEtMy4yOC44Ni44NiwwLDEsMSwuOTItMS40NkExOS43OCwxOS43OCwwLDAsMCw2NSw3MC4zNGEuODYuODYsMCwwLDEsMS4yMi0uMDYuODguODgsMCwwLDEsLjA2LDEuMjNBMjEuNTYsMjEuNTYsMCwwLDEsNTAuMzUsNzguNTFaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjkuNzYsNjQuODdhLjc5Ljc5LDAsMCwxLS4zLS4wNS44Ny44NywwLDAsMS0uNTItMS4xMUExOS43NSwxOS43NSwwLDAsMCw1MC4zNSwzNy4yOWEuODcuODcsMCwwLDEsMC0xLjczQTIxLjQ5LDIxLjQ5LDAsMCwxLDcwLjU3LDY0LjMuODYuODYsMCwwLDEsNjkuNzYsNjQuODdaIi8+PC9nPjxnIGlkPSJIT1NUSU5HIj48dGV4dCBjbGFzcz0iY2xzLTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC05MC4zOCAtNC45OCkiPlhNTDx0c3BhbiBjbGFzcz0iY2xzLTQiIHg9IjIyLjE2IiB5PSIwIj4gPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy01IiB4PSIyNC4yMiIgeT0iMCI+VDwvdHNwYW4+PHRzcGFuIHg9IjMwLjEiIHk9IjAiPmg8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTYiIHg9IjM2Ljc2IiB5PSIwIj5yPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy03IiB4PSI0MC41NiIgeT0iMCI+ZTwvdHNwYW4+PHRzcGFuIGNsYXNzPSJjbHMtOCIgeD0iNDYuNTciIHk9IjAiPmE8L3RzcGFuPjx0c3BhbiB4PSI1Mi4zMSIgeT0iMCI+dCA8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTkiIHg9IjU4LjgyIiB5PSIwIj5QPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy02IiB4PSI2NS4wMiIgeT0iMCI+cjwvdHNwYW4+PHRzcGFuIHg9IjY4LjgyIiB5PSIwIj5vPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy0xMCIgeD0iNzUuNDEiIHk9IjAiPnQ8L3RzcGFuPjx0c3BhbiBjbGFzcz0iY2xzLTciIHg9Ijc5LjMxIiB5PSIwIj5lPC90c3Bhbj48dHNwYW4gY2xhc3M9ImNscy0xMSIgeD0iODUuMzIiIHk9IjAiPmM8L3RzcGFuPjx0c3BhbiB4PSI5MC44NSIgeT0iMCI+dGlvbjwvdHNwYW4+PC90ZXh0PjwvZz48L3N2Zz4=",
625
- category: "transformation",
626
- onRequest: true,
627
- onResponse: true
628
- }
629
- ];
630
- var _apimPolicies = {
631
- data: data$2
632
- };
633
-
634
- var data$1 = [
635
- {
636
- id: "cache",
637
- name: "Cache",
638
- description: "Cache resource",
639
- version: "1.2.0",
640
- schema: {
641
- type: "object",
642
- id: "urn:jsonschema:io:gravitee:resource:cache:configuration:CacheResourceConfiguration",
643
- properties: {
644
- name: {
645
- title: "Cache name",
646
- description: "The name of the cache.",
647
- type: "string",
648
- "default": "my-cache"
649
- },
650
- timeToIdleSeconds: {
651
- title: "Time to idle (in seconds)",
652
- type: "integer",
653
- description: "The maximum number of seconds an element can exist in the cache without being accessed. The element expires at this limit and will no longer be returned from the cache. The default value is 0, which means no timeToIdle (TTI) eviction takes place (infinite lifetime).",
654
- "default": 0,
655
- minimum: 0
656
- },
657
- timeToLiveSeconds: {
658
- title: "Time to live (in seconds)",
659
- type: "integer",
660
- description: "The maximum number of seconds an element can exist in the cache regardless of use. The element expires at this limit and will no longer be returned from the cache. The default value is 0, which means no timeToLive (TTL) eviction takes place (infinite lifetime).",
661
- "default": 0,
662
- minimum: 0
663
- },
664
- maxEntriesLocalHeap: {
665
- title: "Max entries on heap",
666
- description: "The maximum objects to be held in local heap memory (0 = no limit).",
667
- type: "integer",
668
- "default": 1000,
669
- minimum: 0
670
- }
671
- },
672
- required: [
673
- "name",
674
- "timeToIdleSeconds",
675
- "timeToLiveSeconds",
676
- "maxEntriesLocalHeap"
677
- ]
678
- }
679
- },
680
- {
681
- id: "oauth2-am-resource",
682
- name: "Gravitee.io AM AS",
683
- description: "Gravitee.io AM Authorization Server resource",
684
- version: "1.10.0",
685
- schema: {
686
- type: "object",
687
- id: "urn:jsonschema:io:gravitee:resource:oauth2:am:configuration:OAuth2ResourceConfiguration",
688
- properties: {
689
- serverURL: {
690
- title: "Server URL",
691
- description: "The URL of the Access Management server.",
692
- type: "string"
693
- },
694
- version: {
695
- title: "Version",
696
- description: "The version of the Access Management server.",
697
- type: "string",
698
- "default": "V1_X",
699
- "enum": [
700
- "V1_X",
701
- "V2_X"
702
- ]
703
- },
704
- securityDomain: {
705
- title: "Security domain",
706
- description: "The security domain (realm) from where the token has been generated and must be introspect.",
707
- type: "string"
708
- },
709
- clientId: {
710
- title: "Client Id",
711
- description: "The client identifier.",
712
- type: "string"
713
- },
714
- clientSecret: {
715
- title: "Client Secret",
716
- description: "The client secret.",
717
- type: "string"
718
- },
719
- userClaim: {
720
- title: "User claim",
721
- description: "User claim field used to store end user on log analytics",
722
- type: "string",
723
- "default": "sub"
724
- }
725
- },
726
- required: [
727
- "serverURL",
728
- "version",
729
- "securityDomain",
730
- "clientId",
731
- "clientSecret"
732
- ]
733
- }
734
- },
735
- {
736
- id: "oauth2",
737
- name: "Generic OAuth2 AS",
738
- description: "Generic OAuth2 Authorization Server resource",
739
- version: "1.13.0",
740
- schema: {
741
- type: "object",
742
- id: "urn:jsonschema:io:gravitee:policy:oauth2:configuration:OAuth2PolicyConfiguration",
743
- properties: {
744
- oauthResource: {
745
- title: "OAuth2 resource",
746
- description: "OAuth2 resource used to validate token.",
747
- type: "string"
748
- },
749
- extractPayload: {
750
- title: "Extract OAuth2 payload",
751
- description: "Push the token endpoint payload into the 'oauth.payload' context attribute.",
752
- type: "boolean",
753
- "default": false
754
- },
755
- checkRequiredScopes: {
756
- title: "Check scopes",
757
- description: "Check required scopes to access the resource",
758
- type: "boolean",
759
- "default": false
760
- },
761
- requiredScopes: {
762
- type: "array",
763
- title: "Required scopes",
764
- description: "List of required scopes to access the resource.",
765
- items: {
766
- type: "string",
767
- title: "Scope"
768
- }
769
- },
770
- modeStrict: {
771
- title: "Mode strict",
772
- description: "Check scopes with exactly those configured",
773
- type: "boolean",
774
- "default": true
775
- },
776
- propagateAuthHeader: {
777
- title: "Propagate Authorization header",
778
- description: "Allows to propagate Authorization header to the target endpoints",
779
- type: "boolean",
780
- "default": true
781
- }
782
- },
783
- required: [
784
- "oauthResource"
785
- ]
786
- }
787
- },
788
- {
789
- id: "custom",
790
- name: "Custom",
791
- description: "Custom resource",
792
- version: "1.0.0",
793
- schema: {
794
- type: "object",
795
- id: "urn:jsonschema:custom:CustomConfiguration",
796
- properties: {
797
- url: {
798
- title: "Custom URL",
799
- description: "Custom URL",
800
- type: "string",
801
- "default": ""
802
- },
803
- authUrl: {
804
- title: "Custom Authentication URL",
805
- description: "Custom Authentication",
806
- type: "string",
807
- "default": ""
808
- },
809
- clientId: {
810
- title: "Client ID",
811
- description: "Client ID",
812
- type: "string",
813
- "default": ""
814
- },
815
- secrets: {
816
- title: "Client Secrets",
817
- type: "string",
818
- "x-schema-form": {
819
- type: "codemirror",
820
- codemirrorOptions: {
821
- placeholder: "Place your client secrets",
822
- lineWrapping: false,
823
- lineNumbers: true,
824
- allowDropFileTypes: false,
825
- autoCloseTags: true,
826
- mode: "javascript"
827
- }
828
- }
829
- }
830
- },
831
- required: [
832
- "url",
833
- "authUrl",
834
- "secrets"
835
- ]
836
- }
837
- }
838
- ];
839
- var _apimResourceTypes = {
840
- data: data$1
841
- };
842
-
843
- var name = "My API";
844
- var version = "1";
845
- var flow_mode = "BEST_MATCH";
846
- var flows = [
847
- {
848
- name: "All",
849
- condition: "",
850
- enabled: true,
851
- methods: [
852
- "GET",
853
- "HEAD",
854
- "POST",
855
- "PUT",
856
- "DELETE",
857
- "CONNECT",
858
- "OPTIONS",
859
- "TRACE",
860
- "PATCH"
861
- ],
862
- "path-operator": {
863
- path: "/",
864
- operator: "STARTS_WITH"
865
- },
866
- pre: [
867
- {
868
- policy: "rate-limit",
869
- name: "Rate Limit",
870
- enabled: true,
871
- description: "Step description",
872
- configuration: {
873
- rate: {
874
- limit: 10,
875
- periodTime: 1,
876
- periodTimeUnit: "MINUTES"
877
- }
878
- }
879
- },
880
- {
881
- policy: "api-key",
882
- name: "Check API Key",
883
- enabled: true,
884
- description: "Step description",
885
- configuration: {
886
- propagateApiKey: true
887
- }
888
- },
889
- {
890
- policy: "policy-http-callout",
891
- name: "HTTP Callout",
892
- enabled: true,
893
- description: "Step description",
894
- configuration: {
895
- }
896
- }
897
- ],
898
- post: [
899
- {
900
- policy: "url-rewriting",
901
- name: "URL Rewriting",
902
- enabled: true,
903
- description: "Description of the URL Rewriting Gravitee Policy",
904
- configuration: {
905
- }
906
- },
907
- {
908
- policy: "xml-json",
909
- name: "XML to JSON",
910
- enabled: true,
911
- description: "Step description",
912
- configuration: {
913
- }
914
- }
915
- ]
916
- },
917
- {
918
- name: "",
919
- "path-operator": {
920
- path: "/products",
921
- operator: "EQUALS"
922
- },
923
- enabled: false,
924
- methods: [
925
- "POST",
926
- "PUT"
927
- ],
928
- condition: "",
929
- pre: [
930
- {
931
- policy: "xml-json",
932
- name: "XML to JSON",
933
- enabled: true,
934
- description: "Step description",
935
- configuration: {
936
- }
937
- }
938
- ],
939
- post: [
940
- {
941
- policy: "json-to-xml",
942
- name: "JSON to XML",
943
- enabled: true,
944
- description: "Step description",
945
- configuration: {
946
- }
947
- }
948
- ]
949
- },
950
- {
951
- name: "",
952
- "path-operator": {
953
- path: "/products",
954
- operator: "STARTS_WITH"
955
- },
956
- enabled: true,
957
- methods: [
958
- "GET"
959
- ],
960
- condition: "",
961
- pre: [
962
- {
963
- policy: "transform-queryparams",
964
- name: "Transform Query Parameters",
965
- description: "Description of the Transform Query Parameters Policy",
966
- enabled: true,
967
- configuration: {
968
- }
969
- },
970
- {
971
- policy: "url-rewriting",
972
- name: "URL Rewriting",
973
- enabled: true,
974
- description: "Description of the URL Rewriting Gravitee Policy",
975
- configuration: {
976
- }
977
- }
978
- ],
979
- post: [
980
- {
981
- policy: "json-to-xml",
982
- name: "JSON to XML",
983
- enabled: true,
984
- description: "Step description",
985
- configuration: {
986
- }
987
- }
988
- ]
989
- }
990
- ];
991
- var plans = [
992
- {
993
- id: "p-1",
994
- name: "Free plan",
995
- flows: [
996
- {
997
- name: "All",
998
- enabled: true,
999
- methods: [
1000
- "GET",
1001
- "HEAD",
1002
- "POST",
1003
- "PUT",
1004
- "DELETE",
1005
- "CONNECT",
1006
- "OPTIONS",
1007
- "TRACE",
1008
- "PATCH"
1009
- ],
1010
- "path-operator": {
1011
- path: "/",
1012
- operator: "STARTS_WITH"
1013
- },
1014
- condition: "",
1015
- pre: [
1016
- {
1017
- policy: "rate-limit",
1018
- name: "Rate Limit",
1019
- enabled: true,
1020
- description: "Step description",
1021
- configuration: {
1022
- rate: {
1023
- limit: 10,
1024
- periodTime: 1,
1025
- periodTimeUnit: "MINUTES"
1026
- }
1027
- }
1028
- },
1029
- {
1030
- policy: "api-key",
1031
- name: "Check API Key",
1032
- enabled: true,
1033
- description: "Step description",
1034
- configuration: {
1035
- propagateApiKey: true
1036
- }
1037
- },
1038
- {
1039
- policy: "transform-headers",
1040
- name: "Add HTTP headers",
1041
- enabled: true,
1042
- description: "Step description",
1043
- configuration: {
1044
- "add-headers": "...."
1045
- }
1046
- }
1047
- ],
1048
- post: [
1049
- {
1050
- policy: "url-rewriting",
1051
- name: "URL Rewriting",
1052
- enabled: true,
1053
- description: "Description of the URL Rewriting Gravitee Policy",
1054
- configuration: {
1055
- }
1056
- },
1057
- {
1058
- policy: "xml-json",
1059
- name: "XML to JSON",
1060
- enabled: true,
1061
- description: "Step description",
1062
- configuration: {
1063
- }
1064
- }
1065
- ]
1066
- },
1067
- {
1068
- name: "",
1069
- "path-operator": {
1070
- path: "/free",
1071
- operator: "STARTS_WITH"
1072
- },
1073
- enabled: true,
1074
- methods: [
1075
- "POST",
1076
- "PUT"
1077
- ],
1078
- condition: "",
1079
- pre: [
1080
- {
1081
- policy: "xml-json",
1082
- name: "XML to JSON",
1083
- enabled: true,
1084
- description: "Step description",
1085
- configuration: {
1086
- }
1087
- }
1088
- ],
1089
- post: [
1090
- {
1091
- policy: "json-to-xml",
1092
- name: "JSON to XML",
1093
- enabled: true,
1094
- description: "Step description",
1095
- configuration: {
1096
- }
1097
- }
1098
- ]
1099
- },
1100
- {
1101
- name: "",
1102
- "path-operator": {
1103
- path: "/free",
1104
- operator: "EQUALS"
1105
- },
1106
- enabled: true,
1107
- methods: [
1108
- "GET"
1109
- ],
1110
- condition: "",
1111
- pre: [
1112
- {
1113
- policy: "transform-queryparams",
1114
- name: "Transform Query Parameters",
1115
- enabled: true,
1116
- description: "Description of the Transform Query Parameters Policy",
1117
- configuration: {
1118
- }
1119
- },
1120
- {
1121
- policy: "url-rewriting",
1122
- name: "URL Rewriting",
1123
- enabled: true,
1124
- description: "Description of the URL Rewriting Gravitee Policy",
1125
- configuration: {
1126
- }
1127
- }
1128
- ],
1129
- post: [
1130
- {
1131
- policy: "json-to-xml",
1132
- name: "JSON to XML",
1133
- enabled: true,
1134
- description: "Step description",
1135
- configuration: {
1136
- }
1137
- }
1138
- ]
1139
- }
1140
- ]
1141
- },
1142
- {
1143
- id: "p-2",
1144
- name: "Premium plan",
1145
- flows: [
1146
- {
1147
- name: "",
1148
- "path-operator": {
1149
- path: "/premium",
1150
- operator: "STARTS_WITH"
1151
- },
1152
- methods: [
1153
- ],
1154
- condition: "",
1155
- enabled: true,
1156
- pre: [
1157
- {
1158
- policy: "rate-limit",
1159
- name: "Rate Limit",
1160
- enabled: true,
1161
- description: "Step description",
1162
- configuration: {
1163
- rate: {
1164
- limit: 10,
1165
- periodTime: 1,
1166
- periodTimeUnit: "MINUTES"
1167
- }
1168
- }
1169
- },
1170
- {
1171
- policy: "api-key",
1172
- name: "Check API Key",
1173
- enabled: true,
1174
- description: "Step description",
1175
- configuration: {
1176
- propagateApiKey: true
1177
- }
1178
- },
1179
- {
1180
- policy: "transform-headers",
1181
- name: "Add HTTP headers",
1182
- enabled: true,
1183
- description: "Step description",
1184
- configuration: {
1185
- "add-headers": "...."
1186
- }
1187
- }
1188
- ],
1189
- post: [
1190
- {
1191
- policy: "url-rewriting",
1192
- name: "URL Rewriting",
1193
- enabled: true,
1194
- description: "Description of the URL Rewriting Gravitee Policy",
1195
- configuration: {
1196
- }
1197
- },
1198
- {
1199
- policy: "xml-json",
1200
- name: "XML to JSON",
1201
- enabled: true,
1202
- description: "Step description",
1203
- configuration: {
1204
- }
1205
- }
1206
- ]
1207
- },
1208
- {
1209
- name: "Api 1",
1210
- enabled: true,
1211
- methods: [
1212
- "POST",
1213
- "PUT"
1214
- ],
1215
- condition: "",
1216
- pre: [
1217
- {
1218
- policy: "xml-json",
1219
- name: "XML to JSON",
1220
- enabled: true,
1221
- description: "Step description",
1222
- configuration: {
1223
- }
1224
- }
1225
- ],
1226
- post: [
1227
- {
1228
- policy: "json-to-xml",
1229
- name: "JSON to XML",
1230
- enabled: true,
1231
- description: "Step description",
1232
- configuration: {
1233
- }
1234
- }
1235
- ]
1236
- },
1237
- {
1238
- name: "Api 2",
1239
- enabled: true,
1240
- methods: [
1241
- "GET"
1242
- ],
1243
- condition: "",
1244
- pre: [
1245
- {
1246
- policy: "transform-queryparams",
1247
- name: "Transform Query Parameters",
1248
- enabled: true,
1249
- description: "Description of the Transform Query Parameters Policy",
1250
- configuration: {
1251
- }
1252
- },
1253
- {
1254
- policy: "url-rewriting",
1255
- name: "URL Rewriting",
1256
- enabled: true,
1257
- description: "Description of the URL Rewriting Gravitee Policy",
1258
- configuration: {
1259
- }
1260
- }
1261
- ],
1262
- post: [
1263
- {
1264
- policy: "json-to-xml",
1265
- name: "JSON to XML",
1266
- enabled: true,
1267
- description: "Step description",
1268
- configuration: {
1269
- }
1270
- }
1271
- ]
1272
- }
1273
- ]
1274
- }
1275
- ];
1276
- var resources = [
1277
- {
1278
- type: "cache",
1279
- enabled: true,
1280
- name: "my-cache",
1281
- configuration: {
1282
- timeToIdleSeconds: 0,
1283
- timeToLiveSeconds: 0,
1284
- maxEntriesLocalHeap: 1000
1285
- }
1286
- }
1287
- ];
1288
- var properties$1 = [
1289
- {
1290
- key: "property.1",
1291
- value: "Value 1"
1292
- },
1293
- {
1294
- key: "property.2",
1295
- value: "Value 2",
1296
- encryptable: true,
1297
- encrypted: true
1298
- },
1299
- {
1300
- key: "property.3",
1301
- value: "Value 3"
1302
- }
1303
- ];
1304
- var _apimDefinition = {
1305
- name: name,
1306
- version: version,
1307
- flow_mode: flow_mode,
1308
- flows: flows,
1309
- plans: plans,
1310
- resources: resources,
1311
- properties: properties$1
1312
- };
1313
-
1314
- var type = "object";
1315
- var id = "apim";
1316
- var properties = {
1317
- name: {
1318
- title: "Name",
1319
- description: "The name of flow. If empty, the name will be generated with the path and methods",
1320
- type: "string"
1321
- },
1322
- "path-operator": {
1323
- type: "object",
1324
- title: "Path",
1325
- properties: {
1326
- operator: {
1327
- title: "Operator path",
1328
- description: "The operator path",
1329
- type: "string",
1330
- "enum": [
1331
- "EQUALS",
1332
- "STARTS_WITH"
1333
- ],
1334
- "default": "STARTS_WITH",
1335
- "x-schema-form": {
1336
- titleMap: {
1337
- EQUALS: "Equals",
1338
- STARTS_WITH: "Starts with"
1339
- }
1340
- }
1341
- },
1342
- path: {
1343
- title: "Path",
1344
- description: "The path of flow (must start by /)",
1345
- type: "string",
1346
- pattern: "^/",
1347
- "default": "/"
1348
- }
1349
- },
1350
- required: [
1351
- "path",
1352
- "operator"
1353
- ]
1354
- },
1355
- methods: {
1356
- title: "Methods",
1357
- description: "The HTTP methods of flow (ALL if empty)",
1358
- type: "array",
1359
- items: {
1360
- type: "string",
1361
- "enum": [
1362
- "CONNECT",
1363
- "DELETE",
1364
- "GET",
1365
- "HEAD",
1366
- "OPTIONS",
1367
- "PATCH",
1368
- "POST",
1369
- "PUT",
1370
- "TRACE"
1371
- ]
1372
- }
1373
- },
1374
- condition: {
1375
- title: "Condition",
1376
- description: "The extra condition of flow",
1377
- type: "string"
1378
- }
1379
- };
1380
- var required = [
1381
- ];
1382
- var disabled = [
1383
- ];
1384
- var _apimFlow = {
1385
- type: type,
1386
- id: id,
1387
- properties: properties,
1388
- required: required,
1389
- disabled: disabled
1390
- };
1391
-
1392
- var data = [
1393
- {
1394
- id: "custom-http",
1395
- name: "Custom (HTTP)",
1396
- schema: {
1397
- type: "object",
1398
- properties: {
1399
- url: {
1400
- title: "Http service URL",
1401
- description: "http://localhost",
1402
- type: "string",
1403
- pattern: "^(http://|https://)"
1404
- },
1405
- transformation: {
1406
- title: "Transformation (JOLT Specification)",
1407
- type: "string",
1408
- "x-schema-form": {
1409
- type: "codemirror",
1410
- codemirrorOptions: {
1411
- lineWrapping: true,
1412
- lineNumbers: true,
1413
- allowDropFileTypes: true,
1414
- autoCloseTags: true,
1415
- mode: "javascript"
1416
- },
1417
- help: {
1418
- title: "Expected output",
1419
- content: "[\n {\n \"key\": 1,\n \"value\": \"https://north-europe.company.com/\"\n },\n {\n \"key\": 2,\n \"value\": \"https://north-europe.company.com/\"\n },\n {\n \"key\": 3,\n \"value\": \"https://south-asia.company.com/\"\n }\n]"
1420
- }
1421
- }
1422
- }
1423
- },
1424
- required: [
1425
- "url"
1426
- ]
1427
- },
1428
- documentation: "= Custom (HTTP)\n\n=== How to ?\n\n 1. Set `Polling frequency interval` and `Time unit`\n2. Set the `HTTP service URL`\n 3. If the HTTP service doesn't return the expected output, add a JOLT `transformation` \n\n[source, json]\n----\n[\n {\n \"key\": 1,\n \"value\": \"https://north-europe.company.com/\"\n },\n {\n \"key\": 2,\n \"value\": \"https://north-europe.company.com/\"\n },\n {\n \"key\": 3,\n \"value\": \"https://south-asia.company.com/\"\n }\n]\n----\n"
1429
- }
1430
- ];
1431
- var _apimPropertyProviders = {
1432
- data: data
1433
- };
152
+ /*
153
+ * Copyright (C) 2022 The Gravitee team (http://gravitee.io)
154
+ *
155
+ * Licensed under the Apache License, Version 2.0 (the "License");
156
+ * you may not use this file except in compliance with the License.
157
+ * You may obtain a copy of the License at
158
+ *
159
+ * http://www.apache.org/licenses/LICENSE-2.0
160
+ *
161
+ * Unless required by applicable law or agreed to in writing, software
162
+ * distributed under the License is distributed on an "AS IS" BASIS,
163
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
164
+ * See the License for the specific language governing permissions and
165
+ * limitations under the License.
166
+ */
167
+ class GioPolicyStudioFlowsMenuHarness extends ComponentHarness {
168
+ constructor() {
169
+ super(...arguments);
170
+ this.locateFlowsGroups = this.locatorForAll(DivHarness.with({ selector: '.list__flowsGroup' }));
171
+ this.locateFlowByText = (text) => this.locatorForOptional(DivHarness.with({ selector: '.list__flowsGroup__flow', text }));
172
+ this.locateGroupByText = (text) => this.locatorForOptional(DivHarness.with({ selector: '.list__flowsGroup', text }));
173
+ this.locateSelectedFlow = this.locatorForOptional(DivHarness.with({ selector: '.list__flowsGroup__flow.selected' }));
174
+ }
175
+ async getAllFlowsGroups() {
176
+ const flowsGroups = await this.locateFlowsGroups();
177
+ return parallel(() => flowsGroups.map(async (flowsGroup) => {
178
+ const flowsGroupName = await flowsGroup.getText({ childSelector: '.list__flowsGroup__header__label' });
179
+ const flowsDiv = await flowsGroup.childLocatorForAll(DivHarness.with({ selector: '.list__flowsGroup__flow' }))();
180
+ const flowsInfos = parallel(() => flowsDiv.map(async (flowDiv) => {
181
+ return {
182
+ name: await flowDiv.getText({ childSelector: '.list__flowsGroup__flow__name' }),
183
+ infos: await flowDiv.getText({ childSelector: '.list__flowsGroup__flow__infos' }),
184
+ isSelected: await flowDiv.host().then(host => host.hasClass('selected')),
185
+ };
186
+ }));
187
+ return {
188
+ name: flowsGroupName,
189
+ flows: await flowsInfos,
190
+ };
191
+ }));
192
+ }
193
+ async getSelectedFlow() {
194
+ const selectedFlow = await this.locateSelectedFlow();
195
+ return selectedFlow ? { name: await selectedFlow.getText({ childSelector: '.list__flowsGroup__flow__name' }) } : null;
196
+ }
197
+ /**
198
+ * Select a flow by it's text content
199
+ */
200
+ async selectFlow(flowText) {
201
+ const flowsGroups = await this.locateFlowByText(flowText)();
202
+ if (flowsGroups) {
203
+ await flowsGroups.host().then(host => host.click());
204
+ }
205
+ }
206
+ async addFlow(groupName) {
207
+ const flowsGroups = await this.locateGroupByText(groupName)();
208
+ if (flowsGroups) {
209
+ await (await flowsGroups.childLocatorFor(MatButtonHarness.with({ ancestor: '.list__flowsGroup__header__addBtn' }))()).click();
210
+ }
211
+ }
212
+ }
213
+ GioPolicyStudioFlowsMenuHarness.hostSelector = 'gio-ps-flows-menu';
1434
214
 
1435
215
  /*
1436
216
  * Copyright (C) 2022 The Gravitee team (http://gravitee.io)
@@ -1447,14 +227,26 @@ var _apimPropertyProviders = {
1447
227
  * See the License for the specific language governing permissions and
1448
228
  * limitations under the License.
1449
229
  */
1450
- const apimPolicies = _apimPolicies;
1451
- const apimResourceTypes = _apimResourceTypes;
1452
- const apimDefinition = _apimDefinition;
1453
- const apimFlow = _apimFlow;
1454
- const apimPropertyProviders = _apimPropertyProviders;
230
+ class GioPolicyStudioDetailsInfoBarHarness extends ComponentHarness {
231
+ async getInfos() {
232
+ const infosDiv = await this.locatorForAll(DivHarness.with({ selector: '.info' }))();
233
+ const allKeyValue = await parallel(() => infosDiv.map(async (info) => {
234
+ const label = await info.childLocatorFor(SpanHarness.with({ selector: '.info__label' }))();
235
+ const value = await info.childLocatorForAll(SpanHarness.with({ selector: '.info__value' }))();
236
+ return { label: await label.getText(), value: await parallel(() => value.map(v => v.getText())) };
237
+ }));
238
+ return allKeyValue.reduce((acc, curr) => {
239
+ if (curr.label) {
240
+ return { ...acc, [curr.label]: curr.value };
241
+ }
242
+ return acc;
243
+ }, {});
244
+ }
245
+ }
246
+ GioPolicyStudioDetailsInfoBarHarness.hostSelector = 'gio-ps-flow-details-info-bar';
1455
247
 
1456
248
  /*
1457
- * Copyright (C) 2023 The Gravitee team (http://gravitee.io)
249
+ * Copyright (C) 2022 The Gravitee team (http://gravitee.io)
1458
250
  *
1459
251
  * Licensed under the Apache License, Version 2.0 (the "License");
1460
252
  * you may not use this file except in compliance with the License.
@@ -1468,34 +260,95 @@ const apimPropertyProviders = _apimPropertyProviders;
1468
260
  * See the License for the specific language governing permissions and
1469
261
  * limitations under the License.
1470
262
  */
1471
- class DivHarness extends ComponentHarness {
1472
- /**
1473
- * Get Harness with the given filter.
1474
- *
1475
- * @param options Options for filtering which input instances are considered a match.
1476
- * @return a `HarnessPredicate` configured with the given options.
1477
- */
1478
- static with(options = {}) {
1479
- return new HarnessPredicate(DivHarness, options).addOption('text', options.text, (harness, text) => HarnessPredicate.stringMatches(harness.getText(), text));
263
+ class GioPolicyStudioDetailsHarness extends ComponentHarness {
264
+ async isDisplayEmptyFlow() {
265
+ const hostText = await (await this.host()).text();
266
+ return hostText.includes('No flows yet');
1480
267
  }
1481
- childLocatorFor(query) {
1482
- return this.locatorFor(query);
268
+ async getFlowInfos() {
269
+ return await (await this.locatorFor(GioPolicyStudioDetailsInfoBarHarness)()).getInfos();
1483
270
  }
1484
- childLocatorForAll(query) {
1485
- return this.locatorForAll(query);
271
+ async matchText(matcher) {
272
+ const hostText = await (await this.host()).text();
273
+ return matcher.test(hostText);
274
+ }
275
+ async clickEditFlowBtn() {
276
+ const editFlowBtn = await this.locatorFor(MatButtonHarness.with({ selector: '.header__configBtn__edit' }))();
277
+ await editFlowBtn.click();
278
+ }
279
+ async clickDeleteFlowBtn() {
280
+ const deleteFlowBtn = await this.locatorFor(MatButtonHarness.with({ selector: '.header__configBtn__delete' }))();
281
+ await deleteFlowBtn.click();
282
+ }
283
+ }
284
+ GioPolicyStudioDetailsHarness.hostSelector = 'gio-ps-flow-details';
285
+
286
+ /*
287
+ * Copyright (C) 2022 The Gravitee team (http://gravitee.io)
288
+ *
289
+ * Licensed under the Apache License, Version 2.0 (the "License");
290
+ * you may not use this file except in compliance with the License.
291
+ * You may obtain a copy of the License at
292
+ *
293
+ * http://www.apache.org/licenses/LICENSE-2.0
294
+ *
295
+ * Unless required by applicable law or agreed to in writing, software
296
+ * distributed under the License is distributed on an "AS IS" BASIS,
297
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
298
+ * See the License for the specific language governing permissions and
299
+ * limitations under the License.
300
+ */
301
+ class GioPolicyStudioFlowProxyFormDialogHarness extends ComponentHarness {
302
+ constructor() {
303
+ super(...arguments);
304
+ this.getSaveBtn = this.locatorFor(MatButtonHarness.with({ selector: '.actions__saveBtn' }));
305
+ this.getCancelBtn = this.locatorFor(MatButtonHarness.with({ selector: '.actions__cancelBtn' }));
1486
306
  }
1487
- async getText(option) {
1488
- let element = await this.host();
1489
- if (option?.childSelector) {
1490
- element = await this.locatorForOptional(option.childSelector)();
307
+ async setFlowFormValues(flow) {
308
+ const nameInput = await this.locatorFor(MatInputHarness.with({ selector: '[formControlName="name"]' }))();
309
+ const pathOperatorInput = await this.locatorFor(MatSelectHarness.with({ selector: '[formControlName="pathOperator"]' }))();
310
+ const pathInput = await this.locatorFor(MatInputHarness.with({ selector: '[formControlName="path"]' }))();
311
+ const methodsInput = await this.locatorFor(GioFormTagsInputHarness.with({ selector: '[formControlName="methods"]' }))();
312
+ const conditionInput = await this.locatorFor(MatInputHarness.with({ selector: '[formControlName="condition"]' }))();
313
+ if (flow.name) {
314
+ await nameInput.setValue(flow.name);
315
+ }
316
+ if (flow.pathOperator) {
317
+ await pathOperatorInput.open();
318
+ // Unselect all options before selecting the new one
319
+ for (const option of await pathOperatorInput.getOptions()) {
320
+ if (await option.isSelected()) {
321
+ await option.click();
322
+ }
323
+ }
324
+ await pathOperatorInput.clickOptions({ text: new RegExp(flow.pathOperator, 'i') });
325
+ }
326
+ if (flow.path) {
327
+ await pathInput.setValue(flow.path);
328
+ }
329
+ if (flow.methods) {
330
+ await methodsInput.removeTag('ALL');
331
+ for await (const method of flow.methods) {
332
+ await methodsInput.addTag(method);
333
+ }
1491
334
  }
1492
- return element ? element.text() : null;
335
+ if (flow.condition) {
336
+ await conditionInput.setValue(flow.condition);
337
+ }
338
+ }
339
+ async save() {
340
+ const button = await this.getSaveBtn();
341
+ await button.click();
342
+ }
343
+ async cancel() {
344
+ const button = await this.getCancelBtn();
345
+ await button.click();
1493
346
  }
1494
347
  }
1495
- DivHarness.hostSelector = 'div';
348
+ GioPolicyStudioFlowProxyFormDialogHarness.hostSelector = 'gio-ps-flow-proxy-form-dialog';
1496
349
 
1497
350
  /*
1498
- * Copyright (C) 2023 The Gravitee team (http://gravitee.io)
351
+ * Copyright (C) 2022 The Gravitee team (http://gravitee.io)
1499
352
  *
1500
353
  * Licensed under the Apache License, Version 2.0 (the "License");
1501
354
  * you may not use this file except in compliance with the License.
@@ -1509,6 +362,73 @@ DivHarness.hostSelector = 'div';
1509
362
  * See the License for the specific language governing permissions and
1510
363
  * limitations under the License.
1511
364
  */
365
+ class GioPolicyStudioFlowMessageFormDialogHarness extends ComponentHarness {
366
+ constructor() {
367
+ super(...arguments);
368
+ this.getSaveBtn = this.locatorFor(MatButtonHarness.with({ selector: '.actions__saveBtn' }));
369
+ this.getCancelBtn = this.locatorFor(MatButtonHarness.with({ selector: '.actions__cancelBtn' }));
370
+ }
371
+ async setFlowFormValues(flow) {
372
+ const nameInput = await this.locatorFor(MatInputHarness.with({ selector: '[formControlName="name"]' }))();
373
+ const channelOperatorInput = await this.locatorFor(MatSelectHarness.with({ selector: '[formControlName="channelOperator"]' }))();
374
+ const channelInput = await this.locatorFor(MatInputHarness.with({ selector: '[formControlName="channel"]' }))();
375
+ const operationsInput = await this.locatorFor(MatSelectHarness.with({ selector: '[formControlName="operations"]' }))();
376
+ const entrypointsInput = await this.locatorFor(MatSelectHarness.with({ selector: '[formControlName="entrypoints"]' }))();
377
+ const conditionInput = await this.locatorFor(MatInputHarness.with({ selector: '[formControlName="condition"]' }))();
378
+ if (flow.name) {
379
+ await nameInput.setValue(flow.name);
380
+ }
381
+ if (flow.channelOperator) {
382
+ await channelOperatorInput.open();
383
+ // Unselect all options before selecting the new one
384
+ for (const option of await entrypointsInput.getOptions()) {
385
+ if (await option.isSelected()) {
386
+ await option.click();
387
+ }
388
+ }
389
+ await channelOperatorInput.clickOptions({ text: new RegExp(flow.channelOperator, 'i') });
390
+ }
391
+ if (flow.channel) {
392
+ await channelInput.setValue(flow.channel);
393
+ }
394
+ if (flow.operations) {
395
+ await parallel(() => (flow.operations ?? []).map(async (operation) => {
396
+ await operationsInput.open();
397
+ // Unselect all options before selecting the new one
398
+ for (const option of await operationsInput.getOptions()) {
399
+ if (await option.isSelected()) {
400
+ await option.click();
401
+ }
402
+ }
403
+ await operationsInput.clickOptions({ text: new RegExp(operation, 'i') });
404
+ }));
405
+ }
406
+ if (flow.entrypoints) {
407
+ await entrypointsInput.open();
408
+ // Unselect all options before selecting the new one
409
+ for (const option of await entrypointsInput.getOptions()) {
410
+ if (await option.isSelected()) {
411
+ await option.click();
412
+ }
413
+ }
414
+ await parallel(() => (flow.entrypoints ?? []).map(async (entrypoint) => {
415
+ await entrypointsInput.clickOptions({ text: new RegExp(entrypoint, 'i') });
416
+ }));
417
+ }
418
+ if (flow.condition) {
419
+ await conditionInput.setValue(flow.condition);
420
+ }
421
+ }
422
+ async save() {
423
+ const button = await this.getSaveBtn();
424
+ await button.click();
425
+ }
426
+ async cancel() {
427
+ const button = await this.getCancelBtn();
428
+ await button.click();
429
+ }
430
+ }
431
+ GioPolicyStudioFlowMessageFormDialogHarness.hostSelector = 'gio-ps-flow-message-form-dialog';
1512
432
 
1513
433
  /*
1514
434
  * Copyright (C) 2022 The Gravitee team (http://gravitee.io)
@@ -1525,6 +445,89 @@ DivHarness.hostSelector = 'div';
1525
445
  * See the License for the specific language governing permissions and
1526
446
  * limitations under the License.
1527
447
  */
448
+ class GioPolicyStudioHarness extends ComponentHarness {
449
+ constructor() {
450
+ super(...arguments);
451
+ this.menuHarness = this.locatorFor(GioPolicyStudioFlowsMenuHarness);
452
+ this.detailsHarness = this.locatorFor(GioPolicyStudioDetailsHarness);
453
+ }
454
+ /**
455
+ * Add a flow to a plan or to "Common flows"
456
+ *
457
+ * @param groupName Plan name where to add the flow. You also can define "Common flows" to add a flow to this group.
458
+ * @param flow Flow to add
459
+ */
460
+ async addFlow(groupName, flow) {
461
+ await (await this.menuHarness()).addFlow(new RegExp(groupName, 'i'));
462
+ await this.setFlowFormDialog(flow);
463
+ }
464
+ /**
465
+ * Edit a flow configuration
466
+ *
467
+ * @param flowName Flow name to edit
468
+ * @param flow
469
+ */
470
+ async editFlowConfig(flowName, flow) {
471
+ (await this.menuHarness()).selectFlow(new RegExp(flowName, 'i'));
472
+ await (await this.detailsHarness()).clickEditFlowBtn();
473
+ await this.setFlowFormDialog(flow);
474
+ }
475
+ async deleteFlow(flowName) {
476
+ (await this.menuHarness()).selectFlow(new RegExp(flowName, 'i'));
477
+ await (await this.detailsHarness()).clickDeleteFlowBtn();
478
+ }
479
+ async selectFlowInMenu(flowName) {
480
+ await (await this.menuHarness()).selectFlow(new RegExp(flowName, 'i'));
481
+ }
482
+ async getFlowsMenu() {
483
+ return (await this.menuHarness()).getAllFlowsGroups();
484
+ }
485
+ async getSelectedFlowInfos() {
486
+ return await (await this.detailsHarness()).getFlowInfos();
487
+ }
488
+ async save() {
489
+ await (await this.locatorFor(MatButtonHarness.with({ text: /Save/ }))()).click();
490
+ }
491
+ async setFlowFormDialog(flow) {
492
+ const channelSelector = flow.selectors?.find(s => s.type === 'CHANNEL');
493
+ const httpSelector = flow.selectors?.find(s => s.type === 'HTTP');
494
+ const conditionSelector = flow.selectors?.find(s => s.type === 'CONDITION');
495
+ if (!!channelSelector && !!httpSelector) {
496
+ throw new Error('Channel and HTTP selectors are not be used together.');
497
+ }
498
+ if (channelSelector) {
499
+ const flowFormNewDialog = await this.documentRootLocatorFactory().locatorFor(GioPolicyStudioFlowMessageFormDialogHarness)();
500
+ const toChannelOperator = {
501
+ STARTS_WITH: 'Starts with',
502
+ EQUALS: 'Equals',
503
+ };
504
+ await flowFormNewDialog.setFlowFormValues({
505
+ name: flow.name,
506
+ channel: channelSelector?.channel,
507
+ channelOperator: toChannelOperator[channelSelector.channelOperator],
508
+ entrypoints: channelSelector?.entrypoints,
509
+ operations: channelSelector?.operations,
510
+ condition: conditionSelector?.condition,
511
+ });
512
+ await flowFormNewDialog.save();
513
+ return;
514
+ }
515
+ if (httpSelector) {
516
+ const flowFormNewDialog = await this.documentRootLocatorFactory().locatorFor(GioPolicyStudioFlowProxyFormDialogHarness)();
517
+ await flowFormNewDialog.setFlowFormValues({
518
+ name: flow.name,
519
+ path: httpSelector?.path,
520
+ pathOperator: httpSelector?.pathOperator,
521
+ methods: httpSelector?.methods,
522
+ condition: conditionSelector?.condition,
523
+ });
524
+ await flowFormNewDialog.save();
525
+ return;
526
+ }
527
+ throw new Error('No selector found for this flow. Needed to select Message or Proxy flow form dialog.');
528
+ }
529
+ }
530
+ GioPolicyStudioHarness.hostSelector = 'gio-policy-studio';
1528
531
 
1529
532
  /*
1530
533
  * Copyright (C) 2022 The Gravitee team (http://gravitee.io)
@@ -1546,5 +549,5 @@ DivHarness.hostSelector = 'div';
1546
549
  * Generated bundle index. Do not edit.
1547
550
  */
1548
551
 
1549
- export { DivHarness, apimDefinition, apimFlow, apimPolicies, apimPropertyProviders, apimResourceTypes, fakeChannelFlow, fakeHttpFlow, fakePlan };
552
+ export { GioPolicyStudioHarness, fakeChannelFlow, fakeHttpFlow, fakePlan };
1550
553
  //# sourceMappingURL=gravitee-ui-policy-studio-angular-testing.mjs.map