@aifabrix/builder 2.55.2 → 2.57.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 (88) hide show
  1. package/lib/agent-kit/session-report.js +76 -0
  2. package/lib/agent-kit/start.js +124 -57
  3. package/lib/agent-kit/tmux-sessions.js +163 -0
  4. package/lib/api/environments.api.js +38 -0
  5. package/lib/api/marketplace-bootstrap.api.js +31 -0
  6. package/lib/api/pipeline.api.js +32 -3
  7. package/lib/app/deploy.js +6 -5
  8. package/lib/cli/setup-app.js +7 -6
  9. package/lib/cli/setup-environment.js +76 -19
  10. package/lib/cli/setup-external-system-help.js +15 -3
  11. package/lib/cli/setup-external-system.js +21 -3
  12. package/lib/commands/agent-kit-help.js +32 -15
  13. package/lib/commands/agent-kit.js +90 -8
  14. package/lib/commands/repair-datasource-auto-rbac.js +4 -9
  15. package/lib/commands/upload-openapi-sync-followup.js +59 -0
  16. package/lib/commands/upload-qualification-client.js +131 -0
  17. package/lib/commands/upload-qualification-followups.js +104 -0
  18. package/lib/commands/upload-qualification-poll.js +143 -0
  19. package/lib/commands/upload.js +37 -156
  20. package/lib/deployment/deploy-poll-ui.js +14 -10
  21. package/lib/deployment/deployer-status.js +4 -4
  22. package/lib/deployment/installation/azure-infra-stage.js +160 -0
  23. package/lib/deployment/installation/azure-preflight.js +102 -0
  24. package/lib/deployment/installation/azure-readiness.js +71 -0
  25. package/lib/deployment/installation/docker-register.js +112 -0
  26. package/lib/deployment/installation/environment-auth.js +76 -0
  27. package/lib/deployment/installation/environment-manifest.js +165 -0
  28. package/lib/deployment/installation/environment-stage.js +191 -0
  29. package/lib/deployment/installation/index.js +39 -0
  30. package/lib/deployment/installation/infra-catalog.js +165 -0
  31. package/lib/deployment/installation/infra-manifest.js +161 -0
  32. package/lib/deployment/installation/infra-projection.js +86 -0
  33. package/lib/deployment/installation/public-ip.js +65 -0
  34. package/lib/deployment/installation/stage-input.js +169 -0
  35. package/lib/deployment/installation/stage-output.js +53 -0
  36. package/lib/deployment/installation/workspace-env.js +76 -0
  37. package/lib/deployment/installation/workspace-files.js +178 -0
  38. package/lib/deployment/installation/workspace-schema.js +40 -0
  39. package/lib/deployment/installation/workspace-secrets.js +66 -0
  40. package/lib/deployment/installation/workspace.js +128 -0
  41. package/lib/deployment/marketplace-environment.js +305 -0
  42. package/lib/external-system/deploy.js +46 -51
  43. package/lib/generator/builders.js +4 -0
  44. package/lib/generator/helpers.js +55 -99
  45. package/lib/generator/index.js +0 -4
  46. package/lib/generator/split-variables.js +11 -5
  47. package/lib/internal/fs-real-sync.js +29 -0
  48. package/lib/programmatic/builder-api-request.js +8 -4
  49. package/lib/programmatic/capability-registry.js +2 -0
  50. package/lib/programmatic/get-deploy-status.js +45 -0
  51. package/lib/programmatic/get-upload-status.js +45 -0
  52. package/lib/programmatic/http-accepted-response.js +31 -0
  53. package/lib/programmatic/openapi-descriptions.js +14 -4
  54. package/lib/programmatic/request-timeout.js +21 -15
  55. package/lib/programmatic/route-handler-map.js +6 -0
  56. package/lib/programmatic/run-deploy.js +7 -3
  57. package/lib/programmatic/run-upload.js +11 -7
  58. package/lib/role-assistant/package-validate.js +4 -0
  59. package/lib/role-assistant/test-runner-clarification-resubmit.js +149 -0
  60. package/lib/role-assistant/test-runner.js +14 -17
  61. package/lib/schema/application-schema.json +20 -2
  62. package/lib/schema/infra-parameter.schema.json +7 -0
  63. package/lib/schema/infra.parameter.yaml +32 -43
  64. package/lib/schema/infrastructure-schema.json +1480 -399
  65. package/lib/schema/installation-environment.schema.json +601 -0
  66. package/lib/utils/cli-utils.js +3 -2
  67. package/lib/utils/qualification-poll-ui.js +136 -0
  68. package/lib/utils/variable-transformer.js +3 -0
  69. package/lib/validation/required-variables.js +41 -0
  70. package/lib/validation/validator.js +8 -5
  71. package/package.json +7 -2
  72. package/templates/README.md +4 -0
  73. package/templates/agent-kit/instructions/AGENTKIT.md +6 -6
  74. package/templates/agent-kit/skills/shared/hosts.md +10 -10
  75. package/templates/applications/builder-api/env.template +4 -0
  76. package/templates/applications/dataplane/application.yaml +1 -1
  77. package/templates/applications/dataplane/env.template +1 -1
  78. package/templates/applications/keycloak/Dockerfile +12 -5
  79. package/templates/applications/keycloak/application.yaml +2 -2
  80. package/templates/applications/keycloak/cimd-lenient-parse/AbstractClientIdMetadataDocumentExecutor.java +3 -3
  81. package/templates/applications/keycloak/cimd-lenient-parse/SOURCE.md +6 -6
  82. package/templates/applications/keycloak/env.template +13 -1
  83. package/templates/applications/miso-controller/application.yaml +3 -2
  84. package/templates/applications/miso-controller/env.template +28 -22
  85. package/templates/marketplace/createUiDefinition.json +77 -0
  86. package/templates/marketplace/install.parameters.example.json +9 -0
  87. package/templates/marketplace/main.json +4087 -0
  88. package/lib/generator/deploy-manifest-azure-kv.js +0 -81
@@ -1,587 +1,1668 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
3
  "$id": "https://raw.githubusercontent.com/esystemsdev/aifabrix-builder/refs/heads/main/lib/schema/infrastructure-schema.json",
4
- "title": "AI Fabrix Infrastructure Configuration Schema",
5
- "description": "Infrastructure-level configuration schema for AI Fabrix deployment",
4
+ "title": "AI Fabrix Installation Infrastructure Manifest",
5
+ "description": "Committed, non-secret environment-infra.json for an installation workspace under infrastructure/<resource-group>/. Secrets appear only as valueFromEnv references.",
6
6
  "metadata": {
7
7
  "key": "infrastructure-schema",
8
- "name": "Infrastructure Configuration Schema",
9
- "description": "JSON schema for validating AI Fabrix infrastructure configuration files",
10
- "version": "1.0.0",
8
+ "name": "Installation Infrastructure Manifest Schema",
9
+ "description": "JSON schema for infrastructure/<resource-group>/environment-infra.json",
10
+ "version": "2.0.0",
11
11
  "type": "schema",
12
12
  "category": "infrastructure",
13
13
  "author": "AI Fabrix Team",
14
14
  "createdAt": "2024-01-01T00:00:00Z",
15
- "updatedAt": "2024-01-01T00:00:00Z",
15
+ "updatedAt": "2026-09-16T00:00:00Z",
16
16
  "compatibility": {
17
- "minVersion": "1.0.0",
17
+ "minVersion": "2.0.0",
18
18
  "maxVersion": "2.0.0",
19
19
  "deprecated": false
20
20
  },
21
- "tags": ["schema", "infrastructure", "validation", "configuration"],
21
+ "tags": [
22
+ "schema",
23
+ "infrastructure",
24
+ "installation",
25
+ "marketplace"
26
+ ],
22
27
  "dependencies": [],
23
28
  "changelog": [
29
+ {
30
+ "version": "2.0.0",
31
+ "date": "2026-09-16T00:00:00Z",
32
+ "breaking": true,
33
+ "changes": [
34
+ "Replaced the environment-configuration shape with the installation workspace manifest (environment-infra.json).",
35
+ "Removed smtp without replacement.",
36
+ "Covers every Marketplace template parameter and output with source/description metadata; secure parameters are valueFromEnv references.",
37
+ "Added vendor, workspace subscription/tenant, acrName, default-off allowMyIp, licenseEdition, onboardingMode, tenant activation, deployment and application variable catalog sections."
38
+ ]
39
+ },
24
40
  {
25
41
  "version": "1.0.0",
26
42
  "date": "2024-01-01T00:00:00Z",
43
+ "breaking": false,
27
44
  "changes": [
28
- "Initial infrastructure configuration schema",
29
- "Added infrastructure resource validation",
30
- "Added network configuration validation",
31
- "Added deployment configuration validation"
32
- ],
33
- "breaking": false
45
+ "Initial infrastructure configuration schema"
46
+ ]
34
47
  }
35
48
  ]
36
49
  },
37
- "type": "object",
38
- "required": [
39
- "key",
40
- "environment",
41
- "preset",
42
- "serviceName",
43
- "location",
44
- "deploymentType",
45
- "deployment",
46
- "subscriptionId",
47
- "tenantId"
48
- ],
49
- "properties": {
50
- "key": {
51
- "type": "string",
52
- "description": "Unique infrastructure identifier (cannot be changed after creation)",
53
- "pattern": "^[a-z0-9-]+$",
54
- "minLength": 3,
55
- "maxLength": 40
56
- },
57
- "environment": {
58
- "type": "string",
59
- "description": "Environment",
60
- "enum": ["miso", "dev", "tst", "pro"]
61
- },
62
- "preset": {
63
- "type": "string",
64
- "description": "Resource preset - determines service configurations and sizing",
65
- "enum": ["evaluation", "s", "m", "l", "xl"],
66
- "default": "s"
67
- },
68
- "serviceName": {
69
- "type": "string",
70
- "description": "Service name",
71
- "pattern": "^[a-z0-9-]{3,40}$"
72
- },
73
- "location": {
74
- "type": "string",
75
- "description": "Azure region"
50
+ "definitions": {
51
+ "entry": {
52
+ "type": "object",
53
+ "required": [
54
+ "value",
55
+ "source",
56
+ "description"
57
+ ],
58
+ "additionalProperties": false,
59
+ "properties": {
60
+ "value": {},
61
+ "source": {
62
+ "type": "string",
63
+ "minLength": 1
64
+ },
65
+ "description": {
66
+ "type": "string",
67
+ "minLength": 1
68
+ },
69
+ "required": {
70
+ "type": "boolean"
71
+ }
72
+ }
76
73
  },
77
- "subscriptionId": {
78
- "type": "string",
79
- "description": "Azure subscription ID",
80
- "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
74
+ "envReference": {
75
+ "type": "object",
76
+ "required": [
77
+ "valueFromEnv",
78
+ "source",
79
+ "description"
80
+ ],
81
+ "additionalProperties": false,
82
+ "properties": {
83
+ "valueFromEnv": {
84
+ "type": "string",
85
+ "pattern": "^[A-Z_][A-Z0-9_]*$"
86
+ },
87
+ "source": {
88
+ "const": "secretEnv"
89
+ },
90
+ "required": {
91
+ "type": "boolean"
92
+ },
93
+ "description": {
94
+ "type": "string",
95
+ "minLength": 1
96
+ }
97
+ }
81
98
  },
82
- "tenantId": {
83
- "type": "string",
84
- "description": "Azure tenant ID",
85
- "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
99
+ "output": {
100
+ "type": "object",
101
+ "required": [
102
+ "value",
103
+ "description"
104
+ ],
105
+ "additionalProperties": false,
106
+ "properties": {
107
+ "value": {
108
+ "type": [
109
+ "string",
110
+ "null"
111
+ ]
112
+ },
113
+ "description": {
114
+ "type": "string"
115
+ }
116
+ }
86
117
  },
87
- "networkAddressSpace": {
88
- "type": "string",
89
- "description": "Network address space",
90
- "pattern": "^(\\d{1,3}\\.){3}\\d{1,3}(\\/\\d{1,2})?$"
118
+ "variable": {
119
+ "type": "object",
120
+ "required": [
121
+ "valueFromEnv",
122
+ "requiredBy",
123
+ "source",
124
+ "description"
125
+ ],
126
+ "additionalProperties": false,
127
+ "properties": {
128
+ "valueFromEnv": {
129
+ "type": "string",
130
+ "pattern": "^[A-Z_][A-Z0-9_]*$"
131
+ },
132
+ "requiredBy": {
133
+ "type": "array",
134
+ "uniqueItems": true,
135
+ "items": {
136
+ "type": "string",
137
+ "pattern": "^[a-z0-9-]+$"
138
+ }
139
+ },
140
+ "environments": {
141
+ "type": "array",
142
+ "uniqueItems": true,
143
+ "items": {
144
+ "enum": [
145
+ "dev",
146
+ "tst",
147
+ "pro"
148
+ ]
149
+ }
150
+ },
151
+ "source": {
152
+ "type": "string"
153
+ },
154
+ "description": {
155
+ "type": "string"
156
+ },
157
+ "resolution": {
158
+ "enum": [
159
+ "resolved",
160
+ "missing"
161
+ ]
162
+ }
163
+ }
91
164
  },
92
- "customDomain": {
165
+ "generated": {
93
166
  "type": "object",
94
- "description": "Custom domain configuration",
167
+ "additionalProperties": false,
95
168
  "properties": {
96
- "enabled": {
97
- "type": "boolean"
169
+ "builderVersion": {
170
+ "type": "string"
98
171
  },
99
- "name": {
172
+ "templateContentVersion": {
173
+ "type": [
174
+ "string",
175
+ "null"
176
+ ]
177
+ },
178
+ "templateSha256": {
179
+ "type": "string",
180
+ "pattern": "^[0-9a-f]{64}$"
181
+ },
182
+ "generatedAt": {
100
183
  "type": "string",
101
- "description": "Domain name"
184
+ "format": "date-time"
185
+ },
186
+ "files": {
187
+ "type": "object",
188
+ "additionalProperties": {
189
+ "type": "string",
190
+ "pattern": "^[0-9a-f]{64}$"
191
+ }
102
192
  }
103
- },
104
- "required": ["enabled"]
193
+ }
194
+ }
195
+ },
196
+ "type": "object",
197
+ "required": [
198
+ "schemaVersion",
199
+ "vendor",
200
+ "resourceGroup",
201
+ "installId",
202
+ "subscriptionId",
203
+ "tenantId",
204
+ "variables",
205
+ "generated"
206
+ ],
207
+ "properties": {
208
+ "schemaVersion": {
209
+ "const": "2.0.0"
105
210
  },
106
- "frontDoor": {
211
+ "vendor": {
107
212
  "type": "object",
108
- "description": "Front Door configuration",
213
+ "required": [
214
+ "value",
215
+ "source",
216
+ "description"
217
+ ],
218
+ "additionalProperties": false,
109
219
  "properties": {
110
- "tier": {
220
+ "value": {
221
+ "enum": [
222
+ "AZURE",
223
+ "DOCKER"
224
+ ]
225
+ },
226
+ "source": {
111
227
  "type": "string",
112
- "enum": ["Standard", "Premium"]
228
+ "minLength": 1
229
+ },
230
+ "description": {
231
+ "type": "string",
232
+ "minLength": 1
233
+ },
234
+ "required": {
235
+ "type": "boolean"
113
236
  }
114
- },
115
- "additionalProperties": false
237
+ }
116
238
  },
117
- "networking": {
239
+ "resourceGroup": {
118
240
  "type": "object",
119
- "description": "Networking configuration",
241
+ "required": [
242
+ "value",
243
+ "source",
244
+ "description"
245
+ ],
246
+ "additionalProperties": false,
120
247
  "properties": {
121
- "enablePrivateNetworking": {
122
- "type": "boolean"
248
+ "value": {
249
+ "type": "string",
250
+ "pattern": "^[a-z][a-z0-9-]{2,39}$"
251
+ },
252
+ "source": {
253
+ "type": "string",
254
+ "minLength": 1
123
255
  },
124
- "enableAzureDns": {
256
+ "description": {
257
+ "type": "string",
258
+ "minLength": 1
259
+ },
260
+ "required": {
125
261
  "type": "boolean"
126
262
  }
127
263
  }
128
264
  },
129
- "deployment": {
265
+ "installId": {
130
266
  "type": "object",
131
- "description": "Deployment configuration",
132
- "required": ["mode"],
267
+ "required": [
268
+ "value",
269
+ "source",
270
+ "description"
271
+ ],
272
+ "additionalProperties": false,
133
273
  "properties": {
134
- "skipValidation": {
135
- "type": "boolean"
274
+ "value": {
275
+ "type": "string",
276
+ "pattern": "^[a-z][a-z0-9-]{2,39}$"
136
277
  },
137
- "dryRun": {
138
- "type": "boolean"
278
+ "source": {
279
+ "type": "string",
280
+ "minLength": 1
139
281
  },
140
- "mode": {
282
+ "description": {
141
283
  "type": "string",
142
- "enum": ["marketplace", "infrastructure"]
284
+ "minLength": 1
285
+ },
286
+ "required": {
287
+ "type": "boolean"
143
288
  }
144
289
  }
145
290
  },
146
- "smtp": {
291
+ "subscriptionId": {
147
292
  "type": "object",
148
- "description": "SMTP configuration",
293
+ "required": [
294
+ "value",
295
+ "source",
296
+ "description"
297
+ ],
298
+ "additionalProperties": false,
149
299
  "properties": {
150
- "enabled": {
151
- "type": "boolean"
300
+ "value": {
301
+ "type": "string",
302
+ "pattern": "^$|^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
152
303
  },
153
- "host": {
154
- "type": "string"
304
+ "source": {
305
+ "type": "string",
306
+ "minLength": 1
155
307
  },
156
- "port": {
157
- "type": "integer",
158
- "minimum": 1,
159
- "maximum": 65535
308
+ "description": {
309
+ "type": "string",
310
+ "minLength": 1
160
311
  },
161
- "user": {
162
- "type": "string"
312
+ "required": {
313
+ "type": "boolean"
314
+ }
315
+ }
316
+ },
317
+ "tenantId": {
318
+ "type": "object",
319
+ "required": [
320
+ "value",
321
+ "source",
322
+ "description"
323
+ ],
324
+ "additionalProperties": false,
325
+ "properties": {
326
+ "value": {
327
+ "type": "string",
328
+ "pattern": "^$|^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
329
+ },
330
+ "source": {
331
+ "type": "string",
332
+ "minLength": 1
163
333
  },
164
- "senderEmail": {
334
+ "description": {
165
335
  "type": "string",
166
- "format": "email"
336
+ "minLength": 1
167
337
  },
168
- "useKeyVault": {
338
+ "required": {
169
339
  "type": "boolean"
170
340
  }
171
341
  }
172
342
  },
173
- "containerRegistry": {
343
+ "acrName": {
174
344
  "type": "object",
175
- "description": "Container Registry configuration",
345
+ "required": [
346
+ "value",
347
+ "source",
348
+ "description"
349
+ ],
350
+ "additionalProperties": false,
176
351
  "properties": {
177
- "enabled": {
352
+ "value": {
353
+ "type": "string",
354
+ "pattern": "^$|^[a-zA-Z0-9]{5,50}$"
355
+ },
356
+ "source": {
357
+ "type": "string",
358
+ "minLength": 1
359
+ },
360
+ "description": {
361
+ "type": "string",
362
+ "minLength": 1
363
+ },
364
+ "required": {
178
365
  "type": "boolean"
179
366
  }
180
- },
181
- "additionalProperties": false
367
+ }
182
368
  },
183
- "ai": {
369
+ "allowMyIp": {
184
370
  "type": "object",
185
- "description": "AI services configuration",
371
+ "required": [
372
+ "value",
373
+ "source",
374
+ "description"
375
+ ],
376
+ "additionalProperties": false,
186
377
  "properties": {
187
- "enabled": {
378
+ "value": {
188
379
  "type": "boolean"
189
380
  },
190
- "sku": {
381
+ "source": {
191
382
  "type": "string",
192
- "enum": ["S0", "S1", "S2", "S3"]
383
+ "minLength": 1
193
384
  },
194
- "kind": {
385
+ "description": {
195
386
  "type": "string",
196
- "enum": ["OpenAI", "CognitiveServices"]
387
+ "minLength": 1
388
+ },
389
+ "required": {
390
+ "type": "boolean"
391
+ },
392
+ "resolvedCidr": {
393
+ "type": [
394
+ "string",
395
+ "null"
396
+ ],
397
+ "pattern": "^(\\d{1,3}\\.){3}\\d{1,3}/32$"
398
+ },
399
+ "resolvedAt": {
400
+ "type": [
401
+ "string",
402
+ "null"
403
+ ],
404
+ "format": "date-time"
405
+ },
406
+ "resolver": {
407
+ "type": [
408
+ "string",
409
+ "null"
410
+ ]
197
411
  }
198
- },
199
- "additionalProperties": false
412
+ }
200
413
  },
201
- "storage": {
414
+ "preset": {
202
415
  "type": "object",
203
- "description": "Storage configuration",
416
+ "required": [
417
+ "value",
418
+ "source",
419
+ "description"
420
+ ],
421
+ "additionalProperties": false,
204
422
  "properties": {
205
- "postgres": {
206
- "type": "string",
207
- "description": "PostgreSQL storage size (e.g., 128GB, 1TB)",
208
- "pattern": "^\\d+(GB|TB)$"
423
+ "value": {
424
+ "enum": [
425
+ "s",
426
+ "m",
427
+ "l",
428
+ "xl"
429
+ ]
209
430
  },
210
- "blob": {
431
+ "source": {
211
432
  "type": "string",
212
- "description": "Blob storage size (e.g., 128GB, 1TB)",
213
- "pattern": "^\\d+(GB|TB)$"
433
+ "minLength": 1
214
434
  },
215
- "fileShare": {
435
+ "description": {
216
436
  "type": "string",
217
- "description": "File share storage size (e.g., 64GB, 512GB)",
218
- "pattern": "^\\d+(GB|TB)$"
437
+ "minLength": 1
438
+ },
439
+ "required": {
440
+ "type": "boolean"
219
441
  }
220
- },
221
- "additionalProperties": false
442
+ }
222
443
  },
223
- "serviceMapping": {
444
+ "parameters": {
224
445
  "type": "object",
225
- "description": "Service mapping configuration based on preset and environment",
446
+ "additionalProperties": false,
447
+ "required": [
448
+ "infrastructureNameOverride",
449
+ "location",
450
+ "tags",
451
+ "enableAppInsights",
452
+ "enableAzureOpenAI",
453
+ "enablePartnerCenterAttribution",
454
+ "enablePostgresPublicAccess",
455
+ "allowedIPs",
456
+ "adminPassword",
457
+ "deploymentEnvironment",
458
+ "keycloakVerifyAudience",
459
+ "encryptionKey",
460
+ "acrLoginServer",
461
+ "acrAdminUsername",
462
+ "acrAdminPassword",
463
+ "acrResourceId",
464
+ "deployRoleAssignments",
465
+ "moriBaseUrl",
466
+ "moriCallbackApiKey",
467
+ "entraCallbackStateSecret",
468
+ "entraIdClientId",
469
+ "entraIdClientSecret",
470
+ "entraIdTenantId",
471
+ "licenseEdition",
472
+ "onboardingMode",
473
+ "misoImageTag",
474
+ "keycloakImageTag"
475
+ ],
226
476
  "properties": {
227
- "appServicePlan": {
477
+ "infrastructureNameOverride": {
228
478
  "type": "object",
479
+ "required": [
480
+ "value",
481
+ "source",
482
+ "description"
483
+ ],
484
+ "additionalProperties": false,
229
485
  "properties": {
230
- "sku": { "type": "string" },
231
- "instances": {
232
- "type": "object",
233
- "properties": {
234
- "min": { "type": "integer" },
235
- "max": { "type": "integer" }
236
- }
486
+ "value": {
487
+ "type": [
488
+ "string",
489
+ "boolean",
490
+ "number",
491
+ "object",
492
+ "array"
493
+ ]
494
+ },
495
+ "source": {
496
+ "type": "string",
497
+ "minLength": 1
498
+ },
499
+ "description": {
500
+ "type": "string",
501
+ "minLength": 1
502
+ },
503
+ "required": {
504
+ "type": "boolean"
237
505
  }
238
506
  }
239
507
  },
240
- "redis": {
508
+ "location": {
241
509
  "type": "object",
510
+ "required": [
511
+ "value",
512
+ "source",
513
+ "description"
514
+ ],
515
+ "additionalProperties": false,
242
516
  "properties": {
243
- "enabled": { "type": "boolean" },
244
- "sku": { "type": "string" }
517
+ "value": {
518
+ "type": [
519
+ "string",
520
+ "boolean",
521
+ "number",
522
+ "object",
523
+ "array"
524
+ ]
525
+ },
526
+ "source": {
527
+ "type": "string",
528
+ "minLength": 1
529
+ },
530
+ "description": {
531
+ "type": "string",
532
+ "minLength": 1
533
+ },
534
+ "required": {
535
+ "type": "boolean"
536
+ }
245
537
  }
246
538
  },
247
- "postgres": {
539
+ "tags": {
248
540
  "type": "object",
541
+ "required": [
542
+ "value",
543
+ "source",
544
+ "description"
545
+ ],
546
+ "additionalProperties": false,
249
547
  "properties": {
250
- "sku": { "type": "string" },
251
- "storage": { "type": "string" }
548
+ "value": {
549
+ "type": [
550
+ "string",
551
+ "boolean",
552
+ "number",
553
+ "object",
554
+ "array"
555
+ ]
556
+ },
557
+ "source": {
558
+ "type": "string",
559
+ "minLength": 1
560
+ },
561
+ "description": {
562
+ "type": "string",
563
+ "minLength": 1
564
+ },
565
+ "required": {
566
+ "type": "boolean"
567
+ }
252
568
  }
253
569
  },
254
- "storage": {
570
+ "enableAppInsights": {
255
571
  "type": "object",
572
+ "required": [
573
+ "value",
574
+ "source",
575
+ "description"
576
+ ],
577
+ "additionalProperties": false,
256
578
  "properties": {
257
- "size": { "type": "string" }
579
+ "value": {
580
+ "type": [
581
+ "string",
582
+ "boolean",
583
+ "number",
584
+ "object",
585
+ "array"
586
+ ]
587
+ },
588
+ "source": {
589
+ "type": "string",
590
+ "minLength": 1
591
+ },
592
+ "description": {
593
+ "type": "string",
594
+ "minLength": 1
595
+ },
596
+ "required": {
597
+ "type": "boolean"
598
+ }
258
599
  }
259
600
  },
260
- "frontDoor": {
601
+ "enableAzureOpenAI": {
261
602
  "type": "object",
603
+ "required": [
604
+ "value",
605
+ "source",
606
+ "description"
607
+ ],
608
+ "additionalProperties": false,
262
609
  "properties": {
263
- "enabled": { "type": "boolean" },
264
- "tier": { "type": "string" }
610
+ "value": {
611
+ "type": [
612
+ "string",
613
+ "boolean",
614
+ "number",
615
+ "object",
616
+ "array"
617
+ ]
618
+ },
619
+ "source": {
620
+ "type": "string",
621
+ "minLength": 1
622
+ },
623
+ "description": {
624
+ "type": "string",
625
+ "minLength": 1
626
+ },
627
+ "required": {
628
+ "type": "boolean"
629
+ }
265
630
  }
266
631
  },
267
- "monitoring": {
632
+ "enablePartnerCenterAttribution": {
268
633
  "type": "object",
634
+ "required": [
635
+ "value",
636
+ "source",
637
+ "description"
638
+ ],
639
+ "additionalProperties": false,
269
640
  "properties": {
270
- "applicationInsights": { "type": "boolean" },
271
- "logAnalytics": { "type": "boolean" },
272
- "alerts": { "type": "boolean" },
273
- "dashboards": { "type": "boolean" }
641
+ "value": {
642
+ "type": [
643
+ "string",
644
+ "boolean",
645
+ "number",
646
+ "object",
647
+ "array"
648
+ ]
649
+ },
650
+ "source": {
651
+ "type": "string",
652
+ "minLength": 1
653
+ },
654
+ "description": {
655
+ "type": "string",
656
+ "minLength": 1
657
+ },
658
+ "required": {
659
+ "type": "boolean"
660
+ }
274
661
  }
275
662
  },
276
- "networking": {
663
+ "enablePostgresPublicAccess": {
277
664
  "type": "object",
665
+ "required": [
666
+ "value",
667
+ "source",
668
+ "description"
669
+ ],
670
+ "additionalProperties": false,
278
671
  "properties": {
279
- "enablePrivateNetworking": { "type": "boolean" },
280
- "enableAzureDns": { "type": "boolean" },
281
- "privateEndpoints": { "type": "boolean" }
672
+ "value": {
673
+ "type": [
674
+ "boolean",
675
+ "array"
676
+ ],
677
+ "items": {
678
+ "type": "string",
679
+ "pattern": "^[0-9./*-]+$"
680
+ }
681
+ },
682
+ "source": {
683
+ "type": "string",
684
+ "minLength": 1
685
+ },
686
+ "description": {
687
+ "type": "string",
688
+ "minLength": 1
689
+ },
690
+ "required": {
691
+ "type": "boolean"
692
+ }
282
693
  }
283
- }
284
- }
285
- },
286
- "modules": {
287
- "type": "object",
288
- "description": "Infrastructure modules configuration",
289
- "properties": {
290
- "core": {
694
+ },
695
+ "allowedIPs": {
291
696
  "type": "object",
697
+ "required": [
698
+ "value",
699
+ "source",
700
+ "description"
701
+ ],
702
+ "additionalProperties": false,
292
703
  "properties": {
293
- "resourceGroup": {
294
- "type": "object",
295
- "properties": {
296
- "enabled": { "type": "boolean" },
297
- "required": { "type": "boolean" },
298
- "description": { "type": "string" }
704
+ "value": {
705
+ "type": [
706
+ "boolean",
707
+ "array"
708
+ ],
709
+ "items": {
710
+ "type": "string",
711
+ "pattern": "^[0-9./*-]+$"
299
712
  }
300
713
  },
301
- "network": {
302
- "type": "object",
303
- "properties": {
304
- "enabled": { "type": "boolean" },
305
- "required": { "type": "boolean" },
306
- "description": { "type": "string" }
307
- }
714
+ "source": {
715
+ "type": "string",
716
+ "minLength": 1
308
717
  },
309
- "keyVault": {
310
- "type": "object",
311
- "properties": {
312
- "enabled": { "type": "boolean" },
313
- "required": { "type": "boolean" },
314
- "description": { "type": "string" }
315
- }
718
+ "description": {
719
+ "type": "string",
720
+ "minLength": 1
316
721
  },
317
- "managedIdentity": {
318
- "type": "object",
319
- "properties": {
320
- "enabled": { "type": "boolean" },
321
- "required": { "type": "boolean" },
322
- "description": { "type": "string" }
323
- }
722
+ "required": {
723
+ "type": "boolean"
724
+ }
725
+ }
726
+ },
727
+ "adminPassword": {
728
+ "$ref": "#/definitions/envReference"
729
+ },
730
+ "deploymentEnvironment": {
731
+ "type": "object",
732
+ "required": [
733
+ "value",
734
+ "source",
735
+ "description"
736
+ ],
737
+ "additionalProperties": false,
738
+ "properties": {
739
+ "value": {
740
+ "type": [
741
+ "string",
742
+ "boolean",
743
+ "number",
744
+ "object",
745
+ "array"
746
+ ]
324
747
  },
325
- "appServicePlan": {
326
- "type": "object",
327
- "properties": {
328
- "enabled": { "type": "boolean" },
329
- "required": { "type": "boolean" },
330
- "description": { "type": "string" }
331
- }
748
+ "source": {
749
+ "type": "string",
750
+ "minLength": 1
751
+ },
752
+ "description": {
753
+ "type": "string",
754
+ "minLength": 1
755
+ },
756
+ "required": {
757
+ "type": "boolean"
332
758
  }
333
759
  }
334
760
  },
335
- "storage": {
761
+ "keycloakVerifyAudience": {
336
762
  "type": "object",
763
+ "required": [
764
+ "value",
765
+ "source",
766
+ "description"
767
+ ],
768
+ "additionalProperties": false,
337
769
  "properties": {
338
- "storageAccount": {
339
- "type": "object",
340
- "properties": {
341
- "enabled": { "type": "boolean" },
342
- "required": { "type": "boolean" },
343
- "description": { "type": "string" },
344
- "default": { "type": "boolean" }
345
- }
770
+ "value": {
771
+ "type": [
772
+ "string",
773
+ "boolean",
774
+ "number",
775
+ "object",
776
+ "array"
777
+ ]
346
778
  },
347
- "blobStorage": {
348
- "type": "object",
349
- "properties": {
350
- "enabled": { "type": "boolean" },
351
- "required": { "type": "boolean" },
352
- "description": { "type": "string" },
353
- "default": { "type": "boolean" },
354
- "dependsOn": {
355
- "type": "array",
356
- "items": { "type": "string" }
357
- }
358
- }
779
+ "source": {
780
+ "type": "string",
781
+ "minLength": 1
359
782
  },
360
- "fileShare": {
361
- "type": "object",
362
- "properties": {
363
- "enabled": { "type": "boolean" },
364
- "required": { "type": "boolean" },
365
- "description": { "type": "string" },
366
- "default": { "type": "boolean" },
367
- "dependsOn": {
368
- "type": "array",
369
- "items": { "type": "string" }
370
- }
371
- }
783
+ "description": {
784
+ "type": "string",
785
+ "minLength": 1
786
+ },
787
+ "required": {
788
+ "type": "boolean"
372
789
  }
373
790
  }
374
791
  },
375
- "database": {
792
+ "encryptionKey": {
793
+ "$ref": "#/definitions/envReference"
794
+ },
795
+ "acrLoginServer": {
376
796
  "type": "object",
797
+ "required": [
798
+ "value",
799
+ "source",
800
+ "description"
801
+ ],
802
+ "additionalProperties": false,
377
803
  "properties": {
378
- "postgresServer": {
379
- "type": "object",
380
- "properties": {
381
- "enabled": { "type": "boolean" },
382
- "required": { "type": "boolean" },
383
- "description": { "type": "string" },
384
- "default": { "type": "boolean" }
385
- }
804
+ "value": {
805
+ "type": [
806
+ "string",
807
+ "null"
808
+ ]
386
809
  },
387
- "postgresDatabases": {
388
- "type": "object",
389
- "properties": {
390
- "enabled": { "type": "boolean" },
391
- "required": { "type": "boolean" },
392
- "description": { "type": "string" },
393
- "default": { "type": "boolean" },
394
- "dependsOn": {
395
- "type": "array",
396
- "items": { "type": "string" }
397
- }
398
- }
810
+ "source": {
811
+ "type": "string",
812
+ "minLength": 1
399
813
  },
400
- "postgresAccess": {
401
- "type": "object",
402
- "properties": {
403
- "enabled": { "type": "boolean" },
404
- "required": { "type": "boolean" },
405
- "description": { "type": "string" },
406
- "default": { "type": "boolean" },
407
- "dependsOn": {
408
- "type": "array",
409
- "items": { "type": "string" }
410
- }
411
- }
814
+ "description": {
815
+ "type": "string",
816
+ "minLength": 1
817
+ },
818
+ "required": {
819
+ "type": "boolean"
412
820
  }
413
821
  }
414
822
  },
415
- "cache": {
823
+ "acrAdminUsername": {
416
824
  "type": "object",
825
+ "required": [
826
+ "value",
827
+ "source",
828
+ "description"
829
+ ],
830
+ "additionalProperties": false,
417
831
  "properties": {
418
- "redis": {
419
- "type": "object",
420
- "properties": {
421
- "enabled": { "type": "boolean" },
422
- "required": { "type": "boolean" },
423
- "description": { "type": "string" },
424
- "default": { "type": "boolean" }
425
- }
832
+ "value": {
833
+ "const": ""
834
+ },
835
+ "source": {
836
+ "type": "string",
837
+ "minLength": 1
838
+ },
839
+ "description": {
840
+ "type": "string",
841
+ "minLength": 1
842
+ },
843
+ "required": {
844
+ "type": "boolean"
426
845
  }
427
846
  }
428
847
  },
429
- "networking": {
848
+ "acrAdminPassword": {
430
849
  "type": "object",
850
+ "required": [
851
+ "value",
852
+ "source",
853
+ "description"
854
+ ],
855
+ "additionalProperties": false,
431
856
  "properties": {
432
- "frontDoor": {
433
- "type": "object",
434
- "properties": {
435
- "enabled": { "type": "boolean" },
436
- "required": { "type": "boolean" },
437
- "description": { "type": "string" },
438
- "default": { "type": "boolean" }
439
- }
857
+ "value": {
858
+ "const": ""
440
859
  },
441
- "customDomain": {
442
- "type": "object",
443
- "properties": {
444
- "enabled": { "type": "boolean" },
445
- "required": { "type": "boolean" },
446
- "description": { "type": "string" },
447
- "default": { "type": "boolean" },
448
- "standalone": { "type": "boolean" },
449
- "directWebAppBinding": { "type": "boolean" }
450
- }
860
+ "source": {
861
+ "type": "string",
862
+ "minLength": 1
451
863
  },
452
- "privateEndpoints": {
453
- "type": "object",
454
- "properties": {
455
- "enabled": { "type": "boolean" },
456
- "required": { "type": "boolean" },
457
- "description": { "type": "string" },
458
- "default": { "type": "boolean" }
459
- }
864
+ "description": {
865
+ "type": "string",
866
+ "minLength": 1
460
867
  },
461
- "dnsZones": {
462
- "type": "object",
463
- "properties": {
464
- "enabled": { "type": "boolean" },
465
- "required": { "type": "boolean" },
466
- "description": { "type": "string" },
467
- "default": { "type": "boolean" },
468
- "dependsOn": {
469
- "type": "array",
470
- "items": { "type": "string" }
471
- }
472
- }
868
+ "required": {
869
+ "type": "boolean"
473
870
  }
474
871
  }
475
872
  },
476
- "monitoring": {
873
+ "acrResourceId": {
477
874
  "type": "object",
875
+ "required": [
876
+ "value",
877
+ "source",
878
+ "description"
879
+ ],
880
+ "additionalProperties": false,
478
881
  "properties": {
479
- "applicationInsights": {
480
- "type": "object",
481
- "properties": {
482
- "enabled": { "type": "boolean" },
483
- "required": { "type": "boolean" },
484
- "description": { "type": "string" },
485
- "default": { "type": "boolean" }
486
- }
882
+ "value": {
883
+ "type": [
884
+ "string",
885
+ "null"
886
+ ]
487
887
  },
488
- "logAnalytics": {
489
- "type": "object",
490
- "properties": {
491
- "enabled": { "type": "boolean" },
492
- "required": { "type": "boolean" },
493
- "description": { "type": "string" },
494
- "default": { "type": "boolean" }
495
- }
888
+ "source": {
889
+ "type": "string",
890
+ "minLength": 1
496
891
  },
497
- "alerts": {
498
- "type": "object",
499
- "properties": {
500
- "enabled": { "type": "boolean" },
501
- "required": { "type": "boolean" },
502
- "description": { "type": "string" },
503
- "default": { "type": "boolean" },
504
- "dependsOn": {
505
- "type": "array",
506
- "items": { "type": "string" }
507
- }
508
- }
892
+ "description": {
893
+ "type": "string",
894
+ "minLength": 1
509
895
  },
510
- "dashboards": {
511
- "type": "object",
512
- "properties": {
513
- "enabled": { "type": "boolean" },
514
- "required": { "type": "boolean" },
515
- "description": { "type": "string" },
516
- "default": { "type": "boolean" },
517
- "dependsOn": {
518
- "type": "array",
519
- "items": { "type": "string" }
520
- }
521
- }
896
+ "required": {
897
+ "type": "boolean"
522
898
  }
523
899
  }
524
900
  },
525
- "containerRegistry": {
901
+ "deployRoleAssignments": {
526
902
  "type": "object",
903
+ "required": [
904
+ "value",
905
+ "source",
906
+ "description"
907
+ ],
908
+ "additionalProperties": false,
527
909
  "properties": {
528
- "acr": {
529
- "type": "object",
530
- "properties": {
531
- "enabled": { "type": "boolean" },
532
- "required": { "type": "boolean" },
533
- "description": { "type": "string" },
534
- "default": { "type": "boolean" }
535
- }
910
+ "value": {
911
+ "type": [
912
+ "string",
913
+ "boolean",
914
+ "number",
915
+ "object",
916
+ "array"
917
+ ]
918
+ },
919
+ "source": {
920
+ "type": "string",
921
+ "minLength": 1
922
+ },
923
+ "description": {
924
+ "type": "string",
925
+ "minLength": 1
926
+ },
927
+ "required": {
928
+ "type": "boolean"
929
+ }
930
+ }
931
+ },
932
+ "moriBaseUrl": {
933
+ "type": "object",
934
+ "required": [
935
+ "value",
936
+ "source",
937
+ "description"
938
+ ],
939
+ "additionalProperties": false,
940
+ "properties": {
941
+ "value": {
942
+ "type": [
943
+ "string",
944
+ "boolean",
945
+ "number",
946
+ "object",
947
+ "array"
948
+ ]
949
+ },
950
+ "source": {
951
+ "type": "string",
952
+ "minLength": 1
953
+ },
954
+ "description": {
955
+ "type": "string",
956
+ "minLength": 1
957
+ },
958
+ "required": {
959
+ "type": "boolean"
960
+ }
961
+ }
962
+ },
963
+ "moriCallbackApiKey": {
964
+ "$ref": "#/definitions/envReference"
965
+ },
966
+ "entraCallbackStateSecret": {
967
+ "type": "object",
968
+ "required": [
969
+ "value",
970
+ "source",
971
+ "description"
972
+ ],
973
+ "additionalProperties": false,
974
+ "properties": {
975
+ "value": {
976
+ "type": "null"
977
+ },
978
+ "source": {
979
+ "type": "string",
980
+ "minLength": 1
981
+ },
982
+ "description": {
983
+ "type": "string",
984
+ "minLength": 1
985
+ },
986
+ "required": {
987
+ "type": "boolean"
988
+ },
989
+ "requiredAt": {
990
+ "const": "tenantActivation"
991
+ }
992
+ }
993
+ },
994
+ "entraIdClientId": {
995
+ "type": "object",
996
+ "required": [
997
+ "value",
998
+ "source",
999
+ "description"
1000
+ ],
1001
+ "additionalProperties": false,
1002
+ "properties": {
1003
+ "value": {
1004
+ "type": "null"
1005
+ },
1006
+ "source": {
1007
+ "type": "string",
1008
+ "minLength": 1
1009
+ },
1010
+ "description": {
1011
+ "type": "string",
1012
+ "minLength": 1
1013
+ },
1014
+ "required": {
1015
+ "type": "boolean"
1016
+ },
1017
+ "requiredAt": {
1018
+ "const": "tenantActivation"
1019
+ }
1020
+ }
1021
+ },
1022
+ "entraIdClientSecret": {
1023
+ "type": "object",
1024
+ "required": [
1025
+ "value",
1026
+ "source",
1027
+ "description"
1028
+ ],
1029
+ "additionalProperties": false,
1030
+ "properties": {
1031
+ "value": {
1032
+ "type": "null"
1033
+ },
1034
+ "source": {
1035
+ "type": "string",
1036
+ "minLength": 1
1037
+ },
1038
+ "description": {
1039
+ "type": "string",
1040
+ "minLength": 1
1041
+ },
1042
+ "required": {
1043
+ "type": "boolean"
1044
+ },
1045
+ "requiredAt": {
1046
+ "const": "tenantActivation"
1047
+ }
1048
+ }
1049
+ },
1050
+ "entraIdTenantId": {
1051
+ "type": "object",
1052
+ "required": [
1053
+ "value",
1054
+ "source",
1055
+ "description"
1056
+ ],
1057
+ "additionalProperties": false,
1058
+ "properties": {
1059
+ "value": {
1060
+ "type": "null"
1061
+ },
1062
+ "source": {
1063
+ "type": "string",
1064
+ "minLength": 1
1065
+ },
1066
+ "description": {
1067
+ "type": "string",
1068
+ "minLength": 1
1069
+ },
1070
+ "required": {
1071
+ "type": "boolean"
1072
+ },
1073
+ "requiredAt": {
1074
+ "const": "tenantActivation"
1075
+ }
1076
+ }
1077
+ },
1078
+ "licenseEdition": {
1079
+ "type": "object",
1080
+ "required": [
1081
+ "value",
1082
+ "source",
1083
+ "description"
1084
+ ],
1085
+ "additionalProperties": false,
1086
+ "properties": {
1087
+ "value": {
1088
+ "type": "string",
1089
+ "pattern": "^(COMMUNITY|STANDARD|ENTERPRISE|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"
1090
+ },
1091
+ "source": {
1092
+ "type": "string",
1093
+ "minLength": 1
1094
+ },
1095
+ "description": {
1096
+ "type": "string",
1097
+ "minLength": 1
1098
+ },
1099
+ "required": {
1100
+ "type": "boolean"
1101
+ }
1102
+ }
1103
+ },
1104
+ "onboardingMode": {
1105
+ "type": "object",
1106
+ "required": [
1107
+ "value",
1108
+ "source",
1109
+ "description"
1110
+ ],
1111
+ "additionalProperties": false,
1112
+ "properties": {
1113
+ "value": {
1114
+ "enum": [
1115
+ "saasDirect",
1116
+ "customerOwned"
1117
+ ]
1118
+ },
1119
+ "source": {
1120
+ "type": "string",
1121
+ "minLength": 1
1122
+ },
1123
+ "description": {
1124
+ "type": "string",
1125
+ "minLength": 1
1126
+ },
1127
+ "required": {
1128
+ "type": "boolean"
1129
+ }
1130
+ }
1131
+ },
1132
+ "misoImageTag": {
1133
+ "type": "object",
1134
+ "required": [
1135
+ "value",
1136
+ "source",
1137
+ "description"
1138
+ ],
1139
+ "additionalProperties": false,
1140
+ "properties": {
1141
+ "value": {
1142
+ "type": [
1143
+ "string",
1144
+ "boolean",
1145
+ "number",
1146
+ "object",
1147
+ "array"
1148
+ ]
1149
+ },
1150
+ "source": {
1151
+ "type": "string",
1152
+ "minLength": 1
1153
+ },
1154
+ "description": {
1155
+ "type": "string",
1156
+ "minLength": 1
1157
+ },
1158
+ "required": {
1159
+ "type": "boolean"
1160
+ }
1161
+ }
1162
+ },
1163
+ "keycloakImageTag": {
1164
+ "type": "object",
1165
+ "required": [
1166
+ "value",
1167
+ "source",
1168
+ "description"
1169
+ ],
1170
+ "additionalProperties": false,
1171
+ "properties": {
1172
+ "value": {
1173
+ "type": [
1174
+ "string",
1175
+ "boolean",
1176
+ "number",
1177
+ "object",
1178
+ "array"
1179
+ ]
1180
+ },
1181
+ "source": {
1182
+ "type": "string",
1183
+ "minLength": 1
1184
+ },
1185
+ "description": {
1186
+ "type": "string",
1187
+ "minLength": 1
1188
+ },
1189
+ "required": {
1190
+ "type": "boolean"
536
1191
  }
537
1192
  }
538
1193
  }
539
1194
  }
540
- }
541
- },
542
- "allOf": [
543
- {
544
- "if": {
545
- "properties": {
546
- "customDomain": {
547
- "properties": {
548
- "enabled": {
549
- "const": true
550
- }
1195
+ },
1196
+ "outputs": {
1197
+ "type": "object",
1198
+ "additionalProperties": false,
1199
+ "required": [
1200
+ "resourceGroupName",
1201
+ "vnetId",
1202
+ "keyVaultName",
1203
+ "scriptStorageAccountName",
1204
+ "flowiseFileShareName",
1205
+ "managedIdentityName",
1206
+ "appServicePlanName",
1207
+ "webAppName",
1208
+ "webAppUrl",
1209
+ "postgresServerName",
1210
+ "postgresServerFqdn",
1211
+ "postgresMisoDatabaseName",
1212
+ "postgresLogsDatabaseName",
1213
+ "postgresKeycloakDatabaseName",
1214
+ "keycloakWebAppName",
1215
+ "keycloakWebAppUrl",
1216
+ "keycloakRealmUrl",
1217
+ "keycloakAdminUser",
1218
+ "portalUrl"
1219
+ ],
1220
+ "properties": {
1221
+ "resourceGroupName": {
1222
+ "$ref": "#/definitions/output"
1223
+ },
1224
+ "vnetId": {
1225
+ "$ref": "#/definitions/output"
1226
+ },
1227
+ "keyVaultName": {
1228
+ "$ref": "#/definitions/output"
1229
+ },
1230
+ "scriptStorageAccountName": {
1231
+ "$ref": "#/definitions/output"
1232
+ },
1233
+ "flowiseFileShareName": {
1234
+ "$ref": "#/definitions/output"
1235
+ },
1236
+ "managedIdentityName": {
1237
+ "$ref": "#/definitions/output"
1238
+ },
1239
+ "appServicePlanName": {
1240
+ "$ref": "#/definitions/output"
1241
+ },
1242
+ "webAppName": {
1243
+ "$ref": "#/definitions/output"
1244
+ },
1245
+ "webAppUrl": {
1246
+ "$ref": "#/definitions/output"
1247
+ },
1248
+ "postgresServerName": {
1249
+ "$ref": "#/definitions/output"
1250
+ },
1251
+ "postgresServerFqdn": {
1252
+ "$ref": "#/definitions/output"
1253
+ },
1254
+ "postgresMisoDatabaseName": {
1255
+ "$ref": "#/definitions/output"
1256
+ },
1257
+ "postgresLogsDatabaseName": {
1258
+ "$ref": "#/definitions/output"
1259
+ },
1260
+ "postgresKeycloakDatabaseName": {
1261
+ "$ref": "#/definitions/output"
1262
+ },
1263
+ "keycloakWebAppName": {
1264
+ "$ref": "#/definitions/output"
1265
+ },
1266
+ "keycloakWebAppUrl": {
1267
+ "$ref": "#/definitions/output"
1268
+ },
1269
+ "keycloakRealmUrl": {
1270
+ "$ref": "#/definitions/output"
1271
+ },
1272
+ "keycloakAdminUser": {
1273
+ "$ref": "#/definitions/output"
1274
+ },
1275
+ "portalUrl": {
1276
+ "$ref": "#/definitions/output"
1277
+ }
1278
+ }
1279
+ },
1280
+ "controllerUrl": {
1281
+ "type": "object",
1282
+ "required": [
1283
+ "value",
1284
+ "source",
1285
+ "description"
1286
+ ],
1287
+ "additionalProperties": false,
1288
+ "properties": {
1289
+ "value": {
1290
+ "type": [
1291
+ "string",
1292
+ "null"
1293
+ ],
1294
+ "pattern": "^https://"
1295
+ },
1296
+ "source": {
1297
+ "type": "string",
1298
+ "minLength": 1
1299
+ },
1300
+ "description": {
1301
+ "type": "string",
1302
+ "minLength": 1
1303
+ },
1304
+ "required": {
1305
+ "type": "boolean"
1306
+ }
1307
+ }
1308
+ },
1309
+ "tenantActivation": {
1310
+ "type": "object",
1311
+ "required": [
1312
+ "status",
1313
+ "url"
1314
+ ],
1315
+ "additionalProperties": false,
1316
+ "properties": {
1317
+ "status": {
1318
+ "type": "object",
1319
+ "required": [
1320
+ "value",
1321
+ "source",
1322
+ "description"
1323
+ ],
1324
+ "additionalProperties": false,
1325
+ "properties": {
1326
+ "value": {
1327
+ "enum": [
1328
+ "pending",
1329
+ "active",
1330
+ "inactive",
1331
+ "unknown"
1332
+ ]
1333
+ },
1334
+ "source": {
1335
+ "type": "string",
1336
+ "minLength": 1
1337
+ },
1338
+ "description": {
1339
+ "type": "string",
1340
+ "minLength": 1
1341
+ },
1342
+ "required": {
1343
+ "type": "boolean"
1344
+ },
1345
+ "checkedAt": {
1346
+ "type": "string",
1347
+ "format": "date-time"
1348
+ }
1349
+ }
1350
+ },
1351
+ "url": {
1352
+ "type": "object",
1353
+ "required": [
1354
+ "value",
1355
+ "source",
1356
+ "description"
1357
+ ],
1358
+ "additionalProperties": false,
1359
+ "properties": {
1360
+ "value": {
1361
+ "type": [
1362
+ "string",
1363
+ "null"
1364
+ ],
1365
+ "pattern": "^https://"
1366
+ },
1367
+ "source": {
1368
+ "type": "string",
1369
+ "minLength": 1
1370
+ },
1371
+ "description": {
1372
+ "type": "string",
1373
+ "minLength": 1
1374
+ },
1375
+ "required": {
1376
+ "type": "boolean"
551
1377
  }
552
1378
  }
553
1379
  }
554
- },
555
- "then": {
556
- "required": ["customDomain"],
557
- "properties": {
558
- "customDomain": {
559
- "required": ["name"]
1380
+ }
1381
+ },
1382
+ "deployment": {
1383
+ "type": "object",
1384
+ "required": [
1385
+ "status"
1386
+ ],
1387
+ "additionalProperties": false,
1388
+ "properties": {
1389
+ "status": {
1390
+ "type": "object",
1391
+ "required": [
1392
+ "value",
1393
+ "source",
1394
+ "description"
1395
+ ],
1396
+ "additionalProperties": false,
1397
+ "properties": {
1398
+ "value": {
1399
+ "enum": [
1400
+ "not-deployed",
1401
+ "running",
1402
+ "succeeded",
1403
+ "failed"
1404
+ ]
1405
+ },
1406
+ "source": {
1407
+ "type": "string",
1408
+ "minLength": 1
1409
+ },
1410
+ "description": {
1411
+ "type": "string",
1412
+ "minLength": 1
1413
+ },
1414
+ "required": {
1415
+ "type": "boolean"
1416
+ }
560
1417
  }
1418
+ },
1419
+ "name": {
1420
+ "type": [
1421
+ "string",
1422
+ "null"
1423
+ ]
1424
+ },
1425
+ "id": {
1426
+ "type": [
1427
+ "string",
1428
+ "null"
1429
+ ]
1430
+ },
1431
+ "correlationId": {
1432
+ "type": [
1433
+ "string",
1434
+ "null"
1435
+ ]
1436
+ },
1437
+ "inputHash": {
1438
+ "type": [
1439
+ "string",
1440
+ "null"
1441
+ ],
1442
+ "pattern": "^[0-9a-f]{64}$"
1443
+ },
1444
+ "completedAt": {
1445
+ "type": [
1446
+ "string",
1447
+ "null"
1448
+ ],
1449
+ "format": "date-time"
1450
+ }
1451
+ }
1452
+ },
1453
+ "moriBaseUrl": {
1454
+ "type": "object",
1455
+ "required": [
1456
+ "value",
1457
+ "source",
1458
+ "description"
1459
+ ],
1460
+ "additionalProperties": false,
1461
+ "properties": {
1462
+ "value": {
1463
+ "type": "string",
1464
+ "pattern": "^$|^https://"
1465
+ },
1466
+ "source": {
1467
+ "type": "string",
1468
+ "minLength": 1
1469
+ },
1470
+ "description": {
1471
+ "type": "string",
1472
+ "minLength": 1
1473
+ },
1474
+ "required": {
1475
+ "type": "boolean"
561
1476
  }
562
1477
  }
563
1478
  },
1479
+ "marketplaceSubscriptionId": {
1480
+ "type": "object",
1481
+ "required": [
1482
+ "value",
1483
+ "source",
1484
+ "description"
1485
+ ],
1486
+ "additionalProperties": false,
1487
+ "properties": {
1488
+ "value": {
1489
+ "type": "string",
1490
+ "maxLength": 255
1491
+ },
1492
+ "source": {
1493
+ "type": "string",
1494
+ "minLength": 1
1495
+ },
1496
+ "description": {
1497
+ "type": "string",
1498
+ "minLength": 1
1499
+ },
1500
+ "required": {
1501
+ "type": "boolean"
1502
+ }
1503
+ }
1504
+ },
1505
+ "registration": {
1506
+ "type": "object",
1507
+ "required": [
1508
+ "status"
1509
+ ],
1510
+ "additionalProperties": false,
1511
+ "properties": {
1512
+ "status": {
1513
+ "type": "object",
1514
+ "required": [
1515
+ "value",
1516
+ "source",
1517
+ "description"
1518
+ ],
1519
+ "additionalProperties": false,
1520
+ "properties": {
1521
+ "value": {
1522
+ "enum": [
1523
+ "not-registered",
1524
+ "requested",
1525
+ "registered",
1526
+ "conflict",
1527
+ "failed"
1528
+ ]
1529
+ },
1530
+ "source": {
1531
+ "type": "string",
1532
+ "minLength": 1
1533
+ },
1534
+ "description": {
1535
+ "type": "string",
1536
+ "minLength": 1
1537
+ },
1538
+ "required": {
1539
+ "type": "boolean"
1540
+ }
1541
+ }
1542
+ },
1543
+ "evidence": {
1544
+ "type": [
1545
+ "object",
1546
+ "null"
1547
+ ],
1548
+ "additionalProperties": false,
1549
+ "properties": {
1550
+ "apiKeyId": {
1551
+ "type": [
1552
+ "string",
1553
+ "null"
1554
+ ]
1555
+ },
1556
+ "keyPrefix": {
1557
+ "type": [
1558
+ "string",
1559
+ "null"
1560
+ ]
1561
+ },
1562
+ "createdAt": {
1563
+ "type": [
1564
+ "string",
1565
+ "null"
1566
+ ]
1567
+ },
1568
+ "installation": {
1569
+ "type": [
1570
+ "object",
1571
+ "null"
1572
+ ]
1573
+ },
1574
+ "entitlement": {
1575
+ "type": [
1576
+ "object",
1577
+ "null"
1578
+ ]
1579
+ }
1580
+ }
1581
+ }
1582
+ }
1583
+ },
1584
+ "variables": {
1585
+ "type": "object",
1586
+ "additionalProperties": false,
1587
+ "patternProperties": {
1588
+ "^[A-Z_][A-Z0-9_]*$": {
1589
+ "$ref": "#/definitions/variable"
1590
+ }
1591
+ }
1592
+ },
1593
+ "generated": {
1594
+ "$ref": "#/definitions/generated"
1595
+ }
1596
+ },
1597
+ "additionalProperties": false,
1598
+ "allOf": [
564
1599
  {
565
1600
  "if": {
566
1601
  "properties": {
567
- "frontDoor": {
1602
+ "vendor": {
568
1603
  "properties": {
569
- "enablePrivateLink": {
570
- "const": true
1604
+ "value": {
1605
+ "const": "AZURE"
571
1606
  }
572
1607
  }
573
1608
  }
574
1609
  }
575
1610
  },
576
1611
  "then": {
577
- "properties": {
578
- "frontDoor": {
579
- "properties": {
580
- "tier": {
581
- "const": "Premium"
582
- }
1612
+ "required": [
1613
+ "acrName",
1614
+ "allowMyIp",
1615
+ "preset",
1616
+ "parameters",
1617
+ "outputs",
1618
+ "controllerUrl",
1619
+ "tenantActivation",
1620
+ "deployment"
1621
+ ],
1622
+ "not": {
1623
+ "anyOf": [
1624
+ {
1625
+ "required": [
1626
+ "moriBaseUrl"
1627
+ ]
1628
+ },
1629
+ {
1630
+ "required": [
1631
+ "registration"
1632
+ ]
1633
+ },
1634
+ {
1635
+ "required": [
1636
+ "marketplaceSubscriptionId"
1637
+ ]
583
1638
  }
584
- }
1639
+ ]
1640
+ }
1641
+ },
1642
+ "else": {
1643
+ "required": [
1644
+ "moriBaseUrl",
1645
+ "marketplaceSubscriptionId",
1646
+ "registration"
1647
+ ],
1648
+ "not": {
1649
+ "anyOf": [
1650
+ {
1651
+ "required": [
1652
+ "parameters"
1653
+ ]
1654
+ },
1655
+ {
1656
+ "required": [
1657
+ "outputs"
1658
+ ]
1659
+ },
1660
+ {
1661
+ "required": [
1662
+ "acrName"
1663
+ ]
1664
+ }
1665
+ ]
585
1666
  }
586
1667
  }
587
1668
  }