Setting the file. One moment.
Application Source Contract Schema · Heroku To AWS · aws/agent-toolkit-for-aws · Skills Docs
ContentsBack to the top of the page 28.3
Clarify
81
Creating Amazon Aurora Db Cluster With Instances
104
Routing Traffic With Route53 And CloudFront
Resilience Program Design
Creating API Gateway Stage
(opens in a new tab)
references/shared/ application-source-contract.schema.json
JSON · 782 lines · 29 KB
:
"#/definitions/findings"
}],
8 "definitions" : {
9 "question" : {
10 "type" : "string" ,
11 "enum" : [
12 "runtime_framework" ,
13 "build_method" ,
14 "build_time_settings" ,
15 "process_commands" ,
16 "runtime_settings" ,
17 "network_listeners" ,
18 "port_host_binding" ,
19 "heroku_runtime_behavior" ,
20 "native_dependencies" ,
21 "release_setup_commands" ,
22 "recurring_jobs" ,
23 "health_routes" ,
24 "local_file_writes" ,
25 "network_protocols" ,
26 "potential_private_endpoints" ,
27 "logs_telemetry" ,
28 "postgresql_extensions" ,
29 "redis_usage" ,
30 "external_services" ,
31 "application_connections" ,
32 "addon_usage" ,
33 "webhooks"
34 ]
35 },
36 "text" : { "type" : "string" , "minLength" : 1 , "maxLength" : 500 },
37 "name" : { "type" : "string" , "minLength" : 1 , "maxLength" : 128 },
38 "identifier" : { "type" : "string" , "minLength" : 1 , "maxLength" : 128 , "pattern" : "^[A-Za-z0-9][A-Za-z0-9._:/-]*$" },
39 "sourcePath" : {
40 "type" : "string" ,
41 "minLength" : 1 ,
42 "maxLength" : 500 ,
43 "pattern" : "^(?![~/])(?![A-Za-z]:)(?! \\ s)(?!.* \\\\ )(?!.*//)(?!.*(?:^|/) \\ . \\ .?(/|$))(?!.*[/] \\ s)(?!.* \\ s(?:/|$)).+$"
44 },
45 "stringList" : { "type" : "array" , "maxItems" : 32 , "uniqueItems" : true , "items" : { "$ref" : "#/definitions/name" } },
46 "configurationNameList" : {
47 "type" : "array" ,
48 "maxItems" : 256 ,
49 "uniqueItems" : true ,
50 "items" : { "$ref" : "#/definitions/name" }
51 },
52 "identifierList" : {
53 "type" : "array" ,
54 "maxItems" : 64 ,
55 "uniqueItems" : true ,
56 "items" : { "$ref" : "#/definitions/identifier" }
57 },
58 "application" : {
59 "type" : "object" ,
60 "required" : [ "app_id" , "app_name" ],
61 "additionalProperties" : false ,
62 "properties" : { "app_id" : { "$ref" : "#/definitions/identifier" }, "app_name" : { "$ref" : "#/definitions/name" } }
63 },
64 "context" : {
65 "type" : "object" ,
66 "required" : [
67 "process_types" ,
68 "configuration_names" ,
69 "postgres_attachment_present" ,
70 "redis_attachment_present" ,
71 "addon_ids" ,
72 "private_space_present" ,
73 "selected_estate_application_ids"
74 ],
75 "additionalProperties" : false ,
76 "properties" : {
77 "process_types" : { "$ref" : "#/definitions/stringList" },
78 "configuration_names" : { "$ref" : "#/definitions/configurationNameList" },
79 "postgres_attachment_present" : { "type" : "boolean" },
80 "redis_attachment_present" : { "type" : "boolean" },
81 "addon_ids" : { "$ref" : "#/definitions/identifierList" },
82 "private_space_present" : { "type" : "boolean" },
83 "selected_estate_application_ids" : { "$ref" : "#/definitions/identifierList" }
84 }
85 },
86 "request" : {
87 "type" : "object" ,
88 "required" : [ "application" , "requested_questions" , "context" ],
89 "additionalProperties" : false ,
90 "properties" : {
91 "application" : { "$ref" : "#/definitions/application" },
92 "requested_questions" : {
93 "type" : "array" ,
94 "minItems" : 1 ,
95 "maxItems" : 22 ,
96 "uniqueItems" : true ,
97 "items" : { "$ref" : "#/definitions/question" }
98 },
99 "context" : { "$ref" : "#/definitions/context" }
100 }
101 },
102 "source" : {
103 "type" : "object" ,
104 "required" : [ "path" ],
105 "additionalProperties" : false ,
106 "properties" : {
107 "path" : { "$ref" : "#/definitions/sourcePath" },
108 "line_start" : { "type" : "integer" , "minimum" : 1 , "maximum" : 10000000 },
109 "line_end" : { "type" : "integer" , "minimum" : 1 , "maximum" : 10000000 }
110 }
111 },
112 "limitation" : {
113 "type" : "object" ,
114 "required" : [ "kind" , "detail" ],
115 "additionalProperties" : false ,
116 "properties" : {
117 "kind" : {
118 "type" : "string" ,
119 "enum" : [ "SKIPPED_SOURCE" , "UNREADABLE_SOURCE" , "TRUNCATED_SOURCE" , "DYNAMIC_SOURCE" , "OTHER" ]
120 },
121 "detail" : { "$ref" : "#/definitions/text" }
122 }
123 },
124 "findingBase" : {
125 "type" : "object" ,
126 "required" : [ "question" , "status" , "value" , "limitations" ],
127 "additionalProperties" : false ,
128 "properties" : {
129 "question" : { "$ref" : "#/definitions/question" },
130 "status" : {
131 "type" : "string" ,
132 "enum" : [ "PRESENT" , "ABSENT_WITHIN_REVIEWED_SCOPE" , "UNKNOWN" , "NOT_APPLICABLE" ]
133 },
134 "value" : {},
135 "sources" : { "type" : "array" , "maxItems" : 32 , "items" : { "$ref" : "#/definitions/source" } },
136 "limitations" : { "type" : "array" , "maxItems" : 16 , "items" : { "$ref" : "#/definitions/limitation" } }
137 },
138 "allOf" : [
139 {
140 "if" : { "properties" : { "status" : { "const" : "PRESENT" } } },
141 "then" : { "properties" : { "value" : { "not" : { "type" : "null" } } } },
142 "else" : { "properties" : { "value" : { "type" : "null" } } }
143 },
144 {
145 "if" : { "required" : [ "status" ], "properties" : { "status" : { "const" : "UNKNOWN" } } },
146 "then" : { "properties" : { "limitations" : { "minItems" : 1 } } }
147 }
148 ]
149 },
150 "records" : { "oneOf" : [{ "type" : "null" }, { "type" : "array" , "minItems" : 1 , "maxItems" : 256 }] },
151 "runtimeFrameworkRecord" : {
152 "type" : "object" ,
153 "required" : [ "component_id" , "root" , "runtime" ],
154 "additionalProperties" : false ,
155 "properties" : {
156 "component_id" : { "$ref" : "#/definitions/identifier" },
157 "root" : { "oneOf" : [{ "const" : "." }, { "$ref" : "#/definitions/sourcePath" }] },
158 "runtime" : { "$ref" : "#/definitions/name" },
159 "runtime_version" : { "$ref" : "#/definitions/name" },
160 "framework" : { "$ref" : "#/definitions/name" }
161 }
162 },
163 "buildMethodRecord" : {
164 "type" : "object" ,
165 "required" : [ "component_id" , "method" ],
166 "additionalProperties" : false ,
167 "properties" : {
168 "component_id" : { "$ref" : "#/definitions/identifier" },
169 "method" : { "$ref" : "#/definitions/name" },
170 "authority_path" : { "$ref" : "#/definitions/sourcePath" },
171 "context_path" : { "$ref" : "#/definitions/sourcePath" }
172 }
173 },
174 "buildSettingRecord" : {
175 "type" : "object" ,
176 "required" : [ "component_id" , "setting_name" , "stage" , "required" ],
177 "additionalProperties" : false ,
178 "properties" : {
179 "component_id" : { "$ref" : "#/definitions/identifier" },
180 "setting_name" : { "$ref" : "#/definitions/name" },
181 "stage" : { "$ref" : "#/definitions/name" },
182 "required" : { "type" : "boolean" }
183 }
184 },
185 "processCommandRecord" : {
186 "type" : "object" ,
187 "required" : [ "process_id" , "component_id" , "type" , "name" , "command" ],
188 "additionalProperties" : false ,
189 "properties" : {
190 "process_id" : { "$ref" : "#/definitions/identifier" },
191 "component_id" : { "$ref" : "#/definitions/identifier" },
192 "type" : { "$ref" : "#/definitions/name" },
193 "name" : { "$ref" : "#/definitions/name" },
194 "command" : { "$ref" : "#/definitions/text" },
195 "entrypoint" : { "$ref" : "#/definitions/sourcePath" }
196 }
197 },
198 "runtimeSettingRecord" : {
199 "type" : "object" ,
200 "required" : [
201 "component_id" ,
202 "process_ids" ,
203 "setting_name" ,
204 "use" ,
205 "required" ,
206 "default_present" ,
207 "loaded_dynamically"
208 ],
209 "additionalProperties" : false ,
210 "properties" : {
211 "component_id" : { "$ref" : "#/definitions/identifier" },
212 "process_ids" : { "$ref" : "#/definitions/identifierList" },
213 "setting_name" : { "$ref" : "#/definitions/name" },
214 "use" : { "$ref" : "#/definitions/text" },
215 "required" : { "type" : "boolean" },
216 "default_present" : { "type" : "boolean" },
217 "loaded_dynamically" : { "type" : "boolean" }
218 }
219 },
220 "listenerRecord" : {
221 "type" : "object" ,
222 "required" : [ "listener_id" , "component_id" , "process_id" , "transport" , "intended_traffic" ],
223 "additionalProperties" : false ,
224 "properties" : {
225 "listener_id" : { "$ref" : "#/definitions/identifier" },
226 "component_id" : { "$ref" : "#/definitions/identifier" },
227 "process_id" : { "$ref" : "#/definitions/identifier" },
228 "transport" : { "type" : "string" , "enum" : [ "TCP" , "UDP" ] },
229 "port_setting_name" : { "$ref" : "#/definitions/name" },
230 "default_port" : { "type" : "integer" , "minimum" : 1 , "maximum" : 65535 },
231 "intended_traffic" : { "$ref" : "#/definitions/name" }
232 }
233 },
234 "portHostBindingRecord" : {
235 "type" : "object" ,
236 "required" : [ "listener_id" , "host_configurable" , "port_configurable" , "beyond_loopback" ],
237 "additionalProperties" : false ,
238 "properties" : {
239 "listener_id" : { "$ref" : "#/definitions/identifier" },
240 "host_setting_name" : { "$ref" : "#/definitions/name" },
241 "port_setting_name" : { "$ref" : "#/definitions/name" },
242 "fixed_host" : { "$ref" : "#/definitions/name" },
243 "fixed_port" : { "type" : "integer" , "minimum" : 1 , "maximum" : 65535 },
244 "host_configurable" : { "type" : "boolean" },
245 "port_configurable" : { "type" : "boolean" },
246 "beyond_loopback" : { "type" : "boolean" }
247 }
248 },
249 "herokuBehaviorRecord" : {
250 "type" : "object" ,
251 "required" : [ "component_id" , "process_ids" , "metadata_name" , "use" , "effect" ],
252 "additionalProperties" : false ,
253 "properties" : {
254 "component_id" : { "$ref" : "#/definitions/identifier" },
255 "process_ids" : { "$ref" : "#/definitions/identifierList" },
256 "metadata_name" : { "$ref" : "#/definitions/name" },
257 "use" : { "$ref" : "#/definitions/text" },
258 "effect" : { "$ref" : "#/definitions/text" }
259 }
260 },
261 "nativeDependencyRecord" : {
262 "type" : "object" ,
263 "required" : [ "component_id" , "kind" , "name" , "phase" , "process_ids" ],
264 "additionalProperties" : false ,
265 "properties" : {
266 "component_id" : { "$ref" : "#/definitions/identifier" },
267 "kind" : { "$ref" : "#/definitions/name" },
268 "name" : { "$ref" : "#/definitions/name" },
269 "phase" : { "$ref" : "#/definitions/name" },
270 "process_ids" : { "$ref" : "#/definitions/identifierList" },
271 "os_constraints" : { "$ref" : "#/definitions/stringList" },
272 "architecture_constraints" : { "$ref" : "#/definitions/stringList" }
273 }
274 },
275 "deploymentCommandRecord" : {
276 "type" : "object" ,
277 "required" : [ "component_id" , "command" , "timing" , "purpose" ],
278 "additionalProperties" : false ,
279 "properties" : {
280 "component_id" : { "$ref" : "#/definitions/identifier" },
281 "process_id" : { "$ref" : "#/definitions/identifier" },
282 "command" : { "$ref" : "#/definitions/text" },
283 "timing" : { "$ref" : "#/definitions/name" },
284 "purpose" : { "$ref" : "#/definitions/text" }
285 }
286 },
287 "recurringJobRecord" : {
288 "type" : "object" ,
289 "required" : [ "job_id" , "component_id" , "process_ids" , "name" , "mechanism" , "command" , "coordination" ],
290 "additionalProperties" : false ,
291 "properties" : {
292 "job_id" : { "$ref" : "#/definitions/identifier" },
293 "component_id" : { "$ref" : "#/definitions/identifier" },
294 "process_ids" : { "$ref" : "#/definitions/identifierList" },
295 "name" : { "$ref" : "#/definitions/name" },
296 "mechanism" : { "$ref" : "#/definitions/name" },
297 "command" : { "$ref" : "#/definitions/text" },
298 "schedule" : { "$ref" : "#/definitions/name" },
299 "coordination" : { "$ref" : "#/definitions/text" }
300 }
301 },
302 "healthRouteRecord" : {
303 "type" : "object" ,
304 "required" : [
305 "component_id" ,
306 "process_id" ,
307 "listener_id" ,
308 "path" ,
309 "methods" ,
310 "success_statuses" ,
311 "redirects" ,
312 "authentication" ,
313 "required_headers"
314 ],
315 "additionalProperties" : false ,
316 "properties" : {
317 "component_id" : { "$ref" : "#/definitions/identifier" },
318 "process_id" : { "$ref" : "#/definitions/identifier" },
319 "listener_id" : { "$ref" : "#/definitions/identifier" },
320 "path" : { "$ref" : "#/definitions/name" },
321 "methods" : { "$ref" : "#/definitions/stringList" },
322 "success_statuses" : {
323 "type" : "array" ,
324 "minItems" : 1 ,
325 "maxItems" : 16 ,
326 "uniqueItems" : true ,
327 "items" : { "type" : "integer" , "minimum" : 100 , "maximum" : 599 }
328 },
329 "redirects" : { "type" : "boolean" },
330 "authentication" : { "$ref" : "#/definitions/name" },
331 "required_headers" : { "$ref" : "#/definitions/stringList" }
332 }
333 },
334 "localFileRecord" : {
335 "type" : "object" ,
336 "required" : [
337 "component_id" ,
338 "process_ids" ,
339 "read_after_write" ,
340 "purpose" ,
341 "required_lifetime" ,
342 "cross_instance_required"
343 ],
344 "additionalProperties" : false ,
345 "properties" : {
346 "component_id" : { "$ref" : "#/definitions/identifier" },
347 "process_ids" : { "$ref" : "#/definitions/identifierList" },
348 "setting_name" : { "$ref" : "#/definitions/name" },
349 "default_path" : { "$ref" : "#/definitions/sourcePath" },
350 "read_after_write" : { "type" : "boolean" },
351 "purpose" : { "$ref" : "#/definitions/text" },
352 "required_lifetime" : { "$ref" : "#/definitions/name" },
353 "cross_instance_required" : { "type" : "boolean" }
354 }
355 },
356 "protocolRecord" : {
357 "type" : "object" ,
358 "required" : [
359 "component_id" ,
360 "process_ids" ,
361 "direction" ,
362 "transport" ,
363 "application_protocol" ,
364 "application_managed_tls"
365 ],
366 "additionalProperties" : false ,
367 "properties" : {
368 "component_id" : { "$ref" : "#/definitions/identifier" },
369 "process_ids" : { "$ref" : "#/definitions/identifierList" },
370 "direction" : { "type" : "string" , "enum" : [ "INBOUND" , "OUTBOUND" , "BIDIRECTIONAL" ] },
371 "listener_id" : { "$ref" : "#/definitions/identifier" },
372 "transport" : { "type" : "string" , "enum" : [ "TCP" , "UDP" ] },
373 "application_protocol" : { "$ref" : "#/definitions/name" },
374 "port" : { "type" : "integer" , "minimum" : 1 , "maximum" : 65535 },
375 "application_managed_tls" : { "type" : "boolean" }
376 }
377 },
378 "privateEndpointRecord" : {
379 "type" : "object" ,
380 "required" : [ "component_id" , "process_ids" , "reference_kind" , "reference_id" , "protocol" ],
381 "additionalProperties" : false ,
382 "properties" : {
383 "component_id" : { "$ref" : "#/definitions/identifier" },
384 "process_ids" : { "$ref" : "#/definitions/identifierList" },
385 "reference_kind" : { "type" : "string" , "enum" : [ "DEPENDENCY" , "APPLICATION" ] },
386 "reference_id" : { "$ref" : "#/definitions/identifier" },
387 "setting_name" : { "$ref" : "#/definitions/name" },
388 "literal_host" : { "$ref" : "#/definitions/name" },
389 "host_pattern" : { "$ref" : "#/definitions/name" },
390 "protocol" : { "$ref" : "#/definitions/name" },
391 "port" : { "type" : "integer" , "minimum" : 1 , "maximum" : 65535 }
392 }
393 },
394 "observabilityRecord" : {
395 "type" : "object" ,
396 "required" : [ "component_id" , "process_ids" , "signal" , "destination" ],
397 "additionalProperties" : false ,
398 "properties" : {
399 "component_id" : { "$ref" : "#/definitions/identifier" },
400 "process_ids" : { "$ref" : "#/definitions/identifierList" },
401 "signal" : { "type" : "string" , "enum" : [ "LOG" , "METRIC" , "TRACE" ] },
402 "destination" : { "$ref" : "#/definitions/name" },
403 "setting_name" : { "$ref" : "#/definitions/name" },
404 "file_path" : { "$ref" : "#/definitions/sourcePath" }
405 }
406 },
407 "postgresExtensionRecord" : {
408 "type" : "object" ,
409 "required" : [ "component_id" , "database_setting_name" , "extension" , "declaration_kind" , "action" ],
410 "additionalProperties" : false ,
411 "properties" : {
412 "component_id" : { "$ref" : "#/definitions/identifier" },
413 "database_setting_name" : { "$ref" : "#/definitions/name" },
414 "extension" : { "$ref" : "#/definitions/name" },
415 "declaration_kind" : { "$ref" : "#/definitions/name" },
416 "action" : { "$ref" : "#/definitions/name" }
417 }
418 },
419 "redisUsageRecord" : {
420 "type" : "object" ,
421 "required" : [ "component_id" , "setting_name" , "roles" , "disposability" ],
422 "additionalProperties" : false ,
423 "properties" : {
424 "component_id" : { "$ref" : "#/definitions/identifier" },
425 "setting_name" : { "$ref" : "#/definitions/name" },
426 "roles" : { "$ref" : "#/definitions/stringList" },
427 "disposability" : { "type" : "string" , "enum" : [ "DISPOSABLE" , "DURABLE" , "UNKNOWN" ] }
428 }
429 },
430 "externalServiceRecord" : {
431 "type" : "object" ,
432 "required" : [
433 "dependency_id" ,
434 "component_id" ,
435 "process_ids" ,
436 "direction" ,
437 "category" ,
438 "service_reference" ,
439 "role" ,
440 "protocol" ,
441 "authentication_mechanism" ,
442 "allowlist_behavior"
443 ],
444 "additionalProperties" : false ,
445 "properties" : {
446 "dependency_id" : { "$ref" : "#/definitions/identifier" },
447 "component_id" : { "$ref" : "#/definitions/identifier" },
448 "process_ids" : { "$ref" : "#/definitions/identifierList" },
449 "direction" : { "type" : "string" , "enum" : [ "INBOUND" , "OUTBOUND" , "BIDIRECTIONAL" ] },
450 "category" : { "$ref" : "#/definitions/name" },
451 "service_reference" : { "$ref" : "#/definitions/name" },
452 "setting_name" : { "$ref" : "#/definitions/name" },
453 "role" : { "$ref" : "#/definitions/text" },
454 "protocol" : { "$ref" : "#/definitions/name" },
455 "port" : { "type" : "integer" , "minimum" : 1 , "maximum" : 65535 },
456 "authentication_mechanism" : { "$ref" : "#/definitions/name" },
457 "allowlist_behavior" : { "$ref" : "#/definitions/name" }
458 }
459 },
460 "applicationConnectionRecord" : {
461 "type" : "object" ,
462 "required" : [
463 "relationship_id" ,
464 "caller_component_id" ,
465 "caller_process_ids" ,
466 "callee_application_id" ,
467 "protocol" ,
468 "ports" ,
469 "mechanism"
470 ],
471 "additionalProperties" : false ,
472 "properties" : {
473 "relationship_id" : { "$ref" : "#/definitions/identifier" },
474 "caller_component_id" : { "$ref" : "#/definitions/identifier" },
475 "caller_process_ids" : { "$ref" : "#/definitions/identifierList" },
476 "callee_application_id" : { "$ref" : "#/definitions/identifier" },
477 "setting_name" : { "$ref" : "#/definitions/name" },
478 "protocol" : { "$ref" : "#/definitions/name" },
479 "ports" : {
480 "type" : "array" ,
481 "maxItems" : 16 ,
482 "uniqueItems" : true ,
483 "items" : { "type" : "integer" , "minimum" : 1 , "maximum" : 65535 }
484 },
485 "mechanism" : { "$ref" : "#/definitions/name" }
486 }
487 },
488 "addonUsageRecord" : {
489 "type" : "object" ,
490 "required" : [ "inventory_addon_id" , "component_id" , "usage" , "roles" ],
491 "additionalProperties" : false ,
492 "properties" : {
493 "inventory_addon_id" : { "$ref" : "#/definitions/identifier" },
494 "component_id" : { "$ref" : "#/definitions/identifier" },
495 "setting_name" : { "$ref" : "#/definitions/name" },
496 "usage" : { "type" : "string" , "enum" : [ "RETAINED_EXTERNAL" , "CUSTOMER_OWNED_FOLLOW_UP" , "BLOCKING" , "UNKNOWN" ] },
497 "roles" : { "$ref" : "#/definitions/stringList" }
498 }
499 },
500 "webhookRecord" : {
501 "type" : "object" ,
502 "required" : [
503 "component_id" ,
504 "process_id" ,
505 "listener_id" ,
506 "path" ,
507 "methods" ,
508 "provider_reference" ,
509 "verification_mechanism" ,
510 "required_headers"
511 ],
512 "additionalProperties" : false ,
513 "properties" : {
514 "component_id" : { "$ref" : "#/definitions/identifier" },
515 "process_id" : { "$ref" : "#/definitions/identifier" },
516 "listener_id" : { "$ref" : "#/definitions/identifier" },
517 "path" : { "$ref" : "#/definitions/name" },
518 "methods" : { "$ref" : "#/definitions/stringList" },
519 "provider_reference" : { "$ref" : "#/definitions/name" },
520 "verification_mechanism" : { "$ref" : "#/definitions/name" },
521 "verification_setting_name" : { "$ref" : "#/definitions/name" },
522 "required_headers" : { "$ref" : "#/definitions/stringList" }
523 }
524 },
525 "finding" : {
526 "allOf" : [
527 { "$ref" : "#/definitions/findingBase" },
528 {
529 "oneOf" : [
530 {
531 "properties" : {
532 "question" : { "const" : "runtime_framework" },
533 "value" : {
534 "allOf" : [
535 { "$ref" : "#/definitions/records" },
536 { "items" : { "$ref" : "#/definitions/runtimeFrameworkRecord" } }
537 ]
538 }
539 }
540 },
541 {
542 "properties" : {
543 "question" : { "const" : "build_method" },
544 "value" : {
545 "allOf" : [
546 { "$ref" : "#/definitions/records" },
547 { "items" : { "$ref" : "#/definitions/buildMethodRecord" } }
548 ]
549 }
550 }
551 },
552 {
553 "properties" : {
554 "question" : { "const" : "build_time_settings" },
555 "value" : {
556 "allOf" : [
557 { "$ref" : "#/definitions/records" },
558 { "items" : { "$ref" : "#/definitions/buildSettingRecord" } }
559 ]
560 }
561 }
562 },
563 {
564 "properties" : {
565 "question" : { "const" : "process_commands" },
566 "value" : {
567 "allOf" : [
568 { "$ref" : "#/definitions/records" },
569 { "items" : { "$ref" : "#/definitions/processCommandRecord" } }
570 ]
571 }
572 }
573 },
574 {
575 "properties" : {
576 "question" : { "const" : "runtime_settings" },
577 "value" : {
578 "allOf" : [
579 { "$ref" : "#/definitions/records" },
580 { "items" : { "$ref" : "#/definitions/runtimeSettingRecord" } }
581 ]
582 }
583 }
584 },
585 {
586 "properties" : {
587 "question" : { "const" : "network_listeners" },
588 "value" : {
589 "allOf" : [
590 { "$ref" : "#/definitions/records" },
591 { "items" : { "$ref" : "#/definitions/listenerRecord" } }
592 ]
593 }
594 }
595 },
596 {
597 "properties" : {
598 "question" : { "const" : "port_host_binding" },
599 "value" : {
600 "allOf" : [
601 { "$ref" : "#/definitions/records" },
602 { "items" : { "$ref" : "#/definitions/portHostBindingRecord" } }
603 ]
604 }
605 }
606 },
607 {
608 "properties" : {
609 "question" : { "const" : "heroku_runtime_behavior" },
610 "value" : {
611 "allOf" : [
612 { "$ref" : "#/definitions/records" },
613 { "items" : { "$ref" : "#/definitions/herokuBehaviorRecord" } }
614 ]
615 }
616 }
617 },
618 {
619 "properties" : {
620 "question" : { "const" : "native_dependencies" },
621 "value" : {
622 "allOf" : [
623 { "$ref" : "#/definitions/records" },
624 { "items" : { "$ref" : "#/definitions/nativeDependencyRecord" } }
625 ]
626 }
627 }
628 },
629 {
630 "properties" : {
631 "question" : { "const" : "release_setup_commands" },
632 "value" : {
633 "allOf" : [
634 { "$ref" : "#/definitions/records" },
635 { "items" : { "$ref" : "#/definitions/deploymentCommandRecord" } }
636 ]
637 }
638 }
639 },
640 {
641 "properties" : {
642 "question" : { "const" : "recurring_jobs" },
643 "value" : {
644 "allOf" : [
645 { "$ref" : "#/definitions/records" },
646 { "items" : { "$ref" : "#/definitions/recurringJobRecord" } }
647 ]
648 }
649 }
650 },
651 {
652 "properties" : {
653 "question" : { "const" : "health_routes" },
654 "value" : {
655 "allOf" : [
656 { "$ref" : "#/definitions/records" },
657 { "items" : { "$ref" : "#/definitions/healthRouteRecord" } }
658 ]
659 }
660 }
661 },
662 {
663 "properties" : {
664 "question" : { "const" : "local_file_writes" },
665 "value" : {
666 "allOf" : [
667 { "$ref" : "#/definitions/records" },
668 { "items" : { "$ref" : "#/definitions/localFileRecord" } }
669 ]
670 }
671 }
672 },
673 {
674 "properties" : {
675 "question" : { "const" : "network_protocols" },
676 "value" : {
677 "allOf" : [
678 { "$ref" : "#/definitions/records" },
679 { "items" : { "$ref" : "#/definitions/protocolRecord" } }
680 ]
681 }
682 }
683 },
684 {
685 "properties" : {
686 "question" : { "const" : "potential_private_endpoints" },
687 "value" : {
688 "allOf" : [
689 { "$ref" : "#/definitions/records" },
690 { "items" : { "$ref" : "#/definitions/privateEndpointRecord" } }
691 ]
692 }
693 }
694 },
695 {
696 "properties" : {
697 "question" : { "const" : "logs_telemetry" },
698 "value" : {
699 "allOf" : [
700 { "$ref" : "#/definitions/records" },
701 { "items" : { "$ref" : "#/definitions/observabilityRecord" } }
702 ]
703 }
704 }
705 },
706 {
707 "properties" : {
708 "question" : { "const" : "postgresql_extensions" },
709 "value" : {
710 "allOf" : [
711 { "$ref" : "#/definitions/records" },
712 { "items" : { "$ref" : "#/definitions/postgresExtensionRecord" } }
713 ]
714 }
715 }
716 },
717 {
718 "properties" : {
719 "question" : { "const" : "redis_usage" },
720 "value" : {
721 "allOf" : [
722 { "$ref" : "#/definitions/records" },
723 { "items" : { "$ref" : "#/definitions/redisUsageRecord" } }
724 ]
725 }
726 }
727 },
728 {
729 "properties" : {
730 "question" : { "const" : "external_services" },
731 "value" : {
732 "allOf" : [
733 { "$ref" : "#/definitions/records" },
734 { "items" : { "$ref" : "#/definitions/externalServiceRecord" } }
735 ]
736 }
737 }
738 },
739 {
740 "properties" : {
741 "question" : { "const" : "application_connections" },
742 "value" : {
743 "allOf" : [
744 { "$ref" : "#/definitions/records" },
745 { "items" : { "$ref" : "#/definitions/applicationConnectionRecord" } }
746 ]
747 }
748 }
749 },
750 {
751 "properties" : {
752 "question" : { "const" : "addon_usage" },
753 "value" : {
754 "allOf" : [
755 { "$ref" : "#/definitions/records" },
756 { "items" : { "$ref" : "#/definitions/addonUsageRecord" } }
757 ]
758 }
759 }
760 },
761 {
762 "properties" : {
763 "question" : { "const" : "webhooks" },
764 "value" : {
765 "allOf" : [{ "$ref" : "#/definitions/records" }, { "items" : { "$ref" : "#/definitions/webhookRecord" } }]
766 }
767 }
768 }
769 ]
770 }
771 ]
772 },
773 "findings" : {
774 "type" : "object" ,
775 "required" : [ "findings" ],
776 "additionalProperties" : false ,
777 "properties" : {
778 "findings" : { "type" : "array" , "minItems" : 1 , "maxItems" : 22 , "items" : { "$ref" : "#/definitions/finding" } }
779 }
780 }
781 }
782 }