@jupiterone/integration-sdk-cli 12.7.1 → 12.8.3

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 (174) hide show
  1. package/dist/src/bocchi/actions/steps.d.ts +4 -0
  2. package/dist/src/bocchi/actions/steps.js +20 -0
  3. package/dist/src/bocchi/actions/steps.js.map +1 -0
  4. package/dist/src/bocchi/bocchi.d.ts +1 -0
  5. package/dist/src/bocchi/bocchi.js +260 -0
  6. package/dist/src/bocchi/bocchi.js.map +1 -0
  7. package/dist/src/bocchi/templates/partials/directRelationships.hbs +26 -0
  8. package/dist/src/bocchi/templates/partials/mappedRelationships.hbs +36 -0
  9. package/dist/src/bocchi/templates/partials/stepMap.hbs +47 -0
  10. package/dist/src/bocchi/templates/steps/child-singleton.ts.hbs +47 -0
  11. package/dist/src/bocchi/templates/steps/fetch-child-entities.ts.hbs +58 -0
  12. package/dist/src/bocchi/templates/steps/fetch-entities.ts.hbs +47 -0
  13. package/dist/src/bocchi/templates/steps/index.test.ts.hbs +41 -0
  14. package/dist/src/bocchi/templates/steps/singleton.ts.hbs +45 -0
  15. package/dist/src/bocchi/templates/steps/spec.ts.hbs +73 -0
  16. package/dist/src/bocchi/templates/top-level/.env.example.hbs +3 -0
  17. package/dist/src/bocchi/templates/top-level/.eslintignore.hbs +1 -0
  18. package/dist/src/bocchi/templates/top-level/.eslintrc.hbs +6 -0
  19. package/dist/src/bocchi/templates/top-level/.github/workflows/build.yml.hbs +29 -0
  20. package/dist/src/bocchi/templates/top-level/.github/workflows/questions.yml.hbs +40 -0
  21. package/dist/src/bocchi/templates/top-level/.gitignore.hbs +8 -0
  22. package/dist/src/bocchi/templates/top-level/.node-version.hbs +1 -0
  23. package/dist/src/bocchi/templates/top-level/.prettierignore.hbs +6 -0
  24. package/dist/src/bocchi/templates/top-level/CHANGELOG.md.hbs +9 -0
  25. package/dist/src/bocchi/templates/top-level/CODEOWNERS.hbs +3 -0
  26. package/dist/src/bocchi/templates/top-level/Dockerfile.hbs +25 -0
  27. package/dist/src/bocchi/templates/top-level/LICENSE.hbs +373 -0
  28. package/dist/src/bocchi/templates/top-level/README.md.hbs +114 -0
  29. package/dist/src/bocchi/templates/top-level/docs/development.md.hbs +28 -0
  30. package/dist/src/bocchi/templates/top-level/docs/jupiterone.md.hbs +1 -0
  31. package/dist/src/bocchi/templates/top-level/docs/spec/index.ts.hbs +14 -0
  32. package/dist/src/bocchi/templates/top-level/husky.config.js.hbs +1 -0
  33. package/dist/src/bocchi/templates/top-level/jest.config.js.hbs +1 -0
  34. package/dist/src/bocchi/templates/top-level/jupiterone/questions/questions.yaml.hbs +16 -0
  35. package/dist/src/bocchi/templates/top-level/lint-staged.config.js.hbs +1 -0
  36. package/dist/src/bocchi/templates/top-level/package.json.hbs +49 -0
  37. package/dist/src/bocchi/templates/top-level/prettier.config.js.hbs +1 -0
  38. package/dist/src/bocchi/templates/top-level/src/client.ts.hbs +116 -0
  39. package/dist/src/bocchi/templates/top-level/src/config.ts.hbs +41 -0
  40. package/dist/src/bocchi/templates/top-level/src/index.test.ts.hbs +6 -0
  41. package/dist/src/bocchi/templates/top-level/src/index.ts.hbs +14 -0
  42. package/dist/src/bocchi/templates/top-level/src/steps/constants.ts.hbs +60 -0
  43. package/dist/src/bocchi/templates/top-level/src/steps/converters.ts.hbs +37 -0
  44. package/dist/src/bocchi/templates/top-level/src/steps/index.ts.hbs +13 -0
  45. package/dist/src/bocchi/templates/top-level/src/steps/types.ts.hbs +6 -0
  46. package/dist/src/bocchi/templates/top-level/test/README.md.hbs +5 -0
  47. package/dist/src/bocchi/templates/top-level/test/config.ts.hbs +30 -0
  48. package/dist/src/bocchi/templates/top-level/test/recording.ts.hbs +74 -0
  49. package/dist/src/bocchi/templates/top-level/tsconfig.dist.json.hbs +13 -0
  50. package/dist/src/bocchi/templates/top-level/tsconfig.json.hbs +7 -0
  51. package/dist/src/bocchi/utils/types.d.ts +98 -0
  52. package/dist/src/bocchi/utils/types.js +10 -0
  53. package/dist/src/bocchi/utils/types.js.map +1 -0
  54. package/dist/src/commands/bocchi.d.ts +1 -0
  55. package/dist/src/commands/bocchi.js +29 -0
  56. package/dist/src/commands/bocchi.js.map +1 -0
  57. package/dist/src/commands/collect.js.map +1 -1
  58. package/dist/src/commands/diff.js.map +1 -1
  59. package/dist/src/commands/document.js.map +1 -1
  60. package/dist/src/commands/generate-ingestion-sources-config.js.map +1 -1
  61. package/dist/src/commands/generate-integration-graph-schema.d.ts +2 -1
  62. package/dist/src/commands/generate-integration-graph-schema.js +1 -0
  63. package/dist/src/commands/generate-integration-graph-schema.js.map +1 -1
  64. package/dist/src/commands/generate.js +1 -1
  65. package/dist/src/commands/generate.js.map +1 -1
  66. package/dist/src/commands/index.d.ts +1 -0
  67. package/dist/src/commands/index.js +1 -0
  68. package/dist/src/commands/index.js.map +1 -1
  69. package/dist/src/commands/options.js.map +1 -1
  70. package/dist/src/commands/run.js.map +1 -1
  71. package/dist/src/commands/validate-question-file.js.map +1 -1
  72. package/dist/src/commands/visualize-types.js.map +1 -1
  73. package/dist/src/config.js.map +1 -1
  74. package/dist/src/generator/actions.d.ts +5 -1
  75. package/dist/src/generator/actions.js +19 -1
  76. package/dist/src/generator/actions.js.map +1 -1
  77. package/dist/src/generator/entitiesFlow.js.map +1 -1
  78. package/dist/src/generator/newIntegration.js +17 -3
  79. package/dist/src/generator/newIntegration.js.map +1 -1
  80. package/dist/src/generator/relationshipsFlow.js.map +1 -1
  81. package/dist/src/generator/stepsFlow.js.map +1 -1
  82. package/dist/src/generator/template/.github/workflows/build.yml.hbs +18 -0
  83. package/dist/src/generator/template/.github/workflows/questions.yml.hbs +12 -1
  84. package/dist/src/generator/template/Dockerfile.hbs +16 -0
  85. package/dist/src/generator/template/README.md.hbs +19 -5
  86. package/dist/src/generator/template/package.json.hbs +8 -2
  87. package/dist/src/generator/util.js.map +1 -1
  88. package/dist/src/index.js +2 -1
  89. package/dist/src/index.js.map +1 -1
  90. package/dist/src/log.js.map +1 -1
  91. package/dist/src/neo4j/neo4jGraphStore.js.map +1 -1
  92. package/dist/src/neo4j/neo4jUtilities.js.map +1 -1
  93. package/dist/src/neo4j/uploadToNeo4j.js.map +1 -1
  94. package/dist/src/neo4j/wipeNeo4j.js.map +1 -1
  95. package/dist/src/questions/managedQuestionFileValidator.js.map +1 -1
  96. package/dist/src/services/queryLanguage.js.map +1 -1
  97. package/dist/src/troubleshoot/utils.js.map +1 -1
  98. package/dist/src/utils/generateVisHTML.js.map +1 -1
  99. package/dist/src/utils/getSortedJupiterOneTypes.js.map +1 -1
  100. package/dist/src/visualization/createMappedRelationshipNodesAndEdges.js.map +1 -1
  101. package/dist/src/visualization/generateDependencyVisualization.js.map +1 -1
  102. package/dist/src/visualization/generateVisualization.js.map +1 -1
  103. package/dist/src/visualization/retrieveIntegrationData.js.map +1 -1
  104. package/dist/src/visualization/utils.js.map +1 -1
  105. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  106. package/package.json +11 -9
  107. package/src/bocchi/README.md +95 -0
  108. package/src/bocchi/actions/steps.ts +17 -0
  109. package/src/bocchi/bocchi.ts +311 -0
  110. package/src/bocchi/docs/template/README.md +140 -0
  111. package/src/bocchi/docs/template/authentication.md +100 -0
  112. package/src/bocchi/docs/template/examples/example.json +127 -0
  113. package/src/bocchi/docs/template/examples/signalSciences.json +128 -0
  114. package/src/bocchi/docs/template/steps.md +656 -0
  115. package/src/bocchi/templates/partials/directRelationships.hbs +26 -0
  116. package/src/bocchi/templates/partials/mappedRelationships.hbs +36 -0
  117. package/src/bocchi/templates/partials/stepMap.hbs +47 -0
  118. package/src/bocchi/templates/steps/child-singleton.ts.hbs +47 -0
  119. package/src/bocchi/templates/steps/fetch-child-entities.ts.hbs +58 -0
  120. package/src/bocchi/templates/steps/fetch-entities.ts.hbs +47 -0
  121. package/src/bocchi/templates/steps/index.test.ts.hbs +41 -0
  122. package/src/bocchi/templates/steps/singleton.ts.hbs +45 -0
  123. package/src/bocchi/templates/steps/spec.ts.hbs +73 -0
  124. package/src/bocchi/templates/top-level/.env.example.hbs +3 -0
  125. package/src/bocchi/templates/top-level/.eslintignore.hbs +1 -0
  126. package/src/bocchi/templates/top-level/.eslintrc.hbs +6 -0
  127. package/src/bocchi/templates/top-level/.github/workflows/build.yml.hbs +29 -0
  128. package/src/bocchi/templates/top-level/.github/workflows/questions.yml.hbs +40 -0
  129. package/src/bocchi/templates/top-level/.gitignore.hbs +8 -0
  130. package/src/bocchi/templates/top-level/.node-version.hbs +1 -0
  131. package/src/bocchi/templates/top-level/.prettierignore.hbs +6 -0
  132. package/src/bocchi/templates/top-level/CHANGELOG.md.hbs +9 -0
  133. package/src/bocchi/templates/top-level/CODEOWNERS.hbs +3 -0
  134. package/src/bocchi/templates/top-level/Dockerfile.hbs +25 -0
  135. package/src/bocchi/templates/top-level/LICENSE.hbs +373 -0
  136. package/src/bocchi/templates/top-level/README.md.hbs +114 -0
  137. package/src/bocchi/templates/top-level/docs/development.md.hbs +28 -0
  138. package/src/bocchi/templates/top-level/docs/jupiterone.md.hbs +1 -0
  139. package/src/bocchi/templates/top-level/docs/spec/index.ts.hbs +14 -0
  140. package/src/bocchi/templates/top-level/husky.config.js.hbs +1 -0
  141. package/src/bocchi/templates/top-level/jest.config.js.hbs +1 -0
  142. package/src/bocchi/templates/top-level/jupiterone/questions/questions.yaml.hbs +16 -0
  143. package/src/bocchi/templates/top-level/lint-staged.config.js.hbs +1 -0
  144. package/src/bocchi/templates/top-level/package.json.hbs +49 -0
  145. package/src/bocchi/templates/top-level/prettier.config.js.hbs +1 -0
  146. package/src/bocchi/templates/top-level/src/client.ts.hbs +116 -0
  147. package/src/bocchi/templates/top-level/src/config.ts.hbs +41 -0
  148. package/src/bocchi/templates/top-level/src/index.test.ts.hbs +6 -0
  149. package/src/bocchi/templates/top-level/src/index.ts.hbs +14 -0
  150. package/src/bocchi/templates/top-level/src/steps/constants.ts.hbs +60 -0
  151. package/src/bocchi/templates/top-level/src/steps/converters.ts.hbs +37 -0
  152. package/src/bocchi/templates/top-level/src/steps/index.ts.hbs +13 -0
  153. package/src/bocchi/templates/top-level/src/steps/types.ts.hbs +6 -0
  154. package/src/bocchi/templates/top-level/test/README.md.hbs +5 -0
  155. package/src/bocchi/templates/top-level/test/config.ts.hbs +30 -0
  156. package/src/bocchi/templates/top-level/test/recording.ts.hbs +74 -0
  157. package/src/bocchi/templates/top-level/tsconfig.dist.json.hbs +13 -0
  158. package/src/bocchi/templates/top-level/tsconfig.json.hbs +7 -0
  159. package/src/bocchi/utils/types.ts +106 -0
  160. package/src/commands/bocchi.ts +28 -0
  161. package/src/commands/generate-ingestion-sources-config.ts +4 -5
  162. package/src/commands/generate-integration-graph-schema.test.ts +56 -0
  163. package/src/commands/generate-integration-graph-schema.ts +3 -0
  164. package/src/commands/generate.ts +1 -1
  165. package/src/commands/index.ts +1 -0
  166. package/src/generator/actions.ts +28 -1
  167. package/src/generator/newIntegration.ts +28 -4
  168. package/src/generator/template/.github/workflows/build.yml.hbs +18 -0
  169. package/src/generator/template/.github/workflows/questions.yml.hbs +12 -1
  170. package/src/generator/template/Dockerfile.hbs +16 -0
  171. package/src/generator/template/README.md.hbs +19 -5
  172. package/src/generator/template/package.json.hbs +8 -2
  173. package/src/index.ts +3 -1
  174. package/src/neo4j/README.md +2 -1
@@ -0,0 +1,100 @@
1
+ # Authentication
2
+
3
+ Defines the authentication method to use for the API. The template currently
4
+ supports two options for Authentication.
5
+
6
+ ## Option 1 - Endpoint:
7
+
8
+ Use this method if you need to hit an endpoint to get authentication headers.
9
+
10
+ | | |
11
+ | ------------------- | ------------------- |
12
+ | Property | `authentication` |
13
+ | Type | `Object` |
14
+ | Required | `true` |
15
+ | Available templates | `config` `response` |
16
+
17
+ ```ts
18
+ {
19
+ strategy: 'endpoint',
20
+ params: {
21
+ path: String,
22
+ method: 'GET' | 'POST',
23
+ body?: Object,
24
+ headers?: Object
25
+ }
26
+ authHeaders: Object
27
+ }
28
+ ```
29
+
30
+ Note: `authHeaders` represents the authentication headers that will be present
31
+ on all API requests the client makes, aside from the initial
32
+ `verifyAuthentication` request. The `authHeaders` object should contain at least
33
+ the `Authorization` property, which is typically a bearer token or API key.
34
+
35
+ Example:
36
+
37
+ ```json
38
+ {
39
+ "strategy": "endpoint",
40
+ "params": {
41
+ "path": "/auth",
42
+ "method": "POST",
43
+ "headers": {
44
+ "user-agent": "JupiterOne",
45
+ "tenant": "%config.tenant%"
46
+ },
47
+ "body": {
48
+ "exampleBody": "%config.exampleConfigValue%"
49
+ }
50
+ },
51
+ "authHeaders": {
52
+ "user-agent": "JupiterOne",
53
+ "tenant": "%config.tenant%",
54
+ "Authorization": "bearer %response.auth.token%"
55
+ }
56
+ }
57
+ ```
58
+
59
+ Using this authentication schema will result in a verifyAuthentication()
60
+ function in the generated client that is ready-to-use; that is, the function
61
+ requires no manual updates, and when your integration runs, it will hit the
62
+ provided endpoint to verify authentication.
63
+
64
+ ## Option 2 - Config Fields:
65
+
66
+ Use this method if the authentication headers will be provided in the instance
67
+ config.
68
+
69
+ | | |
70
+ | ------------------- | ---------------- |
71
+ | Property | `authentication` |
72
+ | Type | `Object` |
73
+ | Required | `true` |
74
+ | Available templates | `config` |
75
+
76
+ ```ts
77
+ {
78
+ strategy: 'configField',
79
+ authHeaders: Object
80
+ }
81
+ ```
82
+
83
+ Example:
84
+
85
+ ```json
86
+ {
87
+ "strategy": "configField",
88
+ "authHeaders": {
89
+ "x-api-user": "%config.email%",
90
+ "x-api-token": "%config.token%"
91
+ }
92
+ }
93
+ ```
94
+
95
+ Using this authentication schema will result in an incomplete
96
+ verifyAuthentication() function in the generated client. This is because the
97
+ graph-project generator does not know what endpoint to use for verifying
98
+ authentication. <b>You will need to manually update the generated
99
+ verifyAuthentication() function and choose what endpoint should be used for
100
+ verifying authentication.</b>
@@ -0,0 +1,127 @@
1
+ {
2
+ "instanceConfigFields": {
3
+ "email": {
4
+ "type": "string"
5
+ },
6
+ "token": {
7
+ "type": "string",
8
+ "mask": true
9
+ },
10
+ "tenant": {
11
+ "type": "string"
12
+ }
13
+ },
14
+ "authentication": {
15
+ "strategy": "endpoint",
16
+ "params": {
17
+ "path": "/auth",
18
+ "method": "POST",
19
+ "headers": {
20
+ "user-agent": "JupiterOne",
21
+ "tenant": "%config.tenant%"
22
+ },
23
+ "body": {
24
+ "exampleBody": "%config.exampleConfigValue%"
25
+ }
26
+ },
27
+ "authHeaders": {
28
+ "user-agent": "JupiterOne",
29
+ "tenant": "%config.tenant%",
30
+ "Authorization": "bearer %response.auth.token%"
31
+ }
32
+ },
33
+ "baseUrl": "https://example.com",
34
+ "steps": [
35
+ {
36
+ "id": "fetch-organizations",
37
+ "name": "Fetch Organizations",
38
+ "entity": {
39
+ "name": "Organization",
40
+ "_type": "example_organization",
41
+ "_class": ["Organization"],
42
+ "_keyPath": "name",
43
+ "staticFields": {
44
+ "a": false,
45
+ "b": true
46
+ },
47
+ "fieldMappings": {
48
+ "name": "title",
49
+ "displayName": "title",
50
+ "description": "advisory.description",
51
+ "ruleId": "advisory.ruleId",
52
+ "severity": "advisory.severity",
53
+ "ecosystem": "advisory.ecosystem",
54
+ "urls": "advisory.references.urls",
55
+ "exposureType": "exposureType",
56
+ "repositoryId": "repositoryId",
57
+ "subdirectory": "subdirectory",
58
+ "createdOn": "openedAt"
59
+ }
60
+ },
61
+ "request": {
62
+ "urlTemplate": "/organizations"
63
+ },
64
+ "response": {
65
+ "dataPath": "data",
66
+ "responseType": "LIST"
67
+ },
68
+ "directRelationships": [
69
+ {
70
+ "targetKey": "directory",
71
+ "targetType": "example_directory",
72
+ "_class": "HAS",
73
+ "direction": "FORWARD"
74
+ }
75
+ ]
76
+ },
77
+ {
78
+ "id": "fetch-directory",
79
+ "name": "Fetch Directory",
80
+ "entity": {
81
+ "name": "Directory",
82
+ "_type": "example_directory",
83
+ "_class": ["Directory"],
84
+ "_keyPath": "id"
85
+ },
86
+ "fieldMappings": {
87
+ "name": "title",
88
+ "orgId": "organizationId"
89
+ },
90
+ "parentAssociation": {
91
+ "parentEntityType": "example_organization",
92
+ "relationshipClass": "HAS"
93
+ },
94
+ "request": {
95
+ "urlTemplate": "/organizations/%parent._key%/directory"
96
+ },
97
+ "response": {
98
+ "dataPath": "data",
99
+ "responseType": "SINGLETON"
100
+ },
101
+ "dependsOn": ["fetch-organizations"]
102
+ },
103
+ {
104
+ "id": "fetch-users",
105
+ "name": "Fetch Users",
106
+ "entity": {
107
+ "name": "User",
108
+ "_type": "example_user",
109
+ "_class": ["User"],
110
+ "_keyPath": "email"
111
+ },
112
+ "parentAssociation": {
113
+ "parentEntityType": "example_directory",
114
+ "relationshipClass": "HAS"
115
+ },
116
+ "request": {
117
+ "urlTemplate": "/organizations/%parent._key%/directory/%parent.orgId%/users?nextPage=%nextToken%"
118
+ },
119
+ "response": {
120
+ "dataPath": "data",
121
+ "nextTokenPath": "next",
122
+ "responseType": "LIST"
123
+ },
124
+ "dependsOn": ["fetch-directory"]
125
+ }
126
+ ]
127
+ }
@@ -0,0 +1,128 @@
1
+ {
2
+ "instanceConfigFields": {
3
+ "email": {
4
+ "type": "string"
5
+ },
6
+ "token": {
7
+ "type": "string",
8
+ "mask": true
9
+ }
10
+ },
11
+ "authentication": {
12
+ "strategy": "configField",
13
+ "authHeaders": {
14
+ "x-api-user": "%config.email%",
15
+ "x-api-token": "%config.token%"
16
+ }
17
+ },
18
+ "baseUrl": "https://dashboard.signalsciences.net/api/v0",
19
+ "steps": [
20
+ {
21
+ "id": "fetch-organizations",
22
+ "name": "Fetch Organizations",
23
+ "entity": {
24
+ "name": "Organization",
25
+ "_type": "signal_sciences_organization",
26
+ "_class": ["Organization"],
27
+ "_keyPath": "name",
28
+ "fieldMappings": {
29
+ "name": "name",
30
+ "displayName": "displayName",
31
+ "smallIconURI": "smallIconURI",
32
+ "createdAt": "created",
33
+ "siteLimit": "siteLimit",
34
+ "authType": "authType",
35
+ "sessionMaxAgeDashboard": "sessionMaxAgeDashboard"
36
+ },
37
+ "staticFields": {
38
+ "external": false
39
+ }
40
+ },
41
+ "request": {
42
+ "urlTemplate": "/corps"
43
+ },
44
+ "response": {
45
+ "dataPath": "data",
46
+ "responseType": "LIST"
47
+ }
48
+ },
49
+ {
50
+ "id": "fetch-users",
51
+ "name": "Fetch Users",
52
+ "entity": {
53
+ "name": "User",
54
+ "_type": "signal_sciences_user",
55
+ "_class": ["User"],
56
+ "_keyPath": "email",
57
+ "fieldMappings": {
58
+ "name": "name",
59
+ "displayName": "name",
60
+ "email": "email",
61
+ "role": "role",
62
+ "status": "status",
63
+ "mfaEnabled": "mfaEnabled",
64
+ "authStatus": "authStatus",
65
+ "createdAt": "created"
66
+ }
67
+ },
68
+ "parentAssociation": {
69
+ "parentEntityType": "signal_sciences_organization",
70
+ "relationshipClass": "HAS"
71
+ },
72
+ "mappedRelationships": [
73
+ {
74
+ "_class": "IS",
75
+ "direction": "REVERSE",
76
+ "mappings": [
77
+ {
78
+ "targetValue": "google_user",
79
+ "targetProperty": "_type"
80
+ },
81
+ {
82
+ "sourceProperty": "email",
83
+ "targetProperty": "email"
84
+ }
85
+ ]
86
+ }
87
+ ],
88
+ "request": {
89
+ "urlTemplate": "/corps/%parent._key%/users"
90
+ },
91
+ "response": {
92
+ "dataPath": "data",
93
+ "responseType": "LIST"
94
+ },
95
+ "dependsOn": ["fetch-organizations"]
96
+ },
97
+ {
98
+ "id": "fetch-cloudwaf-instances",
99
+ "name": "Fetch Cloud WAF Instances",
100
+ "entity": {
101
+ "name": "Cloud WAF Instance",
102
+ "_type": "signal_sciences_cloudwaf",
103
+ "_class": ["Firewall"],
104
+ "_keyPath": "id",
105
+ "fieldMappings": {
106
+ "id": "id",
107
+ "name": "name",
108
+ "displayName": "name",
109
+ "description": "description",
110
+ "region": "region",
111
+ "tlsMinVersion": "tlsMinVersion"
112
+ }
113
+ },
114
+ "parentAssociation": {
115
+ "parentEntityType": "signal_sciences_organization",
116
+ "relationshipClass": "HAS"
117
+ },
118
+ "request": {
119
+ "urlTemplate": "/corps/%parent._key%/cloudwafInstances"
120
+ },
121
+ "response": {
122
+ "dataPath": "data",
123
+ "responseType": "LIST"
124
+ },
125
+ "dependsOn": ["fetch-organizations"]
126
+ }
127
+ ]
128
+ }