@techdocs/cli 1.8.24 → 1.8.25-next.1

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 (57) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/embedded-app/.config-schema.json +1898 -1286
  3. package/dist/embedded-app/index.html +1 -1
  4. package/dist/embedded-app/index.html.tmpl +1 -1
  5. package/dist/embedded-app/static/{124.c9dccb21.chunk.js → 124.f02a9318.chunk.js} +2 -2
  6. package/dist/embedded-app/static/{124.c9dccb21.chunk.js.map → 124.f02a9318.chunk.js.map} +1 -1
  7. package/dist/embedded-app/static/{1297.5286dfc5.chunk.js → 1297.39864036.chunk.js} +2 -2
  8. package/dist/embedded-app/static/{1297.5286dfc5.chunk.js.map → 1297.39864036.chunk.js.map} +1 -1
  9. package/dist/embedded-app/static/2177.89ce5c05.chunk.js +4 -0
  10. package/dist/embedded-app/static/2177.89ce5c05.chunk.js.map +1 -0
  11. package/dist/embedded-app/static/{2401.73c0abd9.chunk.js → 2401.4d69c234.chunk.js} +2 -2
  12. package/dist/embedded-app/static/{2401.73c0abd9.chunk.js.map → 2401.4d69c234.chunk.js.map} +1 -1
  13. package/dist/embedded-app/static/{2420.f4515d6b.chunk.js → 2420.979e1d31.chunk.js} +2 -2
  14. package/dist/embedded-app/static/{2420.f4515d6b.chunk.js.map → 2420.979e1d31.chunk.js.map} +1 -1
  15. package/dist/embedded-app/static/{287.93e12210.chunk.js → 287.e0b65890.chunk.js} +2 -2
  16. package/dist/embedded-app/static/{287.93e12210.chunk.js.map → 287.e0b65890.chunk.js.map} +1 -1
  17. package/dist/embedded-app/static/{3182.b8a79377.chunk.js → 3182.0ac241c5.chunk.js} +2 -2
  18. package/dist/embedded-app/static/{3182.b8a79377.chunk.js.map → 3182.0ac241c5.chunk.js.map} +1 -1
  19. package/dist/embedded-app/static/{3632.e83e9e79.chunk.js → 3632.f343436e.chunk.js} +2 -2
  20. package/dist/embedded-app/static/{3632.e83e9e79.chunk.js.map → 3632.f343436e.chunk.js.map} +1 -1
  21. package/dist/embedded-app/static/3720.646b3e89.chunk.js +11 -0
  22. package/dist/embedded-app/static/3720.646b3e89.chunk.js.map +1 -0
  23. package/dist/embedded-app/static/5724.a402c41f.chunk.js +4 -0
  24. package/dist/embedded-app/static/5724.a402c41f.chunk.js.map +1 -0
  25. package/dist/embedded-app/static/{6271.e3f614f0.chunk.js → 6271.020ea145.chunk.js} +2 -2
  26. package/dist/embedded-app/static/{6271.e3f614f0.chunk.js.map → 6271.020ea145.chunk.js.map} +1 -1
  27. package/dist/embedded-app/static/{6415.dd062904.chunk.js → 6415.493349e2.chunk.js} +2 -2
  28. package/dist/embedded-app/static/{6415.dd062904.chunk.js.map → 6415.493349e2.chunk.js.map} +1 -1
  29. package/dist/embedded-app/static/{8307.a297621e.chunk.js → 8307.b0a2a85f.chunk.js} +2 -2
  30. package/dist/embedded-app/static/{8307.a297621e.chunk.js.map → 8307.b0a2a85f.chunk.js.map} +1 -1
  31. package/dist/embedded-app/static/{8384.34bb2920.chunk.js → 8384.b9605cda.chunk.js} +2 -2
  32. package/dist/embedded-app/static/{8384.34bb2920.chunk.js.map → 8384.b9605cda.chunk.js.map} +1 -1
  33. package/dist/embedded-app/static/8803.20e0d00b.chunk.js +11 -0
  34. package/dist/embedded-app/static/8803.20e0d00b.chunk.js.map +1 -0
  35. package/dist/embedded-app/static/{9652.87ca2ab5.chunk.js → 9652.78fa0c73.chunk.js} +2 -2
  36. package/dist/embedded-app/static/{9652.87ca2ab5.chunk.js.map → 9652.78fa0c73.chunk.js.map} +1 -1
  37. package/dist/embedded-app/static/{main.008b195d.js → main.b64c6be2.js} +5 -5
  38. package/dist/embedded-app/static/main.b64c6be2.js.map +1 -0
  39. package/dist/embedded-app/static/{module-material-ui.05c1a36a.js → module-material-ui.909829ed.js} +3 -3
  40. package/dist/embedded-app/static/{module-material-ui.05c1a36a.js.map → module-material-ui.909829ed.js.map} +1 -1
  41. package/dist/embedded-app/static/{runtime.008b195d.js → runtime.b64c6be2.js} +2 -2
  42. package/dist/embedded-app/static/{runtime.008b195d.js.map → runtime.b64c6be2.js.map} +1 -1
  43. package/dist/embedded-app/static/vendor.b64c6be2.js +170 -0
  44. package/dist/embedded-app/static/vendor.b64c6be2.js.map +1 -0
  45. package/dist/package.json.cjs.js +1 -1
  46. package/package.json +7 -7
  47. package/dist/embedded-app/static/2177.8343b97e.chunk.js +0 -4
  48. package/dist/embedded-app/static/2177.8343b97e.chunk.js.map +0 -1
  49. package/dist/embedded-app/static/3720.68bd02ba.chunk.js +0 -11
  50. package/dist/embedded-app/static/3720.68bd02ba.chunk.js.map +0 -1
  51. package/dist/embedded-app/static/5724.a8d74000.chunk.js +0 -4
  52. package/dist/embedded-app/static/5724.a8d74000.chunk.js.map +0 -1
  53. package/dist/embedded-app/static/8803.2d9f247d.chunk.js +0 -11
  54. package/dist/embedded-app/static/8803.2d9f247d.chunk.js.map +0 -1
  55. package/dist/embedded-app/static/main.008b195d.js.map +0 -1
  56. package/dist/embedded-app/static/vendor.008b195d.js +0 -170
  57. package/dist/embedded-app/static/vendor.008b195d.js.map +0 -1
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "schemas": [
3
3
  {
4
+ "packageName": "@backstage/cli",
4
5
  "value": {
5
6
  "$schema": "https://backstage.io/schema/config-v1",
6
7
  "title": "@backstage/cli",
@@ -123,7 +124,8 @@
123
124
  }
124
125
  },
125
126
  "$schema": "http://json-schema.org/draft-07/schema#"
126
- }
127
+ },
128
+ "packageName": "@backstage/plugin-permission-common"
127
129
  },
128
130
  {
129
131
  "path": "../core-app-api/config.d.ts",
@@ -352,7 +354,8 @@
352
354
  "backend"
353
355
  ],
354
356
  "$schema": "http://json-schema.org/draft-07/schema#"
355
- }
357
+ },
358
+ "packageName": "@backstage/core-app-api"
356
359
  },
357
360
  {
358
361
  "path": "../core-components/config.d.ts",
@@ -397,7 +400,64 @@
397
400
  }
398
401
  },
399
402
  "$schema": "http://json-schema.org/draft-07/schema#"
400
- }
403
+ },
404
+ "packageName": "@backstage/core-components"
405
+ },
406
+ {
407
+ "path": "../../plugins/techdocs/config.d.ts",
408
+ "value": {
409
+ "type": "object",
410
+ "properties": {
411
+ "techdocs": {
412
+ "description": "Configuration options for the techdocs plugin",
413
+ "type": "object",
414
+ "properties": {
415
+ "builder": {
416
+ "description": "Documentation building process depends on the builder attr",
417
+ "visibility": "frontend",
418
+ "enum": [
419
+ "external",
420
+ "local"
421
+ ],
422
+ "type": "string"
423
+ },
424
+ "legacyUseCaseSensitiveTripletPaths": {
425
+ "description": "Allows fallback to case-sensitive triplets in case of migration issues.",
426
+ "visibility": "frontend",
427
+ "type": "boolean"
428
+ },
429
+ "sanitizer": {
430
+ "type": "object",
431
+ "properties": {
432
+ "allowedIframeHosts": {
433
+ "description": "Allows iframe tag only for listed hosts\nExample:\n allowedIframeHosts: [\"example.com\"]\n this will allow all iframes with the host `example.com` in the src attribute",
434
+ "visibility": "frontend",
435
+ "type": "array",
436
+ "items": {
437
+ "type": "string"
438
+ }
439
+ },
440
+ "allowedCustomElementTagNameRegExp": {
441
+ "description": "Allows listed custom element tag name regex\nExample:\n allowedCustomElementTagNameRegExp: '^backstage-'\n this will allow all custom elements with tag name matching `^backstage-` like <backstage-custom-element /> etc.",
442
+ "visibility": "frontend",
443
+ "type": "string"
444
+ },
445
+ "allowedCustomElementAttributeNameRegExp": {
446
+ "description": "Allows listed custom element attribute name regex\nExample:\n allowedCustomElementAttributeNameRegExp: 'attribute1|attribute2'\n this will allow all custom element attributes matching `attribute1` or `attribute2` like <backstage-custom-element attribute1=\"yes\" attribute2/>",
447
+ "visibility": "frontend",
448
+ "type": "string"
449
+ }
450
+ }
451
+ }
452
+ }
453
+ }
454
+ },
455
+ "required": [
456
+ "techdocs"
457
+ ],
458
+ "$schema": "http://json-schema.org/draft-07/schema#"
459
+ },
460
+ "packageName": "@backstage/plugin-techdocs"
401
461
  },
402
462
  {
403
463
  "path": "../integration/config.d.ts",
@@ -842,7 +902,8 @@
842
902
  }
843
903
  },
844
904
  "$schema": "http://json-schema.org/draft-07/schema#"
845
- }
905
+ },
906
+ "packageName": "@backstage/integration"
846
907
  },
847
908
  {
848
909
  "path": "../frontend-app-api/config.d.ts",
@@ -954,62 +1015,8 @@
954
1015
  }
955
1016
  },
956
1017
  "$schema": "http://json-schema.org/draft-07/schema#"
957
- }
958
- },
959
- {
960
- "path": "../../plugins/techdocs/config.d.ts",
961
- "value": {
962
- "type": "object",
963
- "properties": {
964
- "techdocs": {
965
- "description": "Configuration options for the techdocs plugin",
966
- "type": "object",
967
- "properties": {
968
- "builder": {
969
- "description": "Documentation building process depends on the builder attr",
970
- "visibility": "frontend",
971
- "enum": [
972
- "external",
973
- "local"
974
- ],
975
- "type": "string"
976
- },
977
- "legacyUseCaseSensitiveTripletPaths": {
978
- "description": "Allows fallback to case-sensitive triplets in case of migration issues.",
979
- "visibility": "frontend",
980
- "type": "boolean"
981
- },
982
- "sanitizer": {
983
- "type": "object",
984
- "properties": {
985
- "allowedIframeHosts": {
986
- "description": "Allows iframe tag only for listed hosts\nExample:\n allowedIframeHosts: [\"example.com\"]\n this will allow all iframes with the host `example.com` in the src attribute",
987
- "visibility": "frontend",
988
- "type": "array",
989
- "items": {
990
- "type": "string"
991
- }
992
- },
993
- "allowedCustomElementTagNameRegExp": {
994
- "description": "Allows listed custom element tag name regex\nExample:\n allowedCustomElementTagNameRegExp: '^backstage-'\n this will allow all custom elements with tag name matching `^backstage-` like <backstage-custom-element /> etc.",
995
- "visibility": "frontend",
996
- "type": "string"
997
- },
998
- "allowedCustomElementAttributeNameRegExp": {
999
- "description": "Allows listed custom element attribute name regex\nExample:\n allowedCustomElementAttributeNameRegExp: 'attribute1|attribute2'\n this will allow all custom element attributes matching `attribute1` or `attribute2` like <backstage-custom-element attribute1=\"yes\" attribute2/>",
1000
- "visibility": "frontend",
1001
- "type": "string"
1002
- }
1003
- }
1004
- }
1005
- }
1006
- }
1007
- },
1008
- "required": [
1009
- "techdocs"
1010
- ],
1011
- "$schema": "http://json-schema.org/draft-07/schema#"
1012
- }
1018
+ },
1019
+ "packageName": "@backstage/frontend-app-api"
1013
1020
  },
1014
1021
  {
1015
1022
  "path": "../../plugins/catalog/config.d.ts",
@@ -1039,7 +1046,8 @@
1039
1046
  }
1040
1047
  },
1041
1048
  "$schema": "http://json-schema.org/draft-07/schema#"
1042
- }
1049
+ },
1050
+ "packageName": "@backstage/plugin-catalog"
1043
1051
  },
1044
1052
  {
1045
1053
  "path": "../../node_modules/@backstage-community/plugin-stackstorm/config.d.ts",
@@ -1061,7 +1069,8 @@
1061
1069
  }
1062
1070
  },
1063
1071
  "$schema": "http://json-schema.org/draft-07/schema#"
1064
- }
1072
+ },
1073
+ "packageName": "@backstage-community/plugin-stackstorm"
1065
1074
  },
1066
1075
  {
1067
1076
  "path": "../../node_modules/@oriflame/backstage-plugin-score-card/config.d.ts",
@@ -1104,7 +1113,8 @@
1104
1113
  "scorecards"
1105
1114
  ],
1106
1115
  "$schema": "http://json-schema.org/draft-07/schema#"
1107
- }
1116
+ },
1117
+ "packageName": "@oriflame/backstage-plugin-score-card"
1108
1118
  },
1109
1119
  {
1110
1120
  "path": "../backend-plugin-api/config.d.ts",
@@ -1122,7 +1132,8 @@
1122
1132
  }
1123
1133
  },
1124
1134
  "$schema": "http://json-schema.org/draft-07/schema#"
1125
- }
1135
+ },
1136
+ "packageName": "@backstage/backend-plugin-api"
1126
1137
  },
1127
1138
  {
1128
1139
  "path": "../../plugins/auth-backend/config.d.ts",
@@ -1379,7 +1390,8 @@
1379
1390
  }
1380
1391
  },
1381
1392
  "$schema": "http://json-schema.org/draft-07/schema#"
1382
- }
1393
+ },
1394
+ "packageName": "@backstage/plugin-auth-backend"
1383
1395
  },
1384
1396
  {
1385
1397
  "path": "../../plugins/auth-backend-module-guest-provider/config.d.ts",
@@ -1424,7 +1436,8 @@
1424
1436
  }
1425
1437
  },
1426
1438
  "$schema": "http://json-schema.org/draft-07/schema#"
1427
- }
1439
+ },
1440
+ "packageName": "@backstage/plugin-auth-backend-module-guest-provider"
1428
1441
  },
1429
1442
  {
1430
1443
  "path": "../../node_modules/@backstage-community/plugin-puppetdb/node_modules/@backstage/core-components/config.d.ts",
@@ -1469,103 +1482,106 @@
1469
1482
  }
1470
1483
  },
1471
1484
  "$schema": "http://json-schema.org/draft-07/schema#"
1472
- }
1485
+ },
1486
+ "packageName": "@backstage/core-components"
1473
1487
  },
1474
1488
  {
1475
- "path": "../../node_modules/@oriflame/backstage-plugin-score-card/node_modules/@backstage/core-components/config.d.ts",
1489
+ "path": "../../node_modules/@backstage-community/plugin-puppetdb/node_modules/@backstage/core-app-api/config.d.ts",
1476
1490
  "value": {
1477
1491
  "type": "object",
1478
1492
  "properties": {
1479
- "auth": {
1493
+ "app": {
1494
+ "description": "Generic frontend configuration.",
1480
1495
  "type": "object",
1481
1496
  "properties": {
1482
- "autologout": {
1483
- "description": "Autologout feature configuration",
1497
+ "baseUrl": {
1498
+ "description": "The public absolute root URL that the frontend.",
1499
+ "visibility": "frontend",
1500
+ "type": "string"
1501
+ },
1502
+ "title": {
1503
+ "description": "The title of the app, as shown in the Backstage web interface.",
1504
+ "visibility": "frontend",
1505
+ "type": "string"
1506
+ },
1507
+ "support": {
1508
+ "description": "Information about support of this Backstage instance and how to contact the integrator team.",
1484
1509
  "type": "object",
1485
1510
  "properties": {
1486
- "enabled": {
1487
- "description": "Enable or disable the autologout feature",
1488
- "visibility": "frontend",
1489
- "type": "boolean"
1490
- },
1491
- "idleTimeoutMinutes": {
1492
- "description": "Number of minutes after which the inactive user is logged out automatically.\nDefault is 60 minutes (1 hour)",
1493
- "visibility": "frontend",
1494
- "type": "number"
1495
- },
1496
- "promptBeforeIdleSeconds": {
1497
- "description": "Number of seconds before the idle timeout where the user will be asked if it's still active.\nA dialog will be shown.\nDefault is 10 seconds.\nSet to 0 seconds to disable the prompt.",
1498
- "visibility": "frontend",
1499
- "type": "number"
1500
- },
1501
- "useWorkerTimers": {
1502
- "description": "Enable/disable the usage of worker thread timers instead of main thread timers.\nDefault is true.\nIf you experience some browser incompatibility, you may try to set this to false.",
1511
+ "url": {
1512
+ "description": "The primary support url.",
1503
1513
  "visibility": "frontend",
1504
- "type": "boolean"
1514
+ "type": "string"
1505
1515
  },
1506
- "logoutIfDisconnected": {
1507
- "description": "Enable/disable the automatic logout also on users that are logged in but with no Backstage tabs open.\nDefault is true.",
1508
- "visibility": "frontend",
1509
- "type": "boolean"
1510
- }
1511
- }
1512
- }
1513
- }
1514
- }
1515
- },
1516
- "$schema": "http://json-schema.org/draft-07/schema#"
1517
- }
1518
- },
1519
- {
1520
- "path": "../backend-app-api/config.d.ts",
1521
- "value": {
1522
- "type": "object",
1523
- "properties": {
1524
- "backend": {
1525
- "type": "object",
1526
- "properties": {
1527
- "packages": {
1528
- "description": "Used by the feature discovery service",
1529
- "anyOf": [
1530
- {
1531
- "type": "object",
1532
- "properties": {
1533
- "include": {
1534
- "type": "array",
1535
- "items": {
1516
+ "items": {
1517
+ "description": "A list of categorized support item groupings.",
1518
+ "type": "array",
1519
+ "items": {
1520
+ "type": "object",
1521
+ "properties": {
1522
+ "title": {
1523
+ "description": "The title of the support item grouping.",
1524
+ "visibility": "frontend",
1536
1525
  "type": "string"
1537
- }
1538
- },
1539
- "exclude": {
1540
- "type": "array",
1541
- "items": {
1526
+ },
1527
+ "icon": {
1528
+ "description": "An optional icon for the support item grouping.",
1529
+ "visibility": "frontend",
1542
1530
  "type": "string"
1531
+ },
1532
+ "links": {
1533
+ "description": "A list of support links for the Backstage instance inside this grouping.",
1534
+ "type": "array",
1535
+ "items": {
1536
+ "type": "object",
1537
+ "properties": {
1538
+ "url": {
1539
+ "visibility": "frontend",
1540
+ "type": "string"
1541
+ },
1542
+ "title": {
1543
+ "visibility": "frontend",
1544
+ "type": "string"
1545
+ }
1546
+ },
1547
+ "required": [
1548
+ "url"
1549
+ ]
1550
+ }
1543
1551
  }
1544
- }
1552
+ },
1553
+ "required": [
1554
+ "links",
1555
+ "title"
1556
+ ]
1545
1557
  }
1546
- },
1547
- {
1548
- "const": "all",
1549
- "type": "string"
1550
1558
  }
1559
+ },
1560
+ "required": [
1561
+ "items",
1562
+ "url"
1551
1563
  ]
1552
- }
1553
- }
1554
- }
1555
- },
1556
- "$schema": "http://json-schema.org/draft-07/schema#"
1557
- }
1558
- },
1559
- {
1560
- "path": "../backend-defaults/config.d.ts",
1561
- "value": {
1562
- "type": "object",
1563
- "properties": {
1564
- "app": {
1565
- "type": "object",
1566
- "properties": {
1567
- "baseUrl": {
1568
- "type": "string"
1564
+ },
1565
+ "routes": {
1566
+ "type": "object",
1567
+ "properties": {
1568
+ "bindings": {
1569
+ "description": "Maps external route references to regular route references. Both the\nkey and the value is expected to be on the form `<pluginId>.<routeId>`.\nIf the value is `false`, the route will be disabled even if it has a\ndefault mapping.",
1570
+ "deepVisibility": "frontend",
1571
+ "type": "object",
1572
+ "additionalProperties": {
1573
+ "anyOf": [
1574
+ {
1575
+ "const": false,
1576
+ "type": "boolean"
1577
+ },
1578
+ {
1579
+ "type": "string"
1580
+ }
1581
+ ]
1582
+ }
1583
+ }
1584
+ }
1569
1585
  }
1570
1586
  },
1571
1587
  "required": [
@@ -1573,1006 +1589,1145 @@
1573
1589
  ]
1574
1590
  },
1575
1591
  "backend": {
1592
+ "description": "Generic backend configuration.",
1576
1593
  "type": "object",
1577
1594
  "properties": {
1578
1595
  "baseUrl": {
1579
- "description": "The full base URL of the backend, as seen from the browser's point of\nview as it makes calls to the backend.",
1596
+ "description": "The public absolute root URL that the backend is reachable at, from the browser's perspective.",
1597
+ "visibility": "frontend",
1580
1598
  "type": "string"
1581
- },
1582
- "lifecycle": {
1583
- "type": "object",
1584
- "properties": {
1585
- "startupRequestPauseTimeout": {
1586
- "description": "The maximum time that paused requests will wait for the service to start, before returning an error.\nDefaults to 5 seconds\nSupported formats:\n- A string in the format of '1d', '2 seconds' etc. as supported by the `ms`\n library.\n- A standard ISO formatted duration string, e.g. 'P2DT6H' or 'PT1M'.\n- An object with individual units (in plural) as keys, e.g. `{ days: 2, hours: 6 }`."
1587
- },
1588
- "serverShutdownDelay": {
1589
- "description": "The minimum time that the HTTP server will delay the shutdown of the backend. During this delay health checks will be set to failing, allowing traffic to drain.\nDefaults to 0 seconds.\nSupported formats:\n- A string in the format of '1d', '2 seconds' etc. as supported by the `ms`\n library.\n- A standard ISO formatted duration string, e.g. 'P2DT6H' or 'PT1M'.\n- An object with individual units (in plural) as keys, e.g. `{ days: 2, hours: 6 }`."
1590
- }
1591
- }
1592
- },
1593
- "listen": {
1594
- "description": "Address that the backend should listen to.",
1595
- "anyOf": [
1596
- {
1597
- "type": "object",
1598
- "properties": {
1599
- "host": {
1600
- "description": "Address of the interface that the backend should bind to.",
1601
- "type": "string"
1602
- },
1603
- "port": {
1604
- "description": "Port that the backend should listen to.",
1605
- "type": [
1606
- "string",
1607
- "number"
1608
- ]
1609
- }
1599
+ }
1600
+ },
1601
+ "required": [
1602
+ "baseUrl"
1603
+ ]
1604
+ },
1605
+ "organization": {
1606
+ "description": "Configuration that provides information about the organization that the app is for.",
1607
+ "type": "object",
1608
+ "properties": {
1609
+ "name": {
1610
+ "description": "The name of the organization that the app belongs to.",
1611
+ "visibility": "frontend",
1612
+ "type": "string"
1613
+ }
1614
+ }
1615
+ },
1616
+ "homepage": {
1617
+ "description": "This config was used by the HomepageTimer but has been replaced by the HeaderWorldClock in the home plugin",
1618
+ "deprecated": "in favor of the HeaderWorldClock which is found in the home plugin",
1619
+ "type": "object",
1620
+ "properties": {
1621
+ "clocks": {
1622
+ "type": "array",
1623
+ "items": {
1624
+ "type": "object",
1625
+ "properties": {
1626
+ "label": {
1627
+ "visibility": "frontend",
1628
+ "type": "string"
1629
+ },
1630
+ "timezone": {
1631
+ "visibility": "frontend",
1632
+ "type": "string"
1610
1633
  }
1611
1634
  },
1612
- {
1613
- "type": "string"
1614
- }
1615
- ]
1616
- },
1617
- "https": {
1618
- "description": "HTTPS configuration for the backend. If omitted the backend will serve HTTP.\n\nSetting this to `true` will cause self-signed certificates to be generated, which\ncan be useful for local development or other non-production scenarios.",
1619
- "anyOf": [
1620
- {
1621
- "type": "object",
1622
- "properties": {
1623
- "certificate": {
1624
- "description": "Certificate configuration",
1625
- "type": "object",
1626
- "properties": {
1627
- "cert": {
1628
- "description": "PEM encoded certificate. Use $file to load in a file",
1629
- "type": "string"
1635
+ "required": [
1636
+ "label",
1637
+ "timezone"
1638
+ ]
1639
+ }
1640
+ }
1641
+ }
1642
+ },
1643
+ "auth": {
1644
+ "description": "Configuration that provides information on available configured authentication providers.",
1645
+ "type": "object",
1646
+ "properties": {
1647
+ "environment": {
1648
+ "description": "The 'environment' attribute added as an optional parameter to have configurable environment value for `auth.providers`.\ndefault value: 'development'\noptional values: 'development' | 'production'",
1649
+ "visibility": "frontend",
1650
+ "type": "string"
1651
+ }
1652
+ }
1653
+ },
1654
+ "enableExperimentalRedirectFlow": {
1655
+ "description": "Enable redirect authentication flow type, instead of a popup for authentication.",
1656
+ "visibility": "frontend",
1657
+ "type": "boolean"
1658
+ },
1659
+ "discovery": {
1660
+ "description": "Discovery options.",
1661
+ "visibility": "frontend",
1662
+ "type": "object",
1663
+ "properties": {
1664
+ "endpoints": {
1665
+ "description": "Endpoints\n\nA list of target baseUrls and the associated plugins.",
1666
+ "visibility": "frontend",
1667
+ "type": "array",
1668
+ "items": {
1669
+ "type": "object",
1670
+ "properties": {
1671
+ "target": {
1672
+ "description": "The target baseUrl to use for the plugin\n\nCan be either a string or an object with internal and external keys. (Internal is used for the backend, external for the frontend)\nTargets with `{{pluginId}}` or `{{ pluginId }} in the url will be replaced with the pluginId.",
1673
+ "visibility": "frontend",
1674
+ "anyOf": [
1675
+ {
1676
+ "type": "object",
1677
+ "properties": {
1678
+ "external": {
1679
+ "visibility": "frontend",
1680
+ "type": "string"
1681
+ }
1630
1682
  },
1631
- "key": {
1632
- "description": "PEM encoded certificate key. Use $file to load in a file.",
1633
- "visibility": "secret",
1634
- "type": "string"
1635
- }
1683
+ "required": [
1684
+ "external"
1685
+ ]
1636
1686
  },
1637
- "required": [
1638
- "cert",
1639
- "key"
1640
- ]
1687
+ {
1688
+ "type": "string"
1689
+ }
1690
+ ]
1691
+ },
1692
+ "plugins": {
1693
+ "description": "Array of plugins which use the target baseUrl.",
1694
+ "visibility": "frontend",
1695
+ "type": "array",
1696
+ "items": {
1697
+ "type": "string"
1641
1698
  }
1642
1699
  }
1643
1700
  },
1644
- {
1645
- "const": true,
1646
- "type": "boolean"
1647
- }
1648
- ]
1649
- },
1650
- "auth": {
1651
- "description": "Options used by the default auth, httpAuth and userInfo services.",
1701
+ "required": [
1702
+ "plugins",
1703
+ "target"
1704
+ ]
1705
+ }
1706
+ }
1707
+ }
1708
+ }
1709
+ },
1710
+ "required": [
1711
+ "app",
1712
+ "backend"
1713
+ ],
1714
+ "$schema": "http://json-schema.org/draft-07/schema#"
1715
+ },
1716
+ "packageName": "@backstage/core-app-api"
1717
+ },
1718
+ {
1719
+ "path": "../../node_modules/@oriflame/backstage-plugin-score-card/node_modules/@backstage/core-components/config.d.ts",
1720
+ "value": {
1721
+ "type": "object",
1722
+ "properties": {
1723
+ "auth": {
1724
+ "type": "object",
1725
+ "properties": {
1726
+ "autologout": {
1727
+ "description": "Autologout feature configuration",
1652
1728
  "type": "object",
1653
1729
  "properties": {
1654
- "dangerouslyDisableDefaultAuthPolicy": {
1655
- "description": "This disables the otherwise default auth policy, which requires all\nrequests to be authenticated with either user or service credentials.\n\nDisabling this check means that the backend will no longer block\nunauthenticated requests, but instead allow them to pass through to\nplugins.\n\nIf permissions are enabled, unauthenticated requests will be treated\nexactly as such, leaving it to the permission policy to determine what\npermissions should be allowed for an unauthenticated identity. Note\nthat this will also apply to service-to-service calls between plugins\nunless you configure credentials for service calls.",
1730
+ "enabled": {
1731
+ "description": "Enable or disable the autologout feature",
1732
+ "visibility": "frontend",
1656
1733
  "type": "boolean"
1657
1734
  },
1658
- "pluginKeyStore": {
1659
- "description": "Controls how to store keys for plugin-to-plugin auth",
1660
- "anyOf": [
1661
- {
1662
- "type": "object",
1663
- "properties": {
1664
- "type": {
1665
- "type": "string",
1666
- "const": "database"
1667
- }
1668
- },
1669
- "required": [
1670
- "type"
1671
- ]
1672
- },
1673
- {
1674
- "type": "object",
1675
- "properties": {
1676
- "type": {
1677
- "type": "string",
1678
- "const": "static"
1679
- },
1680
- "static": {
1681
- "type": "object",
1682
- "properties": {
1683
- "keys": {
1684
- "description": "Must be declared at least once and the first one will be used for signing.",
1685
- "type": "array",
1686
- "items": {
1687
- "type": "object",
1688
- "properties": {
1689
- "publicKeyFile": {
1690
- "description": "Path to the public key file in the SPKI format. Should be an absolute path.",
1691
- "type": "string"
1692
- },
1693
- "privateKeyFile": {
1694
- "description": "Path to the matching private key file in the PKCS#8 format. Should be an absolute path.\n\nThe first array entry must specify a private key file, the rest must not.",
1695
- "type": "string"
1696
- },
1697
- "keyId": {
1698
- "description": "ID to uniquely identify this key within the JWK set.",
1699
- "type": "string"
1700
- },
1701
- "algorithm": {
1702
- "description": "JWS \"alg\" (Algorithm) Header Parameter value. Defaults to ES256.\nMust match the algorithm used to generate the keys in the provided files",
1703
- "type": "string"
1704
- }
1705
- },
1706
- "required": [
1707
- "keyId",
1708
- "publicKeyFile"
1709
- ]
1710
- }
1711
- }
1712
- },
1713
- "required": [
1714
- "keys"
1715
- ]
1716
- }
1717
- },
1718
- "required": [
1719
- "static",
1720
- "type"
1721
- ]
1722
- }
1723
- ]
1735
+ "idleTimeoutMinutes": {
1736
+ "description": "Number of minutes after which the inactive user is logged out automatically.\nDefault is 60 minutes (1 hour)",
1737
+ "visibility": "frontend",
1738
+ "type": "number"
1724
1739
  },
1725
- "externalAccess": {
1726
- "description": "Configures methods of external access, ie ways for callers outside of\nthe Backstage ecosystem to get authorized for access to APIs that do\nnot permit unauthorized access.",
1727
- "type": "array",
1728
- "items": {
1729
- "anyOf": [
1730
- {
1731
- "type": "object",
1732
- "properties": {
1733
- "type": {
1734
- "description": "This is the legacy service-to-service access method, where a set\nof static keys were shared among plugins and used for symmetric\nsigning and verification. These correspond to the old\n`backend.auth.keys` set and retain their behavior for backwards\ncompatibility. Please migrate to other access methods when\npossible.\n\nCallers generate JWT tokens with the following payload:\n\n```json\n{\n \"sub\": \"backstage-plugin\",\n \"exp\": <epoch seconds one hour in the future>\n}\n```\n\nAnd sign them with HS256, using the base64 decoded secret. The\ntokens are then passed along with requests in the Authorization\nheader:\n\n```\nAuthorization: Bearer eyJhbGciOiJIUzI...\n```",
1735
- "type": "string",
1736
- "const": "legacy"
1737
- },
1738
- "options": {
1739
- "type": "object",
1740
- "properties": {
1741
- "secret": {
1742
- "description": "Any set of base64 encoded random bytes to be used as both the\nsigning and verification key. Should be sufficiently long so as\nnot to be easy to guess by brute force.\n\nCan be generated eg using\n\n```sh\nnode -p 'require(\"crypto\").randomBytes(24).toString(\"base64\")'\n```",
1743
- "visibility": "secret",
1744
- "type": "string"
1745
- },
1746
- "subject": {
1747
- "description": "Sets the subject of the principal, when matching this token.\nUseful for debugging and tracking purposes.",
1748
- "type": "string"
1749
- }
1750
- },
1751
- "required": [
1752
- "secret",
1753
- "subject"
1754
- ]
1755
- },
1756
- "accessRestrictions": {
1757
- "description": "Restricts what types of access that are permitted for this access\nmethod. If no access restrictions are given, it'll have unlimited\naccess. This access restriction applies for the framework level;\nindividual plugins may have their own access control mechanisms\non top of this.",
1758
- "type": "array",
1759
- "items": {
1760
- "type": "object",
1761
- "properties": {
1762
- "plugin": {
1763
- "description": "Permit access to make requests to this plugin.\n\nCan be further refined by setting additional fields below.",
1764
- "type": "string"
1765
- },
1766
- "permission": {
1767
- "description": "If given, this method is limited to only performing actions\nwith these named permissions in this plugin.\n\nNote that this only applies where permissions checks are\nenabled in the first place. Endpoints that are not protected by\nthe permissions system at all, are not affected by this\nsetting.",
1768
- "anyOf": [
1769
- {
1770
- "type": "array",
1771
- "items": {
1772
- "type": "string"
1773
- }
1774
- },
1775
- {
1776
- "type": "string"
1777
- }
1778
- ]
1779
- },
1780
- "permissionAttribute": {
1781
- "description": "If given, this method is limited to only performing actions\nwhose permissions have these attributes.\n\nNote that this only applies where permissions checks are\nenabled in the first place. Endpoints that are not protected by\nthe permissions system at all, are not affected by this\nsetting.",
1782
- "type": "object",
1783
- "properties": {
1784
- "action": {
1785
- "description": "One of more of 'create', 'read', 'update', or 'delete'.",
1786
- "anyOf": [
1787
- {
1788
- "type": "array",
1789
- "items": {
1790
- "type": "string"
1791
- }
1792
- },
1793
- {
1794
- "type": "string"
1795
- }
1796
- ]
1797
- }
1798
- }
1799
- }
1800
- },
1801
- "required": [
1802
- "plugin"
1803
- ]
1804
- }
1805
- }
1806
- },
1807
- "required": [
1808
- "options",
1809
- "type"
1810
- ]
1740
+ "promptBeforeIdleSeconds": {
1741
+ "description": "Number of seconds before the idle timeout where the user will be asked if it's still active.\nA dialog will be shown.\nDefault is 10 seconds.\nSet to 0 seconds to disable the prompt.",
1742
+ "visibility": "frontend",
1743
+ "type": "number"
1744
+ },
1745
+ "useWorkerTimers": {
1746
+ "description": "Enable/disable the usage of worker thread timers instead of main thread timers.\nDefault is true.\nIf you experience some browser incompatibility, you may try to set this to false.",
1747
+ "visibility": "frontend",
1748
+ "type": "boolean"
1749
+ },
1750
+ "logoutIfDisconnected": {
1751
+ "description": "Enable/disable the automatic logout also on users that are logged in but with no Backstage tabs open.\nDefault is true.",
1752
+ "visibility": "frontend",
1753
+ "type": "boolean"
1754
+ }
1755
+ }
1756
+ }
1757
+ }
1758
+ }
1759
+ },
1760
+ "$schema": "http://json-schema.org/draft-07/schema#"
1761
+ },
1762
+ "packageName": "@backstage/core-components"
1763
+ },
1764
+ {
1765
+ "path": "../../node_modules/@oriflame/backstage-plugin-score-card/node_modules/@backstage/integration/config.d.ts",
1766
+ "value": {
1767
+ "type": "object",
1768
+ "properties": {
1769
+ "integrations": {
1770
+ "description": "Configuration for integrations towards various external repository provider systems",
1771
+ "visibility": "frontend",
1772
+ "type": "object",
1773
+ "properties": {
1774
+ "azure": {
1775
+ "description": "Integration configuration for Azure",
1776
+ "type": "array",
1777
+ "items": {
1778
+ "type": "object",
1779
+ "properties": {
1780
+ "host": {
1781
+ "description": "The hostname of the given Azure instance",
1782
+ "visibility": "frontend",
1783
+ "type": "string"
1784
+ },
1785
+ "token": {
1786
+ "description": "Token used to authenticate requests.",
1787
+ "visibility": "secret",
1788
+ "deprecated": "Use `credentials` instead.",
1789
+ "type": "string"
1790
+ },
1791
+ "credential": {
1792
+ "description": "The credential to use for requests.\n\nIf no credential is specified anonymous access is used.",
1793
+ "deepVisibility": "secret",
1794
+ "deprecated": "Use `credentials` instead.",
1795
+ "type": "object",
1796
+ "properties": {
1797
+ "clientId": {
1798
+ "type": "string"
1811
1799
  },
1812
- {
1813
- "type": "object",
1814
- "properties": {
1815
- "type": {
1816
- "description": "This access method consists of random static tokens that can be\nhanded out to callers.\n\nThe tokens are then passed along verbatim with requests in the\nAuthorization header:\n\n```\nAuthorization: Bearer eZv5o+fW3KnR3kVabMW4ZcDNLPl8nmMW\n```",
1817
- "type": "string",
1818
- "const": "static"
1819
- },
1820
- "options": {
1821
- "type": "object",
1822
- "properties": {
1823
- "token": {
1824
- "description": "A raw token that can be any string, but for security reasons\nshould be sufficiently long so as not to be easy to guess by\nbrute force.\n\nCan be generated eg using\n\n```sh\nnode -p 'require(\"crypto\").randomBytes(24).toString(\"base64\")'\n```\n\nSince the tokens can be any string, you are free to add\nadditional identifying data to them if you like. For example,\nadding a `freben-local-dev-` prefix for debugging purposes to a\ntoken that you know will be handed out for use as a personal\naccess token during development.",
1825
- "visibility": "secret",
1826
- "type": "string"
1827
- },
1828
- "subject": {
1829
- "description": "Sets the subject of the principal, when matching this token.\nUseful for debugging and tracking purposes.",
1830
- "type": "string"
1831
- }
1832
- },
1833
- "required": [
1834
- "subject",
1835
- "token"
1836
- ]
1837
- },
1838
- "accessRestrictions": {
1839
- "description": "Restricts what types of access that are permitted for this access\nmethod. If no access restrictions are given, it'll have unlimited\naccess. This access restriction applies for the framework level;\nindividual plugins may have their own access control mechanisms\non top of this.",
1840
- "type": "array",
1841
- "items": {
1842
- "type": "object",
1843
- "properties": {
1844
- "plugin": {
1845
- "description": "Permit access to make requests to this plugin.\n\nCan be further refined by setting additional fields below.",
1846
- "type": "string"
1847
- },
1848
- "permission": {
1849
- "description": "If given, this method is limited to only performing actions\nwith these named permissions in this plugin.\n\nNote that this only applies where permissions checks are\nenabled in the first place. Endpoints that are not protected by\nthe permissions system at all, are not affected by this\nsetting.",
1850
- "anyOf": [
1851
- {
1852
- "type": "array",
1853
- "items": {
1854
- "type": "string"
1855
- }
1856
- },
1857
- {
1858
- "type": "string"
1859
- }
1860
- ]
1861
- },
1862
- "permissionAttribute": {
1863
- "description": "If given, this method is limited to only performing actions\nwhose permissions have these attributes.\n\nNote that this only applies where permissions checks are\nenabled in the first place. Endpoints that are not protected by\nthe permissions system at all, are not affected by this\nsetting.",
1864
- "type": "object",
1865
- "properties": {
1866
- "action": {
1867
- "description": "One of more of 'create', 'read', 'update', or 'delete'.",
1868
- "anyOf": [
1869
- {
1870
- "type": "array",
1871
- "items": {
1872
- "type": "string"
1873
- }
1874
- },
1875
- {
1876
- "type": "string"
1877
- }
1878
- ]
1879
- }
1880
- }
1881
- }
1882
- },
1883
- "required": [
1884
- "plugin"
1885
- ]
1886
- }
1887
- }
1888
- },
1889
- "required": [
1890
- "options",
1891
- "type"
1892
- ]
1800
+ "clientSecret": {
1801
+ "type": "string"
1893
1802
  },
1894
- {
1895
- "type": "object",
1896
- "properties": {
1897
- "type": {
1898
- "description": "This access method consists of a JWKS endpoint that can be used to\nverify JWT tokens.\n\nCallers generate JWT tokens via 3rd party tooling\nand pass them in the Authorization header:\n\n```\nAuthorization: Bearer eZv5o+fW3KnR3kVabMW4ZcDNLPl8nmMW\n```",
1899
- "type": "string",
1900
- "const": "jwks"
1901
- },
1902
- "options": {
1903
- "type": "object",
1904
- "properties": {
1905
- "url": {
1906
- "description": "The full URL of the JWKS endpoint.",
1907
- "type": "string"
1908
- },
1909
- "algorithm": {
1910
- "description": "Sets the algorithm(s) that should be used to verify the JWT tokens.\nThe passed JWTs must have been signed using one of the listed algorithms.",
1911
- "anyOf": [
1912
- {
1913
- "type": "array",
1914
- "items": {
1915
- "type": "string"
1916
- }
1917
- },
1918
- {
1919
- "type": "string"
1920
- }
1921
- ]
1922
- },
1923
- "issuer": {
1924
- "description": "Sets the issuer(s) that should be used to verify the JWT tokens.\nPassed JWTs must have an `iss` claim which matches one of the specified issuers.",
1925
- "anyOf": [
1926
- {
1927
- "type": "array",
1928
- "items": {
1929
- "type": "string"
1930
- }
1931
- },
1932
- {
1933
- "type": "string"
1934
- }
1935
- ]
1936
- },
1937
- "audience": {
1938
- "description": "Sets the audience(s) that should be used to verify the JWT tokens.\nThe passed JWTs must have an \"aud\" claim that matches one of the audiences specified,\nor have no audience specified.",
1939
- "anyOf": [
1940
- {
1941
- "type": "array",
1942
- "items": {
1943
- "type": "string"
1944
- }
1945
- },
1946
- {
1947
- "type": "string"
1948
- }
1949
- ]
1950
- },
1951
- "subjectPrefix": {
1952
- "description": "Sets an optional subject prefix. Passes the subject to called plugins.\nUseful for debugging and tracking purposes.",
1953
- "type": "string"
1954
- }
1955
- },
1956
- "required": [
1957
- "url"
1958
- ]
1959
- },
1960
- "accessRestrictions": {
1961
- "description": "Restricts what types of access that are permitted for this access\nmethod. If no access restrictions are given, it'll have unlimited\naccess. This access restriction applies for the framework level;\nindividual plugins may have their own access control mechanisms\non top of this.",
1962
- "type": "array",
1963
- "items": {
1964
- "type": "object",
1965
- "properties": {
1966
- "plugin": {
1967
- "description": "Permit access to make requests to this plugin.\n\nCan be further refined by setting additional fields below.",
1968
- "type": "string"
1969
- },
1970
- "permission": {
1971
- "description": "If given, this method is limited to only performing actions\nwith these named permissions in this plugin.\n\nNote that this only applies where permissions checks are\nenabled in the first place. Endpoints that are not protected by\nthe permissions system at all, are not affected by this\nsetting.",
1972
- "anyOf": [
1973
- {
1974
- "type": "array",
1975
- "items": {
1976
- "type": "string"
1977
- }
1978
- },
1979
- {
1980
- "type": "string"
1981
- }
1982
- ]
1983
- },
1984
- "permissionAttribute": {
1985
- "description": "If given, this method is limited to only performing actions\nwhose permissions have these attributes.\n\nNote that this only applies where permissions checks are\nenabled in the first place. Endpoints that are not protected by\nthe permissions system at all, are not affected by this\nsetting.",
1986
- "type": "object",
1987
- "properties": {
1988
- "action": {
1989
- "description": "One of more of 'create', 'read', 'update', or 'delete'.",
1990
- "anyOf": [
1991
- {
1992
- "type": "array",
1993
- "items": {
1994
- "type": "string"
1995
- }
1996
- },
1997
- {
1998
- "type": "string"
1999
- }
2000
- ]
2001
- }
2002
- }
2003
- }
2004
- },
2005
- "required": [
2006
- "plugin"
2007
- ]
2008
- }
2009
- }
1803
+ "tenantId": {
1804
+ "type": "string"
1805
+ },
1806
+ "personalAccessToken": {
1807
+ "type": "string"
1808
+ }
1809
+ }
1810
+ },
1811
+ "credentials": {
1812
+ "description": "The credentials to use for requests. If multiple credentials are specified the first one that matches the organization is used.\nIf not organization matches the first credential without an organization is used.\n\nIf no credentials are specified at all, either a default credential (for Azure DevOps) or anonymous access (for Azure DevOps Server) is used.",
1813
+ "deepVisibility": "secret",
1814
+ "type": "array",
1815
+ "items": {
1816
+ "type": "object",
1817
+ "properties": {
1818
+ "clientId": {
1819
+ "type": "string"
2010
1820
  },
2011
- "required": [
2012
- "options",
2013
- "type"
2014
- ]
1821
+ "clientSecret": {
1822
+ "type": "string"
1823
+ },
1824
+ "tenantId": {
1825
+ "type": "string"
1826
+ },
1827
+ "personalAccessToken": {
1828
+ "type": "string"
1829
+ }
2015
1830
  }
2016
- ]
1831
+ }
1832
+ }
1833
+ },
1834
+ "required": [
1835
+ "host"
1836
+ ]
1837
+ }
1838
+ },
1839
+ "bitbucket": {
1840
+ "description": "Integration configuration for Bitbucket",
1841
+ "deprecated": "replaced by bitbucketCloud and bitbucketServer",
1842
+ "type": "array",
1843
+ "items": {
1844
+ "type": "object",
1845
+ "properties": {
1846
+ "host": {
1847
+ "description": "The hostname of the given Bitbucket instance",
1848
+ "visibility": "frontend",
1849
+ "type": "string"
1850
+ },
1851
+ "token": {
1852
+ "description": "Token used to authenticate requests.",
1853
+ "visibility": "secret",
1854
+ "type": "string"
1855
+ },
1856
+ "apiBaseUrl": {
1857
+ "description": "The base url for the Bitbucket API, for example https://api.bitbucket.org/2.0",
1858
+ "visibility": "frontend",
1859
+ "type": "string"
1860
+ },
1861
+ "username": {
1862
+ "description": "The username to use for authenticated requests.",
1863
+ "visibility": "secret",
1864
+ "type": "string"
1865
+ },
1866
+ "appPassword": {
1867
+ "description": "Bitbucket app password used to authenticate requests.",
1868
+ "visibility": "secret",
1869
+ "type": "string"
1870
+ }
1871
+ },
1872
+ "required": [
1873
+ "host"
1874
+ ]
1875
+ }
1876
+ },
1877
+ "bitbucketCloud": {
1878
+ "description": "Integration configuration for Bitbucket Cloud",
1879
+ "type": "array",
1880
+ "items": {
1881
+ "type": "object",
1882
+ "properties": {
1883
+ "username": {
1884
+ "description": "The username to use for authenticated requests.",
1885
+ "visibility": "secret",
1886
+ "type": "string"
1887
+ },
1888
+ "appPassword": {
1889
+ "description": "Bitbucket Cloud app password used to authenticate requests.",
1890
+ "visibility": "secret",
1891
+ "type": "string"
1892
+ }
1893
+ },
1894
+ "required": [
1895
+ "appPassword",
1896
+ "username"
1897
+ ]
1898
+ }
1899
+ },
1900
+ "bitbucketServer": {
1901
+ "description": "Integration configuration for Bitbucket Server",
1902
+ "type": "array",
1903
+ "items": {
1904
+ "type": "object",
1905
+ "properties": {
1906
+ "host": {
1907
+ "description": "The hostname of the given Bitbucket Server instance",
1908
+ "visibility": "frontend",
1909
+ "type": "string"
1910
+ },
1911
+ "token": {
1912
+ "description": "Token used to authenticate requests.",
1913
+ "visibility": "secret",
1914
+ "type": "string"
1915
+ },
1916
+ "username": {
1917
+ "description": "Username used to authenticate requests with Basic Auth.",
1918
+ "visibility": "secret",
1919
+ "type": "string"
1920
+ },
1921
+ "password": {
1922
+ "description": "Password (or token as password) used to authenticate requests with Basic Auth.",
1923
+ "visibility": "secret",
1924
+ "type": "string"
1925
+ },
1926
+ "apiBaseUrl": {
1927
+ "description": "The base url for the Bitbucket Server API, for example https://<host>/rest/api/1.0",
1928
+ "visibility": "frontend",
1929
+ "type": "string"
1930
+ }
1931
+ },
1932
+ "required": [
1933
+ "host"
1934
+ ]
1935
+ }
1936
+ },
1937
+ "gerrit": {
1938
+ "description": "Integration configuration for Gerrit",
1939
+ "type": "array",
1940
+ "items": {
1941
+ "type": "object",
1942
+ "properties": {
1943
+ "host": {
1944
+ "description": "The hostname of the given Gerrit instance",
1945
+ "visibility": "frontend",
1946
+ "type": "string"
1947
+ },
1948
+ "baseUrl": {
1949
+ "description": "The base url for the Gerrit instance.",
1950
+ "visibility": "frontend",
1951
+ "type": "string"
1952
+ },
1953
+ "gitilesBaseUrl": {
1954
+ "description": "The gitiles base url.",
1955
+ "visibility": "frontend",
1956
+ "type": "string"
1957
+ },
1958
+ "cloneUrl": {
1959
+ "description": "The base url for cloning repos.",
1960
+ "visibility": "frontend",
1961
+ "type": "string"
1962
+ },
1963
+ "username": {
1964
+ "description": "The username to use for authenticated requests.",
1965
+ "visibility": "secret",
1966
+ "type": "string"
1967
+ },
1968
+ "password": {
1969
+ "description": "Gerrit password used to authenticate requests. This can be either a password\nor a generated access token.",
1970
+ "visibility": "secret",
1971
+ "type": "string"
2017
1972
  }
2018
- }
1973
+ },
1974
+ "required": [
1975
+ "gitilesBaseUrl",
1976
+ "host"
1977
+ ]
2019
1978
  }
2020
1979
  },
2021
- "database": {
2022
- "description": "Database connection configuration, select base database type using the `client` field",
2023
- "type": "object",
2024
- "properties": {
2025
- "client": {
2026
- "description": "Default database client to use",
2027
- "enum": [
2028
- "better-sqlite3",
2029
- "pg",
2030
- "sqlite3"
2031
- ],
2032
- "type": "string"
2033
- },
2034
- "connection": {
2035
- "description": "Base database connection string, or object with individual connection properties",
2036
- "visibility": "secret",
2037
- "anyOf": [
2038
- {
1980
+ "github": {
1981
+ "description": "Integration configuration for GitHub",
1982
+ "type": "array",
1983
+ "items": {
1984
+ "type": "object",
1985
+ "properties": {
1986
+ "host": {
1987
+ "description": "The hostname of the given GitHub instance",
1988
+ "visibility": "frontend",
1989
+ "type": "string"
1990
+ },
1991
+ "token": {
1992
+ "description": "Token used to authenticate requests.",
1993
+ "visibility": "secret",
1994
+ "type": "string"
1995
+ },
1996
+ "apiBaseUrl": {
1997
+ "description": "The base url for the GitHub API, for example https://api.github.com",
1998
+ "visibility": "frontend",
1999
+ "type": "string"
2000
+ },
2001
+ "rawBaseUrl": {
2002
+ "description": "The base url for GitHub raw resources, for example https://raw.githubusercontent.com",
2003
+ "visibility": "frontend",
2004
+ "type": "string"
2005
+ },
2006
+ "apps": {
2007
+ "description": "GitHub Apps configuration",
2008
+ "type": "array",
2009
+ "items": {
2039
2010
  "type": "object",
2040
2011
  "properties": {
2041
- "type": {
2042
- "description": "The specific config for cloudsql connections",
2043
- "type": "string",
2044
- "const": "cloudsql"
2012
+ "appId": {
2013
+ "description": "The numeric GitHub App ID, string for environment variables",
2014
+ "type": [
2015
+ "string",
2016
+ "number"
2017
+ ]
2045
2018
  },
2046
- "instance": {
2047
- "description": "The instance connection name for the cloudsql instance, e.g. `project:region:instance`",
2019
+ "privateKey": {
2020
+ "description": "The private key to use for auth against the app",
2021
+ "visibility": "secret",
2022
+ "type": "string"
2023
+ },
2024
+ "webhookSecret": {
2025
+ "description": "The secret used for webhooks",
2026
+ "visibility": "secret",
2027
+ "type": "string"
2028
+ },
2029
+ "clientId": {
2030
+ "description": "The client ID to use",
2048
2031
  "type": "string"
2032
+ },
2033
+ "clientSecret": {
2034
+ "description": "The client secret to use",
2035
+ "visibility": "secret",
2036
+ "type": "string"
2037
+ },
2038
+ "allowedInstallationOwners": {
2039
+ "description": "List of installation owners allowed to be used by this GitHub app. The GitHub UI does not provide a way to list the installations.\nHowever you can list the installations with the GitHub API. You can find the list of installations here:\nhttps://api.github.com/app/installations\nThe relevant documentation for this is here.\nhttps://docs.github.com/en/rest/reference/apps#list-installations-for-the-authenticated-app--code-samples",
2040
+ "type": "array",
2041
+ "items": {
2042
+ "type": "string"
2043
+ }
2049
2044
  }
2050
2045
  },
2051
2046
  "required": [
2052
- "instance",
2053
- "type"
2047
+ "appId",
2048
+ "clientId",
2049
+ "clientSecret",
2050
+ "privateKey",
2051
+ "webhookSecret"
2054
2052
  ]
2055
- },
2056
- {
2057
- "type": "object",
2058
- "additionalProperties": {},
2059
- "properties": {
2060
- "password": {
2061
- "description": "Password that belongs to the client User",
2062
- "visibility": "secret",
2063
- "type": "string"
2064
- }
2065
- }
2066
- },
2067
- {
2068
- "type": "string"
2069
2053
  }
2070
- ]
2071
- },
2072
- "prefix": {
2073
- "description": "Database name prefix override",
2074
- "type": "string"
2075
- },
2076
- "ensureExists": {
2077
- "description": "Whether to ensure the given database exists by creating it if it does not.\nDefaults to true if unspecified.",
2078
- "type": "boolean"
2054
+ }
2079
2055
  },
2080
- "ensureSchemaExists": {
2081
- "description": "Whether to ensure the given database schema exists by creating it if it does not.\nDefaults to false if unspecified.\n\nNOTE: Currently only supported by the `pg` client when pluginDivisionMode: schema",
2082
- "type": "boolean"
2056
+ "required": [
2057
+ "host"
2058
+ ]
2059
+ }
2060
+ },
2061
+ "gitlab": {
2062
+ "description": "Integration configuration for GitLab",
2063
+ "type": "array",
2064
+ "items": {
2065
+ "type": "object",
2066
+ "properties": {
2067
+ "host": {
2068
+ "description": "The host of the target that this matches on, e.g. \"gitlab.com\".",
2069
+ "visibility": "frontend",
2070
+ "type": "string"
2071
+ },
2072
+ "apiBaseUrl": {
2073
+ "description": "The base URL of the API of this provider, e.g.\n\"https://gitlab.com/api/v4\", with no trailing slash.\n\nMay be omitted specifically for public GitLab; then it will be deduced.",
2074
+ "visibility": "frontend",
2075
+ "type": "string"
2076
+ },
2077
+ "token": {
2078
+ "description": "The authorization token to use for requests to this provider.\n\nIf no token is specified, anonymous access is used.",
2079
+ "visibility": "secret",
2080
+ "type": "string"
2081
+ },
2082
+ "baseUrl": {
2083
+ "description": "The baseUrl of this provider, e.g. \"https://gitlab.com\", which is\npassed into the GitLab client.\n\nIf no baseUrl is provided, it will default to https://${host}.",
2084
+ "visibility": "frontend",
2085
+ "type": "string"
2086
+ }
2083
2087
  },
2084
- "pluginDivisionMode": {
2085
- "description": "How plugins databases are managed/divided in the provided database instance.\n\n`database` -> Plugins are each given their own database to manage their schemas/tables.\n\n`schema` -> Plugins will be given their own schema (in the specified/default database)\n to manage their tables.\n\nNOTE: Currently only supported by the `pg` client.",
2086
- "default": "database",
2087
- "enum": [
2088
- "database",
2089
- "schema"
2090
- ],
2088
+ "required": [
2089
+ "host"
2090
+ ]
2091
+ }
2092
+ },
2093
+ "googleGcs": {
2094
+ "description": "Integration configuration for Google Cloud Storage",
2095
+ "type": "object",
2096
+ "properties": {
2097
+ "clientEmail": {
2098
+ "description": "Service account email used to authenticate requests.",
2091
2099
  "type": "string"
2092
2100
  },
2093
- "role": {
2094
- "description": "Configures the ownership of newly created schemas in pg databases.",
2101
+ "privateKey": {
2102
+ "description": "Service account private key used to authenticate requests.",
2103
+ "visibility": "secret",
2095
2104
  "type": "string"
2105
+ }
2106
+ }
2107
+ },
2108
+ "awsS3": {
2109
+ "description": "Integration configuration for AWS S3 Service",
2110
+ "type": "array",
2111
+ "items": {
2112
+ "type": "object",
2113
+ "properties": {
2114
+ "endpoint": {
2115
+ "description": "AWS Endpoint.\nThe endpoint URI to send requests to. The default endpoint is built from the configured region.",
2116
+ "visibility": "frontend",
2117
+ "type": "string"
2118
+ },
2119
+ "s3ForcePathStyle": {
2120
+ "description": "Whether to use path style URLs when communicating with S3.\nDefaults to false.\nThis allows providers like LocalStack, Minio and Wasabi (and possibly others) to be used.",
2121
+ "visibility": "frontend",
2122
+ "type": "boolean"
2123
+ },
2124
+ "accessKeyId": {
2125
+ "description": "Account access key used to authenticate requests.",
2126
+ "type": "string"
2127
+ },
2128
+ "secretAccessKey": {
2129
+ "description": "Account secret key used to authenticate requests.",
2130
+ "visibility": "secret",
2131
+ "type": "string"
2132
+ },
2133
+ "roleArn": {
2134
+ "description": "ARN of the role to be assumed",
2135
+ "type": "string"
2136
+ },
2137
+ "externalId": {
2138
+ "description": "External ID to use when assuming role",
2139
+ "type": "string"
2140
+ }
2141
+ }
2142
+ }
2143
+ },
2144
+ "gitea": {
2145
+ "description": "Integration configuration for Gitea",
2146
+ "type": "array",
2147
+ "items": {
2148
+ "type": "object",
2149
+ "properties": {
2150
+ "host": {
2151
+ "description": "The hostname of the given Gitea instance",
2152
+ "visibility": "frontend",
2153
+ "type": "string"
2154
+ },
2155
+ "baseUrl": {
2156
+ "description": "The base url for the Gitea instance.",
2157
+ "visibility": "frontend",
2158
+ "type": "string"
2159
+ },
2160
+ "username": {
2161
+ "description": "The username to use for authenticated requests.",
2162
+ "visibility": "secret",
2163
+ "type": "string"
2164
+ },
2165
+ "password": {
2166
+ "description": "Gitea password used to authenticate requests. This can be either a password\nor a generated access token.",
2167
+ "visibility": "secret",
2168
+ "type": "string"
2169
+ }
2096
2170
  },
2097
- "knexConfig": {
2098
- "description": "Arbitrary config object to pass to knex when initializing\n(https://knexjs.org/#Installation-client). Most notable is the debug\nand asyncStackTraces booleans",
2099
- "type": "object",
2100
- "properties": {},
2101
- "additionalProperties": true
2102
- },
2103
- "skipMigrations": {
2104
- "description": "Skip running database migrations.",
2105
- "type": "boolean"
2171
+ "required": [
2172
+ "host"
2173
+ ]
2174
+ }
2175
+ },
2176
+ "harness": {
2177
+ "description": "Integration configuration for Harness Code",
2178
+ "type": "array",
2179
+ "items": {
2180
+ "type": "object",
2181
+ "properties": {
2182
+ "host": {
2183
+ "description": "The hostname of the given Harness Code instance",
2184
+ "visibility": "frontend",
2185
+ "type": "string"
2186
+ },
2187
+ "apiKey": {
2188
+ "description": "The apikey to use for authenticated requests.",
2189
+ "visibility": "secret",
2190
+ "type": "string"
2191
+ },
2192
+ "token": {
2193
+ "description": "Harness Code token used to authenticate requests. This can be either a generated access token.",
2194
+ "visibility": "secret",
2195
+ "type": "string"
2196
+ }
2106
2197
  },
2107
- "plugin": {
2108
- "description": "Plugin specific database configuration and client override",
2198
+ "required": [
2199
+ "host"
2200
+ ]
2201
+ }
2202
+ }
2203
+ }
2204
+ }
2205
+ },
2206
+ "$schema": "http://json-schema.org/draft-07/schema#"
2207
+ },
2208
+ "packageName": "@backstage/integration"
2209
+ },
2210
+ {
2211
+ "path": "../backend-app-api/config.d.ts",
2212
+ "value": {
2213
+ "type": "object",
2214
+ "properties": {
2215
+ "backend": {
2216
+ "type": "object",
2217
+ "properties": {
2218
+ "packages": {
2219
+ "description": "Used by the feature discovery service",
2220
+ "anyOf": [
2221
+ {
2109
2222
  "type": "object",
2110
- "additionalProperties": {
2111
- "type": "object",
2112
- "properties": {
2113
- "client": {
2114
- "description": "Database client override",
2115
- "enum": [
2116
- "better-sqlite3",
2117
- "pg",
2118
- "sqlite3"
2119
- ],
2223
+ "properties": {
2224
+ "include": {
2225
+ "type": "array",
2226
+ "items": {
2120
2227
  "type": "string"
2121
- },
2122
- "connection": {
2123
- "description": "Database connection string or Knex object override",
2124
- "visibility": "secret",
2125
- "anyOf": [
2126
- {
2127
- "type": "object",
2128
- "properties": {
2129
- "type": {
2130
- "description": "The specific config for cloudsql connections",
2131
- "type": "string",
2132
- "const": "cloudsql"
2133
- },
2134
- "instance": {
2135
- "description": "The instance connection name for the cloudsql instance, e.g. `project:region:instance`",
2136
- "type": "string"
2137
- }
2138
- },
2139
- "required": [
2140
- "instance",
2141
- "type"
2142
- ]
2143
- },
2144
- {
2145
- "type": "object",
2146
- "additionalProperties": {},
2147
- "properties": {
2148
- "password": {
2149
- "description": "Password that belongs to the client User",
2150
- "visibility": "secret",
2151
- "type": "string"
2152
- }
2153
- }
2154
- },
2155
- {
2156
- "type": "string"
2157
- }
2158
- ]
2159
- },
2160
- "ensureExists": {
2161
- "description": "Whether to ensure the given database exists by creating it if it does not.\nDefaults to base config if unspecified.",
2162
- "type": "boolean"
2163
- },
2164
- "ensureSchemaExists": {
2165
- "description": "Whether to ensure the given database schema exists by creating it if it does not.\nDefaults to false if unspecified.\n\nNOTE: Currently only supported by the `pg` client when pluginDivisionMode: schema",
2166
- "type": "boolean"
2167
- },
2168
- "knexConfig": {
2169
- "description": "Arbitrary config object to pass to knex when initializing\n(https://knexjs.org/#Installation-client). Most notable is the\ndebug and asyncStackTraces booleans.\n\nThis is merged recursively into the base knexConfig",
2170
- "type": "object",
2171
- "properties": {},
2172
- "additionalProperties": true
2173
- },
2174
- "role": {
2175
- "description": "Configures the ownership of newly created schemas in pg databases.",
2228
+ }
2229
+ },
2230
+ "exclude": {
2231
+ "type": "array",
2232
+ "items": {
2176
2233
  "type": "string"
2177
- },
2178
- "skipMigrations": {
2179
- "description": "Skip running database migrations.",
2180
- "type": "boolean"
2181
2234
  }
2182
2235
  }
2183
2236
  }
2237
+ },
2238
+ {
2239
+ "const": "all",
2240
+ "type": "string"
2184
2241
  }
2185
- },
2186
- "required": [
2187
- "client",
2188
- "connection"
2189
2242
  ]
2243
+ }
2244
+ }
2245
+ }
2246
+ },
2247
+ "$schema": "http://json-schema.org/draft-07/schema#"
2248
+ },
2249
+ "packageName": "@backstage/backend-app-api"
2250
+ },
2251
+ {
2252
+ "path": "../backend-defaults/config.d.ts",
2253
+ "value": {
2254
+ "type": "object",
2255
+ "properties": {
2256
+ "app": {
2257
+ "type": "object",
2258
+ "properties": {
2259
+ "baseUrl": {
2260
+ "type": "string"
2261
+ }
2262
+ },
2263
+ "required": [
2264
+ "baseUrl"
2265
+ ]
2266
+ },
2267
+ "backend": {
2268
+ "type": "object",
2269
+ "properties": {
2270
+ "baseUrl": {
2271
+ "description": "The full base URL of the backend, as seen from the browser's point of\nview as it makes calls to the backend.",
2272
+ "type": "string"
2190
2273
  },
2191
- "cache": {
2192
- "description": "Cache connection configuration, select cache type using the `store` field",
2193
- "anyOf": [
2194
- {
2195
- "type": "object",
2196
- "properties": {
2197
- "store": {
2198
- "type": "string",
2199
- "const": "memory"
2200
- },
2201
- "defaultTtl": {
2202
- "description": "An optional default TTL (in milliseconds, if given as a number)."
2203
- }
2204
- },
2205
- "required": [
2206
- "store"
2207
- ]
2274
+ "lifecycle": {
2275
+ "type": "object",
2276
+ "properties": {
2277
+ "startupRequestPauseTimeout": {
2278
+ "description": "The maximum time that paused requests will wait for the service to start, before returning an error.\nDefaults to 5 seconds\nSupported formats:\n- A string in the format of '1d', '2 seconds' etc. as supported by the `ms`\n library.\n- A standard ISO formatted duration string, e.g. 'P2DT6H' or 'PT1M'.\n- An object with individual units (in plural) as keys, e.g. `{ days: 2, hours: 6 }`."
2208
2279
  },
2280
+ "serverShutdownDelay": {
2281
+ "description": "The minimum time that the HTTP server will delay the shutdown of the backend. During this delay health checks will be set to failing, allowing traffic to drain.\nDefaults to 0 seconds.\nSupported formats:\n- A string in the format of '1d', '2 seconds' etc. as supported by the `ms`\n library.\n- A standard ISO formatted duration string, e.g. 'P2DT6H' or 'PT1M'.\n- An object with individual units (in plural) as keys, e.g. `{ days: 2, hours: 6 }`."
2282
+ }
2283
+ }
2284
+ },
2285
+ "listen": {
2286
+ "description": "Address that the backend should listen to.",
2287
+ "anyOf": [
2209
2288
  {
2210
2289
  "type": "object",
2211
2290
  "properties": {
2212
- "store": {
2213
- "type": "string",
2214
- "const": "redis"
2215
- },
2216
- "connection": {
2217
- "description": "A redis connection string in the form `redis://user:pass@host:port`.",
2218
- "visibility": "secret",
2291
+ "host": {
2292
+ "description": "Address of the interface that the backend should bind to.",
2219
2293
  "type": "string"
2220
2294
  },
2221
- "defaultTtl": {
2222
- "description": "An optional default TTL (in milliseconds, if given as a number)."
2295
+ "port": {
2296
+ "description": "Port that the backend should listen to.",
2297
+ "type": [
2298
+ "string",
2299
+ "number"
2300
+ ]
2223
2301
  }
2224
- },
2225
- "required": [
2226
- "connection",
2227
- "store"
2228
- ]
2302
+ }
2229
2303
  },
2304
+ {
2305
+ "type": "string"
2306
+ }
2307
+ ]
2308
+ },
2309
+ "https": {
2310
+ "description": "HTTPS configuration for the backend. If omitted the backend will serve HTTP.\n\nSetting this to `true` will cause self-signed certificates to be generated, which\ncan be useful for local development or other non-production scenarios.",
2311
+ "anyOf": [
2230
2312
  {
2231
2313
  "type": "object",
2232
2314
  "properties": {
2233
- "store": {
2234
- "type": "string",
2235
- "const": "memcache"
2236
- },
2237
- "connection": {
2238
- "description": "A memcache connection string in the form `user:pass@host:port`.",
2239
- "visibility": "secret",
2240
- "type": "string"
2241
- },
2242
- "defaultTtl": {
2243
- "description": "An optional default TTL (in milliseconds)."
2315
+ "certificate": {
2316
+ "description": "Certificate configuration",
2317
+ "type": "object",
2318
+ "properties": {
2319
+ "cert": {
2320
+ "description": "PEM encoded certificate. Use $file to load in a file",
2321
+ "type": "string"
2322
+ },
2323
+ "key": {
2324
+ "description": "PEM encoded certificate key. Use $file to load in a file.",
2325
+ "visibility": "secret",
2326
+ "type": "string"
2327
+ }
2328
+ },
2329
+ "required": [
2330
+ "cert",
2331
+ "key"
2332
+ ]
2244
2333
  }
2245
- },
2246
- "required": [
2247
- "connection",
2248
- "store"
2249
- ]
2334
+ }
2335
+ },
2336
+ {
2337
+ "const": true,
2338
+ "type": "boolean"
2250
2339
  }
2251
2340
  ]
2252
2341
  },
2253
- "cors": {
2342
+ "auth": {
2343
+ "description": "Options used by the default auth, httpAuth and userInfo services.",
2254
2344
  "type": "object",
2255
2345
  "properties": {
2256
- "origin": {
2257
- "anyOf": [
2258
- {
2259
- "type": "array",
2260
- "items": {
2261
- "type": "string"
2262
- }
2263
- },
2264
- {
2265
- "type": "string"
2266
- }
2267
- ]
2268
- },
2269
- "methods": {
2270
- "anyOf": [
2271
- {
2272
- "type": "array",
2273
- "items": {
2346
+ "keys": {
2347
+ "description": "Keys shared by all backends for signing and validating backend tokens.",
2348
+ "deprecated": "this will be removed when the backwards compatibility is no longer needed with backend-common",
2349
+ "type": "array",
2350
+ "items": {
2351
+ "type": "object",
2352
+ "properties": {
2353
+ "secret": {
2354
+ "description": "Secret for generating tokens. Should be a base64 string, recommended\nlength is 24 bytes.",
2355
+ "visibility": "secret",
2274
2356
  "type": "string"
2275
2357
  }
2276
2358
  },
2277
- {
2278
- "type": "string"
2279
- }
2280
- ]
2359
+ "required": [
2360
+ "secret"
2361
+ ]
2362
+ }
2281
2363
  },
2282
- "allowedHeaders": {
2283
- "anyOf": [
2284
- {
2285
- "type": "array",
2286
- "items": {
2287
- "type": "string"
2288
- }
2289
- },
2290
- {
2291
- "type": "string"
2292
- }
2293
- ]
2364
+ "dangerouslyDisableDefaultAuthPolicy": {
2365
+ "description": "This disables the otherwise default auth policy, which requires all\nrequests to be authenticated with either user or service credentials.\n\nDisabling this check means that the backend will no longer block\nunauthenticated requests, but instead allow them to pass through to\nplugins.\n\nIf permissions are enabled, unauthenticated requests will be treated\nexactly as such, leaving it to the permission policy to determine what\npermissions should be allowed for an unauthenticated identity. Note\nthat this will also apply to service-to-service calls between plugins\nunless you configure credentials for service calls.",
2366
+ "type": "boolean"
2294
2367
  },
2295
- "exposedHeaders": {
2368
+ "pluginKeyStore": {
2369
+ "description": "Controls how to store keys for plugin-to-plugin auth",
2296
2370
  "anyOf": [
2297
2371
  {
2298
- "type": "array",
2299
- "items": {
2300
- "type": "string"
2301
- }
2372
+ "type": "object",
2373
+ "properties": {
2374
+ "type": {
2375
+ "type": "string",
2376
+ "const": "database"
2377
+ }
2378
+ },
2379
+ "required": [
2380
+ "type"
2381
+ ]
2302
2382
  },
2303
2383
  {
2304
- "type": "string"
2384
+ "type": "object",
2385
+ "properties": {
2386
+ "type": {
2387
+ "type": "string",
2388
+ "const": "static"
2389
+ },
2390
+ "static": {
2391
+ "type": "object",
2392
+ "properties": {
2393
+ "keys": {
2394
+ "description": "Must be declared at least once and the first one will be used for signing.",
2395
+ "type": "array",
2396
+ "items": {
2397
+ "type": "object",
2398
+ "properties": {
2399
+ "publicKeyFile": {
2400
+ "description": "Path to the public key file in the SPKI format. Should be an absolute path.",
2401
+ "type": "string"
2402
+ },
2403
+ "privateKeyFile": {
2404
+ "description": "Path to the matching private key file in the PKCS#8 format. Should be an absolute path.\n\nThe first array entry must specify a private key file, the rest must not.",
2405
+ "type": "string"
2406
+ },
2407
+ "keyId": {
2408
+ "description": "ID to uniquely identify this key within the JWK set.",
2409
+ "type": "string"
2410
+ },
2411
+ "algorithm": {
2412
+ "description": "JWS \"alg\" (Algorithm) Header Parameter value. Defaults to ES256.\nMust match the algorithm used to generate the keys in the provided files",
2413
+ "type": "string"
2414
+ }
2415
+ },
2416
+ "required": [
2417
+ "keyId",
2418
+ "publicKeyFile"
2419
+ ]
2420
+ }
2421
+ }
2422
+ },
2423
+ "required": [
2424
+ "keys"
2425
+ ]
2426
+ }
2427
+ },
2428
+ "required": [
2429
+ "static",
2430
+ "type"
2431
+ ]
2305
2432
  }
2306
2433
  ]
2307
2434
  },
2308
- "credentials": {
2309
- "type": "boolean"
2310
- },
2311
- "maxAge": {
2312
- "type": "number"
2313
- },
2314
- "preflightContinue": {
2315
- "type": "boolean"
2316
- },
2317
- "optionsSuccessStatus": {
2318
- "type": "number"
2319
- }
2320
- }
2321
- },
2322
- "csp": {
2323
- "description": "Content Security Policy options.\n\nThe keys are the plain policy ID, e.g. \"upgrade-insecure-requests\". The\nvalues are on the format that the helmet library expects them, as an\narray of strings. There is also the special value false, which means to\nremove the default value that Backstage puts in place for that policy.",
2324
- "type": "object",
2325
- "additionalProperties": {
2326
- "anyOf": [
2327
- {
2328
- "type": "array",
2329
- "items": {
2330
- "type": "string"
2331
- }
2332
- },
2333
- {
2334
- "const": false,
2335
- "type": "boolean"
2336
- }
2337
- ]
2338
- }
2339
- },
2340
- "health": {
2341
- "description": "Options for the health check service and endpoint.",
2342
- "type": "object",
2343
- "properties": {
2344
- "headers": {
2345
- "description": "Additional headers to always include in the health check response.\n\nIt can be a good idea to set a header that uniquely identifies your service\nin a multi-service environment. This ensures that the health check that is\nconfigured for your service is actually hitting your service and not another.\n\nFor example, if using Envoy you can use the `service_name_matcher` configuration\nand set the `x-envoy-upstream-healthchecked-cluster` header to a matching value.",
2346
- "type": "object",
2347
- "additionalProperties": {
2348
- "type": "string"
2349
- }
2350
- }
2351
- }
2352
- },
2353
- "reading": {
2354
- "description": "Configuration related to URL reading, used for example for reading catalog info\nfiles, scaffolder templates, and techdocs content.",
2355
- "type": "object",
2356
- "properties": {
2357
- "allow": {
2358
- "description": "A list of targets to allow outgoing requests to. Users will be able to make\nrequests on behalf of the backend to the targets that are allowed by this list.",
2435
+ "externalAccess": {
2436
+ "description": "Configures methods of external access, ie ways for callers outside of\nthe Backstage ecosystem to get authorized for access to APIs that do\nnot permit unauthorized access.",
2359
2437
  "type": "array",
2360
2438
  "items": {
2361
- "type": "object",
2362
- "properties": {
2363
- "host": {
2364
- "description": "A host to allow outgoing requests to, being either a full host or\na subdomain wildcard pattern with a leading `*`. For example `example.com`\nand `*.example.com` are valid values, `prod.*.example.com` is not.\nThe host may also contain a port, for example `example.com:8080`.",
2365
- "type": "string"
2439
+ "anyOf": [
2440
+ {
2441
+ "type": "object",
2442
+ "properties": {
2443
+ "type": {
2444
+ "description": "This is the legacy service-to-service access method, where a set\nof static keys were shared among plugins and used for symmetric\nsigning and verification. These correspond to the old\n`backend.auth.keys` set and retain their behavior for backwards\ncompatibility. Please migrate to other access methods when\npossible.\n\nCallers generate JWT tokens with the following payload:\n\n```json\n{\n \"sub\": \"backstage-plugin\",\n \"exp\": <epoch seconds one hour in the future>\n}\n```\n\nAnd sign them with HS256, using the base64 decoded secret. The\ntokens are then passed along with requests in the Authorization\nheader:\n\n```\nAuthorization: Bearer eyJhbGciOiJIUzI...\n```",
2445
+ "type": "string",
2446
+ "const": "legacy"
2447
+ },
2448
+ "options": {
2449
+ "type": "object",
2450
+ "properties": {
2451
+ "secret": {
2452
+ "description": "Any set of base64 encoded random bytes to be used as both the\nsigning and verification key. Should be sufficiently long so as\nnot to be easy to guess by brute force.\n\nCan be generated eg using\n\n```sh\nnode -p 'require(\"crypto\").randomBytes(24).toString(\"base64\")'\n```",
2453
+ "visibility": "secret",
2454
+ "type": "string"
2455
+ },
2456
+ "subject": {
2457
+ "description": "Sets the subject of the principal, when matching this token.\nUseful for debugging and tracking purposes.",
2458
+ "type": "string"
2459
+ }
2460
+ },
2461
+ "required": [
2462
+ "secret",
2463
+ "subject"
2464
+ ]
2465
+ },
2466
+ "accessRestrictions": {
2467
+ "description": "Restricts what types of access that are permitted for this access\nmethod. If no access restrictions are given, it'll have unlimited\naccess. This access restriction applies for the framework level;\nindividual plugins may have their own access control mechanisms\non top of this.",
2468
+ "type": "array",
2469
+ "items": {
2470
+ "type": "object",
2471
+ "properties": {
2472
+ "plugin": {
2473
+ "description": "Permit access to make requests to this plugin.\n\nCan be further refined by setting additional fields below.",
2474
+ "type": "string"
2475
+ },
2476
+ "permission": {
2477
+ "description": "If given, this method is limited to only performing actions\nwith these named permissions in this plugin.\n\nNote that this only applies where permissions checks are\nenabled in the first place. Endpoints that are not protected by\nthe permissions system at all, are not affected by this\nsetting.",
2478
+ "anyOf": [
2479
+ {
2480
+ "type": "array",
2481
+ "items": {
2482
+ "type": "string"
2483
+ }
2484
+ },
2485
+ {
2486
+ "type": "string"
2487
+ }
2488
+ ]
2489
+ },
2490
+ "permissionAttribute": {
2491
+ "description": "If given, this method is limited to only performing actions\nwhose permissions have these attributes.\n\nNote that this only applies where permissions checks are\nenabled in the first place. Endpoints that are not protected by\nthe permissions system at all, are not affected by this\nsetting.",
2492
+ "type": "object",
2493
+ "properties": {
2494
+ "action": {
2495
+ "description": "One of more of 'create', 'read', 'update', or 'delete'.",
2496
+ "anyOf": [
2497
+ {
2498
+ "type": "array",
2499
+ "items": {
2500
+ "type": "string"
2501
+ }
2502
+ },
2503
+ {
2504
+ "type": "string"
2505
+ }
2506
+ ]
2507
+ }
2508
+ }
2509
+ }
2510
+ },
2511
+ "required": [
2512
+ "plugin"
2513
+ ]
2514
+ }
2515
+ }
2516
+ },
2517
+ "required": [
2518
+ "options",
2519
+ "type"
2520
+ ]
2366
2521
  },
2367
- "paths": {
2368
- "description": "An optional list of paths. In case they are present only targets matching\nany of them will are allowed. You can use trailing slashes to make sure only\nsubdirectories are allowed, for example `/mydir/` will allow targets with\npaths like `/mydir/a` but will block paths like `/mydir2`.",
2369
- "type": "array",
2370
- "items": {
2371
- "type": "string"
2372
- }
2373
- }
2374
- },
2375
- "required": [
2376
- "host"
2377
- ]
2378
- }
2379
- }
2380
- }
2381
- }
2382
- },
2383
- "required": [
2384
- "baseUrl",
2385
- "database"
2386
- ]
2387
- },
2388
- "discovery": {
2389
- "description": "Options used by the default discovery service.",
2390
- "type": "object",
2391
- "properties": {
2392
- "endpoints": {
2393
- "description": "A list of target baseUrls and the associated plugins.",
2394
- "type": "array",
2395
- "items": {
2396
- "type": "object",
2397
- "properties": {
2398
- "target": {
2399
- "description": "The target base URL to use for the plugin.\n\nCan be either a string or an object with internal and external keys.\nTargets with `{{pluginId}}` or `{{ pluginId }} in the URL will be replaced with the plugin ID.",
2400
- "anyOf": [
2401
2522
  {
2402
2523
  "type": "object",
2403
2524
  "properties": {
2404
- "internal": {
2405
- "type": "string"
2525
+ "type": {
2526
+ "description": "This access method consists of random static tokens that can be\nhanded out to callers.\n\nThe tokens are then passed along verbatim with requests in the\nAuthorization header:\n\n```\nAuthorization: Bearer eZv5o+fW3KnR3kVabMW4ZcDNLPl8nmMW\n```",
2527
+ "type": "string",
2528
+ "const": "static"
2406
2529
  },
2407
- "external": {
2408
- "type": "string"
2530
+ "options": {
2531
+ "type": "object",
2532
+ "properties": {
2533
+ "token": {
2534
+ "description": "A raw token that can be any string, but for security reasons\nshould be sufficiently long so as not to be easy to guess by\nbrute force.\n\nCan be generated eg using\n\n```sh\nnode -p 'require(\"crypto\").randomBytes(24).toString(\"base64\")'\n```\n\nSince the tokens can be any string, you are free to add\nadditional identifying data to them if you like. For example,\nadding a `freben-local-dev-` prefix for debugging purposes to a\ntoken that you know will be handed out for use as a personal\naccess token during development.",
2535
+ "visibility": "secret",
2536
+ "type": "string"
2537
+ },
2538
+ "subject": {
2539
+ "description": "Sets the subject of the principal, when matching this token.\nUseful for debugging and tracking purposes.",
2540
+ "type": "string"
2541
+ }
2542
+ },
2543
+ "required": [
2544
+ "subject",
2545
+ "token"
2546
+ ]
2547
+ },
2548
+ "accessRestrictions": {
2549
+ "description": "Restricts what types of access that are permitted for this access\nmethod. If no access restrictions are given, it'll have unlimited\naccess. This access restriction applies for the framework level;\nindividual plugins may have their own access control mechanisms\non top of this.",
2550
+ "type": "array",
2551
+ "items": {
2552
+ "type": "object",
2553
+ "properties": {
2554
+ "plugin": {
2555
+ "description": "Permit access to make requests to this plugin.\n\nCan be further refined by setting additional fields below.",
2556
+ "type": "string"
2557
+ },
2558
+ "permission": {
2559
+ "description": "If given, this method is limited to only performing actions\nwith these named permissions in this plugin.\n\nNote that this only applies where permissions checks are\nenabled in the first place. Endpoints that are not protected by\nthe permissions system at all, are not affected by this\nsetting.",
2560
+ "anyOf": [
2561
+ {
2562
+ "type": "array",
2563
+ "items": {
2564
+ "type": "string"
2565
+ }
2566
+ },
2567
+ {
2568
+ "type": "string"
2569
+ }
2570
+ ]
2571
+ },
2572
+ "permissionAttribute": {
2573
+ "description": "If given, this method is limited to only performing actions\nwhose permissions have these attributes.\n\nNote that this only applies where permissions checks are\nenabled in the first place. Endpoints that are not protected by\nthe permissions system at all, are not affected by this\nsetting.",
2574
+ "type": "object",
2575
+ "properties": {
2576
+ "action": {
2577
+ "description": "One of more of 'create', 'read', 'update', or 'delete'.",
2578
+ "anyOf": [
2579
+ {
2580
+ "type": "array",
2581
+ "items": {
2582
+ "type": "string"
2583
+ }
2584
+ },
2585
+ {
2586
+ "type": "string"
2587
+ }
2588
+ ]
2589
+ }
2590
+ }
2591
+ }
2592
+ },
2593
+ "required": [
2594
+ "plugin"
2595
+ ]
2596
+ }
2409
2597
  }
2410
2598
  },
2411
2599
  "required": [
2412
- "external",
2413
- "internal"
2600
+ "options",
2601
+ "type"
2414
2602
  ]
2415
2603
  },
2416
2604
  {
2417
- "type": "string"
2418
- }
2419
- ]
2420
- },
2421
- "plugins": {
2422
- "description": "Array of plugins which use the target base URL.",
2423
- "type": "array",
2424
- "items": {
2425
- "type": "string"
2426
- }
2427
- }
2428
- },
2429
- "required": [
2430
- "plugins",
2431
- "target"
2432
- ]
2433
- }
2434
- }
2435
- },
2436
- "required": [
2437
- "endpoints"
2438
- ]
2439
- }
2440
- },
2441
- "required": [
2442
- "app"
2443
- ],
2444
- "$schema": "http://json-schema.org/draft-07/schema#"
2445
- }
2446
- },
2447
- {
2448
- "path": "../../plugins/events-node/config.d.ts",
2449
- "value": {
2450
- "type": "object",
2451
- "properties": {
2452
- "events": {
2453
- "type": "object",
2454
- "properties": {
2455
- "useEventBus": {
2456
- "description": "Whether to use the event bus API in the events plugin backend to\ndistribute events across multiple instances when publishing and\nsubscribing to events.\n\nThe default is 'auto', which means means that the event bus API will be\nused if it's available, but will be disabled if the events backend\nreturns a 404.\n\nIf set to 'never', the events service will only ever publish events\nlocally to the same instance, while if set to 'always', the event bus API\nwill never be disabled, even if the events backend returns a 404.",
2457
- "enum": [
2458
- "always",
2459
- "auto",
2460
- "never"
2461
- ],
2462
- "type": "string"
2463
- }
2464
- }
2465
- }
2466
- },
2467
- "$schema": "http://json-schema.org/draft-07/schema#"
2468
- }
2469
- },
2470
- {
2471
- "path": "../../node_modules/@backstage/backend-common/config.d.ts",
2472
- "value": {
2473
- "type": "object",
2474
- "properties": {
2475
- "app": {
2476
- "type": "object",
2477
- "properties": {
2478
- "baseUrl": {
2479
- "type": "string"
2480
- }
2481
- },
2482
- "required": [
2483
- "baseUrl"
2484
- ]
2485
- },
2486
- "backend": {
2487
- "type": "object",
2488
- "properties": {
2489
- "auth": {
2490
- "description": "Backend configuration for when request authentication is enabled",
2491
- "type": "object",
2492
- "properties": {
2493
- "keys": {
2494
- "description": "Keys shared by all backends for signing and validating backend tokens.",
2495
- "type": "array",
2496
- "items": {
2497
- "type": "object",
2498
- "properties": {
2499
- "secret": {
2500
- "description": "Secret for generating tokens. Should be a base64 string, recommended\nlength is 24 bytes.",
2501
- "visibility": "secret",
2502
- "type": "string"
2605
+ "type": "object",
2606
+ "properties": {
2607
+ "type": {
2608
+ "description": "This access method consists of a JWKS endpoint that can be used to\nverify JWT tokens.\n\nCallers generate JWT tokens via 3rd party tooling\nand pass them in the Authorization header:\n\n```\nAuthorization: Bearer eZv5o+fW3KnR3kVabMW4ZcDNLPl8nmMW\n```",
2609
+ "type": "string",
2610
+ "const": "jwks"
2611
+ },
2612
+ "options": {
2613
+ "type": "object",
2614
+ "properties": {
2615
+ "url": {
2616
+ "description": "The full URL of the JWKS endpoint.",
2617
+ "type": "string"
2618
+ },
2619
+ "algorithm": {
2620
+ "description": "Sets the algorithm(s) that should be used to verify the JWT tokens.\nThe passed JWTs must have been signed using one of the listed algorithms.",
2621
+ "anyOf": [
2622
+ {
2623
+ "type": "array",
2624
+ "items": {
2625
+ "type": "string"
2626
+ }
2627
+ },
2628
+ {
2629
+ "type": "string"
2630
+ }
2631
+ ]
2632
+ },
2633
+ "issuer": {
2634
+ "description": "Sets the issuer(s) that should be used to verify the JWT tokens.\nPassed JWTs must have an `iss` claim which matches one of the specified issuers.",
2635
+ "anyOf": [
2636
+ {
2637
+ "type": "array",
2638
+ "items": {
2639
+ "type": "string"
2640
+ }
2641
+ },
2642
+ {
2643
+ "type": "string"
2644
+ }
2645
+ ]
2646
+ },
2647
+ "audience": {
2648
+ "description": "Sets the audience(s) that should be used to verify the JWT tokens.\nThe passed JWTs must have an \"aud\" claim that matches one of the audiences specified,\nor have no audience specified.",
2649
+ "anyOf": [
2650
+ {
2651
+ "type": "array",
2652
+ "items": {
2653
+ "type": "string"
2654
+ }
2655
+ },
2656
+ {
2657
+ "type": "string"
2658
+ }
2659
+ ]
2660
+ },
2661
+ "subjectPrefix": {
2662
+ "description": "Sets an optional subject prefix. Passes the subject to called plugins.\nUseful for debugging and tracking purposes.",
2663
+ "type": "string"
2664
+ }
2665
+ },
2666
+ "required": [
2667
+ "url"
2668
+ ]
2669
+ },
2670
+ "accessRestrictions": {
2671
+ "description": "Restricts what types of access that are permitted for this access\nmethod. If no access restrictions are given, it'll have unlimited\naccess. This access restriction applies for the framework level;\nindividual plugins may have their own access control mechanisms\non top of this.",
2672
+ "type": "array",
2673
+ "items": {
2674
+ "type": "object",
2675
+ "properties": {
2676
+ "plugin": {
2677
+ "description": "Permit access to make requests to this plugin.\n\nCan be further refined by setting additional fields below.",
2678
+ "type": "string"
2679
+ },
2680
+ "permission": {
2681
+ "description": "If given, this method is limited to only performing actions\nwith these named permissions in this plugin.\n\nNote that this only applies where permissions checks are\nenabled in the first place. Endpoints that are not protected by\nthe permissions system at all, are not affected by this\nsetting.",
2682
+ "anyOf": [
2683
+ {
2684
+ "type": "array",
2685
+ "items": {
2686
+ "type": "string"
2687
+ }
2688
+ },
2689
+ {
2690
+ "type": "string"
2691
+ }
2692
+ ]
2693
+ },
2694
+ "permissionAttribute": {
2695
+ "description": "If given, this method is limited to only performing actions\nwhose permissions have these attributes.\n\nNote that this only applies where permissions checks are\nenabled in the first place. Endpoints that are not protected by\nthe permissions system at all, are not affected by this\nsetting.",
2696
+ "type": "object",
2697
+ "properties": {
2698
+ "action": {
2699
+ "description": "One of more of 'create', 'read', 'update', or 'delete'.",
2700
+ "anyOf": [
2701
+ {
2702
+ "type": "array",
2703
+ "items": {
2704
+ "type": "string"
2705
+ }
2706
+ },
2707
+ {
2708
+ "type": "string"
2709
+ }
2710
+ ]
2711
+ }
2712
+ }
2713
+ }
2714
+ },
2715
+ "required": [
2716
+ "plugin"
2717
+ ]
2718
+ }
2719
+ }
2720
+ },
2721
+ "required": [
2722
+ "options",
2723
+ "type"
2724
+ ]
2503
2725
  }
2504
- },
2505
- "required": [
2506
- "secret"
2507
2726
  ]
2508
2727
  }
2509
2728
  }
2510
2729
  }
2511
2730
  },
2512
- "baseUrl": {
2513
- "type": "string"
2514
- },
2515
- "listen": {
2516
- "description": "Address that the backend should listen to.",
2517
- "anyOf": [
2518
- {
2519
- "type": "object",
2520
- "properties": {
2521
- "host": {
2522
- "description": "Address of the interface that the backend should bind to.",
2523
- "type": "string"
2524
- },
2525
- "port": {
2526
- "description": "Port that the backend should listen to.",
2527
- "type": [
2528
- "string",
2529
- "number"
2530
- ]
2531
- }
2532
- }
2533
- },
2534
- {
2535
- "type": "string"
2536
- }
2537
- ]
2538
- },
2539
- "https": {
2540
- "description": "HTTPS configuration for the backend. If omitted the backend will serve HTTP.\n\nSetting this to `true` will cause self-signed certificates to be generated, which\ncan be useful for local development or other non-production scenarios.",
2541
- "anyOf": [
2542
- {
2543
- "type": "object",
2544
- "properties": {
2545
- "certificate": {
2546
- "description": "Certificate configuration",
2547
- "type": "object",
2548
- "properties": {
2549
- "cert": {
2550
- "description": "PEM encoded certificate. Use $file to load in a file",
2551
- "type": "string"
2552
- },
2553
- "key": {
2554
- "description": "PEM encoded certificate key. Use $file to load in a file.",
2555
- "visibility": "secret",
2556
- "type": "string"
2557
- }
2558
- },
2559
- "required": [
2560
- "cert",
2561
- "key"
2562
- ]
2563
- }
2564
- }
2565
- },
2566
- {
2567
- "const": true,
2568
- "type": "boolean"
2569
- }
2570
- ]
2571
- },
2572
- "workingDirectory": {
2573
- "description": "An absolute path to a directory that can be used as a working dir, for\nexample as scratch space for large operations.",
2574
- "type": "string"
2575
- },
2576
2731
  "database": {
2577
2732
  "description": "Database connection configuration, select base database type using the `client` field",
2578
2733
  "type": "object",
@@ -2590,6 +2745,24 @@
2590
2745
  "description": "Base database connection string, or object with individual connection properties",
2591
2746
  "visibility": "secret",
2592
2747
  "anyOf": [
2748
+ {
2749
+ "type": "object",
2750
+ "properties": {
2751
+ "type": {
2752
+ "description": "The specific config for cloudsql connections",
2753
+ "type": "string",
2754
+ "const": "cloudsql"
2755
+ },
2756
+ "instance": {
2757
+ "description": "The instance connection name for the cloudsql instance, e.g. `project:region:instance`",
2758
+ "type": "string"
2759
+ }
2760
+ },
2761
+ "required": [
2762
+ "instance",
2763
+ "type"
2764
+ ]
2765
+ },
2593
2766
  {
2594
2767
  "type": "object",
2595
2768
  "additionalProperties": {},
@@ -2637,6 +2810,10 @@
2637
2810
  "properties": {},
2638
2811
  "additionalProperties": true
2639
2812
  },
2813
+ "skipMigrations": {
2814
+ "description": "Skip running database migrations.",
2815
+ "type": "boolean"
2816
+ },
2640
2817
  "plugin": {
2641
2818
  "description": "Plugin specific database configuration and client override",
2642
2819
  "type": "object",
@@ -2658,8 +2835,32 @@
2658
2835
  "anyOf": [
2659
2836
  {
2660
2837
  "type": "object",
2661
- "properties": {},
2662
- "additionalProperties": true
2838
+ "properties": {
2839
+ "type": {
2840
+ "description": "The specific config for cloudsql connections",
2841
+ "type": "string",
2842
+ "const": "cloudsql"
2843
+ },
2844
+ "instance": {
2845
+ "description": "The instance connection name for the cloudsql instance, e.g. `project:region:instance`",
2846
+ "type": "string"
2847
+ }
2848
+ },
2849
+ "required": [
2850
+ "instance",
2851
+ "type"
2852
+ ]
2853
+ },
2854
+ {
2855
+ "type": "object",
2856
+ "additionalProperties": {},
2857
+ "properties": {
2858
+ "password": {
2859
+ "description": "Password that belongs to the client User",
2860
+ "visibility": "secret",
2861
+ "type": "string"
2862
+ }
2863
+ }
2663
2864
  },
2664
2865
  {
2665
2866
  "type": "string"
@@ -2683,6 +2884,10 @@
2683
2884
  "role": {
2684
2885
  "description": "Configures the ownership of newly created schemas in pg databases.",
2685
2886
  "type": "string"
2887
+ },
2888
+ "skipMigrations": {
2889
+ "description": "Skip running database migrations.",
2890
+ "type": "boolean"
2686
2891
  }
2687
2892
  }
2688
2893
  }
@@ -2704,7 +2909,7 @@
2704
2909
  "const": "memory"
2705
2910
  },
2706
2911
  "defaultTtl": {
2707
- "description": "An optional default TTL (in milliseconds)."
2912
+ "description": "An optional default TTL (in milliseconds, if given as a number)."
2708
2913
  }
2709
2914
  },
2710
2915
  "required": [
@@ -2724,11 +2929,7 @@
2724
2929
  "type": "string"
2725
2930
  },
2726
2931
  "defaultTtl": {
2727
- "description": "An optional default TTL (in milliseconds)."
2728
- },
2729
- "useRedisSets": {
2730
- "description": "Whether or not [useRedisSets](https://github.com/jaredwray/keyv/tree/main/packages/redis#useredissets) should be configured to this redis cache.\nDefaults to true if unspecified.",
2731
- "type": "boolean"
2932
+ "description": "An optional default TTL (in milliseconds, if given as a number)."
2732
2933
  }
2733
2934
  },
2734
2935
  "required": [
@@ -2760,7 +2961,6 @@
2760
2961
  ]
2761
2962
  },
2762
2963
  "cors": {
2763
- "description": "Properties returned upon CORS requests to the backend, including the app-backend.",
2764
2964
  "type": "object",
2765
2965
  "properties": {
2766
2966
  "origin": {
@@ -2847,6 +3047,19 @@
2847
3047
  ]
2848
3048
  }
2849
3049
  },
3050
+ "health": {
3051
+ "description": "Options for the health check service and endpoint.",
3052
+ "type": "object",
3053
+ "properties": {
3054
+ "headers": {
3055
+ "description": "Additional headers to always include in the health check response.\n\nIt can be a good idea to set a header that uniquely identifies your service\nin a multi-service environment. This ensures that the health check that is\nconfigured for your service is actually hitting your service and not another.\n\nFor example, if using Envoy you can use the `service_name_matcher` configuration\nand set the `x-envoy-upstream-healthchecked-cluster` header to a matching value.",
3056
+ "type": "object",
3057
+ "additionalProperties": {
3058
+ "type": "string"
3059
+ }
3060
+ }
3061
+ }
3062
+ },
2850
3063
  "reading": {
2851
3064
  "description": "Configuration related to URL reading, used for example for reading catalog info\nfiles, scaffolder templates, and techdocs content.",
2852
3065
  "type": "object",
@@ -2873,23 +3086,98 @@
2873
3086
  "host"
2874
3087
  ]
2875
3088
  }
2876
- }
3089
+ }
3090
+ }
3091
+ }
3092
+ },
3093
+ "required": [
3094
+ "baseUrl",
3095
+ "database"
3096
+ ]
3097
+ },
3098
+ "discovery": {
3099
+ "description": "Options used by the default discovery service.",
3100
+ "type": "object",
3101
+ "properties": {
3102
+ "endpoints": {
3103
+ "description": "A list of target baseUrls and the associated plugins.",
3104
+ "type": "array",
3105
+ "items": {
3106
+ "type": "object",
3107
+ "properties": {
3108
+ "target": {
3109
+ "description": "The target base URL to use for the plugin.\n\nCan be either a string or an object with internal and external keys.\nTargets with `{{pluginId}}` or `{{ pluginId }} in the URL will be replaced with the plugin ID.",
3110
+ "anyOf": [
3111
+ {
3112
+ "type": "object",
3113
+ "properties": {
3114
+ "internal": {
3115
+ "type": "string"
3116
+ },
3117
+ "external": {
3118
+ "type": "string"
3119
+ }
3120
+ },
3121
+ "required": [
3122
+ "external",
3123
+ "internal"
3124
+ ]
3125
+ },
3126
+ {
3127
+ "type": "string"
3128
+ }
3129
+ ]
3130
+ },
3131
+ "plugins": {
3132
+ "description": "Array of plugins which use the target base URL.",
3133
+ "type": "array",
3134
+ "items": {
3135
+ "type": "string"
3136
+ }
3137
+ }
3138
+ },
3139
+ "required": [
3140
+ "plugins",
3141
+ "target"
3142
+ ]
2877
3143
  }
2878
3144
  }
2879
3145
  },
2880
3146
  "required": [
2881
- "baseUrl",
2882
- "database",
2883
- "listen"
3147
+ "endpoints"
2884
3148
  ]
2885
3149
  }
2886
3150
  },
2887
3151
  "required": [
2888
- "app",
2889
- "backend"
3152
+ "app"
2890
3153
  ],
2891
3154
  "$schema": "http://json-schema.org/draft-07/schema#"
2892
- }
3155
+ },
3156
+ "packageName": "@backstage/backend-defaults"
3157
+ },
3158
+ {
3159
+ "path": "../../plugins/events-node/config.d.ts",
3160
+ "value": {
3161
+ "type": "object",
3162
+ "properties": {
3163
+ "events": {
3164
+ "type": "object",
3165
+ "properties": {
3166
+ "useEventBus": {
3167
+ "description": "Whether to use the event bus API in the events plugin backend to\ndistribute events across multiple instances when publishing and\nsubscribing to events.\n\nThe default is 'auto', which means means that the event bus API will be\nused if it's available, but will be disabled if the events backend\nreturns a 404.\n\nIf set to 'never', the events service will only ever publish events\nlocally to the same instance, while if set to 'always', the event bus API\nwill never be disabled, even if the events backend returns a 404.",
3168
+ "enum": [
3169
+ "always",
3170
+ "auto",
3171
+ "never"
3172
+ ],
3173
+ "type": "string"
3174
+ }
3175
+ }
3176
+ }
3177
+ },
3178
+ "$schema": "http://json-schema.org/draft-07/schema#"
3179
+ },
3180
+ "packageName": "@backstage/plugin-events-node"
2893
3181
  },
2894
3182
  {
2895
3183
  "path": "../../plugins/auth-backend-module-atlassian-provider/config.d.ts",
@@ -3004,7 +3292,8 @@
3004
3292
  }
3005
3293
  },
3006
3294
  "$schema": "http://json-schema.org/draft-07/schema#"
3007
- }
3295
+ },
3296
+ "packageName": "@backstage/plugin-auth-backend-module-atlassian-provider"
3008
3297
  },
3009
3298
  {
3010
3299
  "path": "../../plugins/auth-backend-module-auth0-provider/config.d.ts",
@@ -3059,7 +3348,8 @@
3059
3348
  }
3060
3349
  },
3061
3350
  "$schema": "http://json-schema.org/draft-07/schema#"
3062
- }
3351
+ },
3352
+ "packageName": "@backstage/plugin-auth-backend-module-auth0-provider"
3063
3353
  },
3064
3354
  {
3065
3355
  "path": "../../plugins/auth-backend-module-bitbucket-provider/config.d.ts",
@@ -3168,53 +3458,8 @@
3168
3458
  }
3169
3459
  },
3170
3460
  "$schema": "http://json-schema.org/draft-07/schema#"
3171
- }
3172
- },
3173
- {
3174
- "path": "../../plugins/auth-backend-module-bitbucket-server-provider/config.d.ts",
3175
- "value": {
3176
- "type": "object",
3177
- "properties": {
3178
- "auth": {
3179
- "type": "object",
3180
- "properties": {
3181
- "providers": {
3182
- "type": "object",
3183
- "properties": {
3184
- "bitbucketServer": {
3185
- "visibility": "frontend",
3186
- "type": "object",
3187
- "additionalProperties": {
3188
- "type": "object",
3189
- "properties": {
3190
- "clientId": {
3191
- "type": "string"
3192
- },
3193
- "clientSecret": {
3194
- "visibility": "secret",
3195
- "type": "string"
3196
- },
3197
- "host": {
3198
- "type": "string"
3199
- },
3200
- "callbackUrl": {
3201
- "type": "string"
3202
- }
3203
- },
3204
- "required": [
3205
- "clientId",
3206
- "clientSecret",
3207
- "host"
3208
- ]
3209
- }
3210
- }
3211
- }
3212
- }
3213
- }
3214
- }
3215
- },
3216
- "$schema": "http://json-schema.org/draft-07/schema#"
3217
- }
3461
+ },
3462
+ "packageName": "@backstage/plugin-auth-backend-module-bitbucket-provider"
3218
3463
  },
3219
3464
  {
3220
3465
  "path": "../../plugins/auth-backend-module-cloudflare-access-provider/config.d.ts",
@@ -3318,7 +3563,55 @@
3318
3563
  }
3319
3564
  },
3320
3565
  "$schema": "http://json-schema.org/draft-07/schema#"
3321
- }
3566
+ },
3567
+ "packageName": "@backstage/plugin-auth-backend-module-cloudflare-access-provider"
3568
+ },
3569
+ {
3570
+ "path": "../../plugins/auth-backend-module-bitbucket-server-provider/config.d.ts",
3571
+ "value": {
3572
+ "type": "object",
3573
+ "properties": {
3574
+ "auth": {
3575
+ "type": "object",
3576
+ "properties": {
3577
+ "providers": {
3578
+ "type": "object",
3579
+ "properties": {
3580
+ "bitbucketServer": {
3581
+ "visibility": "frontend",
3582
+ "type": "object",
3583
+ "additionalProperties": {
3584
+ "type": "object",
3585
+ "properties": {
3586
+ "clientId": {
3587
+ "type": "string"
3588
+ },
3589
+ "clientSecret": {
3590
+ "visibility": "secret",
3591
+ "type": "string"
3592
+ },
3593
+ "host": {
3594
+ "type": "string"
3595
+ },
3596
+ "callbackUrl": {
3597
+ "type": "string"
3598
+ }
3599
+ },
3600
+ "required": [
3601
+ "clientId",
3602
+ "clientSecret",
3603
+ "host"
3604
+ ]
3605
+ }
3606
+ }
3607
+ }
3608
+ }
3609
+ }
3610
+ }
3611
+ },
3612
+ "$schema": "http://json-schema.org/draft-07/schema#"
3613
+ },
3614
+ "packageName": "@backstage/plugin-auth-backend-module-bitbucket-server-provider"
3322
3615
  },
3323
3616
  {
3324
3617
  "path": "../../plugins/auth-backend-module-gcp-iap-provider/config.d.ts",
@@ -3423,7 +3716,8 @@
3423
3716
  }
3424
3717
  },
3425
3718
  "$schema": "http://json-schema.org/draft-07/schema#"
3426
- }
3719
+ },
3720
+ "packageName": "@backstage/plugin-auth-backend-module-gcp-iap-provider"
3427
3721
  },
3428
3722
  {
3429
3723
  "path": "../../plugins/auth-backend-module-github-provider/config.d.ts",
@@ -3538,7 +3832,8 @@
3538
3832
  }
3539
3833
  },
3540
3834
  "$schema": "http://json-schema.org/draft-07/schema#"
3541
- }
3835
+ },
3836
+ "packageName": "@backstage/plugin-auth-backend-module-github-provider"
3542
3837
  },
3543
3838
  {
3544
3839
  "path": "../../plugins/auth-backend-module-gitlab-provider/config.d.ts",
@@ -3564,9 +3859,123 @@
3564
3859
  "visibility": "secret",
3565
3860
  "type": "string"
3566
3861
  },
3567
- "audience": {
3568
- "type": "string"
3569
- },
3862
+ "audience": {
3863
+ "type": "string"
3864
+ },
3865
+ "callbackUrl": {
3866
+ "type": "string"
3867
+ },
3868
+ "additionalScopes": {
3869
+ "anyOf": [
3870
+ {
3871
+ "type": "array",
3872
+ "items": {
3873
+ "type": "string"
3874
+ }
3875
+ },
3876
+ {
3877
+ "type": "string"
3878
+ }
3879
+ ]
3880
+ },
3881
+ "signIn": {
3882
+ "type": "object",
3883
+ "properties": {
3884
+ "resolvers": {
3885
+ "type": "array",
3886
+ "items": {
3887
+ "anyOf": [
3888
+ {
3889
+ "type": "object",
3890
+ "properties": {
3891
+ "resolver": {
3892
+ "type": "string",
3893
+ "const": "usernameMatchingUserEntityName"
3894
+ }
3895
+ },
3896
+ "required": [
3897
+ "resolver"
3898
+ ]
3899
+ },
3900
+ {
3901
+ "type": "object",
3902
+ "properties": {
3903
+ "resolver": {
3904
+ "type": "string",
3905
+ "const": "emailLocalPartMatchingUserEntityName"
3906
+ },
3907
+ "allowedDomains": {
3908
+ "type": "array",
3909
+ "items": {
3910
+ "type": "string"
3911
+ }
3912
+ }
3913
+ },
3914
+ "required": [
3915
+ "resolver"
3916
+ ]
3917
+ },
3918
+ {
3919
+ "type": "object",
3920
+ "properties": {
3921
+ "resolver": {
3922
+ "type": "string",
3923
+ "const": "emailMatchingUserEntityProfileEmail"
3924
+ }
3925
+ },
3926
+ "required": [
3927
+ "resolver"
3928
+ ]
3929
+ }
3930
+ ]
3931
+ }
3932
+ }
3933
+ },
3934
+ "required": [
3935
+ "resolvers"
3936
+ ]
3937
+ }
3938
+ },
3939
+ "required": [
3940
+ "clientId",
3941
+ "clientSecret"
3942
+ ]
3943
+ }
3944
+ }
3945
+ }
3946
+ }
3947
+ }
3948
+ }
3949
+ },
3950
+ "$schema": "http://json-schema.org/draft-07/schema#"
3951
+ },
3952
+ "packageName": "@backstage/plugin-auth-backend-module-gitlab-provider"
3953
+ },
3954
+ {
3955
+ "path": "../../plugins/auth-backend-module-google-provider/config.d.ts",
3956
+ "value": {
3957
+ "type": "object",
3958
+ "properties": {
3959
+ "auth": {
3960
+ "description": "Configuration options for the auth plugin",
3961
+ "type": "object",
3962
+ "properties": {
3963
+ "providers": {
3964
+ "type": "object",
3965
+ "properties": {
3966
+ "google": {
3967
+ "visibility": "frontend",
3968
+ "type": "object",
3969
+ "additionalProperties": {
3970
+ "type": "object",
3971
+ "properties": {
3972
+ "clientId": {
3973
+ "type": "string"
3974
+ },
3975
+ "clientSecret": {
3976
+ "visibility": "secret",
3977
+ "type": "string"
3978
+ },
3570
3979
  "callbackUrl": {
3571
3980
  "type": "string"
3572
3981
  },
@@ -3595,7 +4004,7 @@
3595
4004
  "properties": {
3596
4005
  "resolver": {
3597
4006
  "type": "string",
3598
- "const": "usernameMatchingUserEntityName"
4007
+ "const": "emailMatchingUserEntityAnnotation"
3599
4008
  }
3600
4009
  },
3601
4010
  "required": [
@@ -3653,21 +4062,21 @@
3653
4062
  }
3654
4063
  },
3655
4064
  "$schema": "http://json-schema.org/draft-07/schema#"
3656
- }
4065
+ },
4066
+ "packageName": "@backstage/plugin-auth-backend-module-google-provider"
3657
4067
  },
3658
4068
  {
3659
- "path": "../../plugins/auth-backend-module-google-provider/config.d.ts",
4069
+ "path": "../../plugins/auth-backend-module-microsoft-provider/config.d.ts",
3660
4070
  "value": {
3661
4071
  "type": "object",
3662
4072
  "properties": {
3663
4073
  "auth": {
3664
- "description": "Configuration options for the auth plugin",
3665
4074
  "type": "object",
3666
4075
  "properties": {
3667
4076
  "providers": {
3668
4077
  "type": "object",
3669
4078
  "properties": {
3670
- "google": {
4079
+ "microsoft": {
3671
4080
  "visibility": "frontend",
3672
4081
  "type": "object",
3673
4082
  "additionalProperties": {
@@ -3676,10 +4085,16 @@
3676
4085
  "clientId": {
3677
4086
  "type": "string"
3678
4087
  },
4088
+ "tenantId": {
4089
+ "type": "string"
4090
+ },
3679
4091
  "clientSecret": {
3680
4092
  "visibility": "secret",
3681
4093
  "type": "string"
3682
4094
  },
4095
+ "domainHint": {
4096
+ "type": "string"
4097
+ },
3683
4098
  "callbackUrl": {
3684
4099
  "type": "string"
3685
4100
  },
@@ -3696,6 +4111,9 @@
3696
4111
  }
3697
4112
  ]
3698
4113
  },
4114
+ "skipUserProfile": {
4115
+ "type": "boolean"
4116
+ },
3699
4117
  "signIn": {
3700
4118
  "type": "object",
3701
4119
  "properties": {
@@ -3756,7 +4174,8 @@
3756
4174
  },
3757
4175
  "required": [
3758
4176
  "clientId",
3759
- "clientSecret"
4177
+ "clientSecret",
4178
+ "tenantId"
3760
4179
  ]
3761
4180
  }
3762
4181
  }
@@ -3766,10 +4185,11 @@
3766
4185
  }
3767
4186
  },
3768
4187
  "$schema": "http://json-schema.org/draft-07/schema#"
3769
- }
4188
+ },
4189
+ "packageName": "@backstage/plugin-auth-backend-module-microsoft-provider"
3770
4190
  },
3771
4191
  {
3772
- "path": "../../plugins/auth-backend-module-microsoft-provider/config.d.ts",
4192
+ "path": "../../plugins/auth-backend-module-oauth2-provider/config.d.ts",
3773
4193
  "value": {
3774
4194
  "type": "object",
3775
4195
  "properties": {
@@ -3779,7 +4199,7 @@
3779
4199
  "providers": {
3780
4200
  "type": "object",
3781
4201
  "properties": {
3782
- "microsoft": {
4202
+ "oauth2": {
3783
4203
  "visibility": "frontend",
3784
4204
  "type": "object",
3785
4205
  "additionalProperties": {
@@ -3788,17 +4208,18 @@
3788
4208
  "clientId": {
3789
4209
  "type": "string"
3790
4210
  },
3791
- "tenantId": {
3792
- "type": "string"
3793
- },
3794
4211
  "clientSecret": {
3795
4212
  "visibility": "secret",
3796
4213
  "type": "string"
3797
4214
  },
3798
- "domainHint": {
4215
+ "authorizationUrl": {
3799
4216
  "type": "string"
3800
4217
  },
3801
- "callbackUrl": {
4218
+ "tokenUrl": {
4219
+ "type": "string"
4220
+ },
4221
+ "scope": {
4222
+ "deprecated": "use `additionalScopes` instead",
3802
4223
  "type": "string"
3803
4224
  },
3804
4225
  "additionalScopes": {
@@ -3814,7 +4235,10 @@
3814
4235
  }
3815
4236
  ]
3816
4237
  },
3817
- "skipUserProfile": {
4238
+ "disableRefresh": {
4239
+ "type": "boolean"
4240
+ },
4241
+ "includeBasicAuth": {
3818
4242
  "type": "boolean"
3819
4243
  },
3820
4244
  "signIn": {
@@ -3829,7 +4253,7 @@
3829
4253
  "properties": {
3830
4254
  "resolver": {
3831
4255
  "type": "string",
3832
- "const": "emailMatchingUserEntityAnnotation"
4256
+ "const": "usernameMatchingUserEntityName"
3833
4257
  }
3834
4258
  },
3835
4259
  "required": [
@@ -3876,9 +4300,10 @@
3876
4300
  }
3877
4301
  },
3878
4302
  "required": [
4303
+ "authorizationUrl",
3879
4304
  "clientId",
3880
4305
  "clientSecret",
3881
- "tenantId"
4306
+ "tokenUrl"
3882
4307
  ]
3883
4308
  }
3884
4309
  }
@@ -3888,10 +4313,11 @@
3888
4313
  }
3889
4314
  },
3890
4315
  "$schema": "http://json-schema.org/draft-07/schema#"
3891
- }
4316
+ },
4317
+ "packageName": "@backstage/plugin-auth-backend-module-oauth2-provider"
3892
4318
  },
3893
4319
  {
3894
- "path": "../../plugins/auth-backend-module-oauth2-provider/config.d.ts",
4320
+ "path": "../../plugins/auth-backend-module-oidc-provider/config.d.ts",
3895
4321
  "value": {
3896
4322
  "type": "object",
3897
4323
  "properties": {
@@ -3901,7 +4327,7 @@
3901
4327
  "providers": {
3902
4328
  "type": "object",
3903
4329
  "properties": {
3904
- "oauth2": {
4330
+ "oidc": {
3905
4331
  "visibility": "frontend",
3906
4332
  "type": "object",
3907
4333
  "additionalProperties": {
@@ -3914,14 +4340,16 @@
3914
4340
  "visibility": "secret",
3915
4341
  "type": "string"
3916
4342
  },
3917
- "authorizationUrl": {
4343
+ "metadataUrl": {
3918
4344
  "type": "string"
3919
4345
  },
3920
- "tokenUrl": {
4346
+ "callbackUrl": {
3921
4347
  "type": "string"
3922
4348
  },
3923
- "scope": {
3924
- "deprecated": "use `additionalScopes` instead",
4349
+ "tokenEndpointAuthMethod": {
4350
+ "type": "string"
4351
+ },
4352
+ "tokenSignedResponseAlg": {
3925
4353
  "type": "string"
3926
4354
  },
3927
4355
  "additionalScopes": {
@@ -3937,11 +4365,8 @@
3937
4365
  }
3938
4366
  ]
3939
4367
  },
3940
- "disableRefresh": {
3941
- "type": "boolean"
3942
- },
3943
- "includeBasicAuth": {
3944
- "type": "boolean"
4368
+ "prompt": {
4369
+ "type": "string"
3945
4370
  },
3946
4371
  "signIn": {
3947
4372
  "type": "object",
@@ -3950,18 +4375,6 @@
3950
4375
  "type": "array",
3951
4376
  "items": {
3952
4377
  "anyOf": [
3953
- {
3954
- "type": "object",
3955
- "properties": {
3956
- "resolver": {
3957
- "type": "string",
3958
- "const": "usernameMatchingUserEntityName"
3959
- }
3960
- },
3961
- "required": [
3962
- "resolver"
3963
- ]
3964
- },
3965
4378
  {
3966
4379
  "type": "object",
3967
4380
  "properties": {
@@ -4002,10 +4415,9 @@
4002
4415
  }
4003
4416
  },
4004
4417
  "required": [
4005
- "authorizationUrl",
4006
4418
  "clientId",
4007
4419
  "clientSecret",
4008
- "tokenUrl"
4420
+ "metadataUrl"
4009
4421
  ]
4010
4422
  }
4011
4423
  }
@@ -4015,7 +4427,8 @@
4015
4427
  }
4016
4428
  },
4017
4429
  "$schema": "http://json-schema.org/draft-07/schema#"
4018
- }
4430
+ },
4431
+ "packageName": "@backstage/plugin-auth-backend-module-oidc-provider"
4019
4432
  },
4020
4433
  {
4021
4434
  "path": "../../plugins/auth-backend-module-okta-provider/config.d.ts",
@@ -4136,10 +4549,11 @@
4136
4549
  }
4137
4550
  },
4138
4551
  "$schema": "http://json-schema.org/draft-07/schema#"
4139
- }
4552
+ },
4553
+ "packageName": "@backstage/plugin-auth-backend-module-okta-provider"
4140
4554
  },
4141
4555
  {
4142
- "path": "../../plugins/auth-backend-module-oidc-provider/config.d.ts",
4556
+ "path": "../../plugins/auth-backend-module-onelogin-provider/config.d.ts",
4143
4557
  "value": {
4144
4558
  "type": "object",
4145
4559
  "properties": {
@@ -4149,7 +4563,7 @@
4149
4563
  "providers": {
4150
4564
  "type": "object",
4151
4565
  "properties": {
4152
- "oidc": {
4566
+ "onelogin": {
4153
4567
  "visibility": "frontend",
4154
4568
  "type": "object",
4155
4569
  "additionalProperties": {
@@ -4162,34 +4576,12 @@
4162
4576
  "visibility": "secret",
4163
4577
  "type": "string"
4164
4578
  },
4165
- "metadataUrl": {
4579
+ "issuer": {
4166
4580
  "type": "string"
4167
4581
  },
4168
4582
  "callbackUrl": {
4169
4583
  "type": "string"
4170
4584
  },
4171
- "tokenEndpointAuthMethod": {
4172
- "type": "string"
4173
- },
4174
- "tokenSignedResponseAlg": {
4175
- "type": "string"
4176
- },
4177
- "additionalScopes": {
4178
- "anyOf": [
4179
- {
4180
- "type": "array",
4181
- "items": {
4182
- "type": "string"
4183
- }
4184
- },
4185
- {
4186
- "type": "string"
4187
- }
4188
- ]
4189
- },
4190
- "prompt": {
4191
- "type": "string"
4192
- },
4193
4585
  "signIn": {
4194
4586
  "type": "object",
4195
4587
  "properties": {
@@ -4197,6 +4589,18 @@
4197
4589
  "type": "array",
4198
4590
  "items": {
4199
4591
  "anyOf": [
4592
+ {
4593
+ "type": "object",
4594
+ "properties": {
4595
+ "resolver": {
4596
+ "type": "string",
4597
+ "const": "usernameMatchingUserEntityName"
4598
+ }
4599
+ },
4600
+ "required": [
4601
+ "resolver"
4602
+ ]
4603
+ },
4200
4604
  {
4201
4605
  "type": "object",
4202
4606
  "properties": {
@@ -4239,7 +4643,7 @@
4239
4643
  "required": [
4240
4644
  "clientId",
4241
4645
  "clientSecret",
4242
- "metadataUrl"
4646
+ "issuer"
4243
4647
  ]
4244
4648
  }
4245
4649
  }
@@ -4249,113 +4653,207 @@
4249
4653
  }
4250
4654
  },
4251
4655
  "$schema": "http://json-schema.org/draft-07/schema#"
4252
- }
4656
+ },
4657
+ "packageName": "@backstage/plugin-auth-backend-module-onelogin-provider"
4658
+ },
4659
+ {
4660
+ "path": "../../node_modules/@backstage-community/plugin-puppetdb/node_modules/@backstage/plugin-catalog-react/node_modules/@backstage/core-components/config.d.ts",
4661
+ "value": {
4662
+ "type": "object",
4663
+ "properties": {
4664
+ "auth": {
4665
+ "type": "object",
4666
+ "properties": {
4667
+ "autologout": {
4668
+ "description": "Autologout feature configuration",
4669
+ "type": "object",
4670
+ "properties": {
4671
+ "enabled": {
4672
+ "description": "Enable or disable the autologout feature",
4673
+ "visibility": "frontend",
4674
+ "type": "boolean"
4675
+ },
4676
+ "idleTimeoutMinutes": {
4677
+ "description": "Number of minutes after which the inactive user is logged out automatically.\nDefault is 60 minutes (1 hour)",
4678
+ "visibility": "frontend",
4679
+ "type": "number"
4680
+ },
4681
+ "promptBeforeIdleSeconds": {
4682
+ "description": "Number of seconds before the idle timeout where the user will be asked if it's still active.\nA dialog will be shown.\nDefault is 10 seconds.\nSet to 0 seconds to disable the prompt.",
4683
+ "visibility": "frontend",
4684
+ "type": "number"
4685
+ },
4686
+ "useWorkerTimers": {
4687
+ "description": "Enable/disable the usage of worker thread timers instead of main thread timers.\nDefault is true.\nIf you experience some browser incompatibility, you may try to set this to false.",
4688
+ "visibility": "frontend",
4689
+ "type": "boolean"
4690
+ },
4691
+ "logoutIfDisconnected": {
4692
+ "description": "Enable/disable the automatic logout also on users that are logged in but with no Backstage tabs open.\nDefault is true.",
4693
+ "visibility": "frontend",
4694
+ "type": "boolean"
4695
+ }
4696
+ }
4697
+ }
4698
+ }
4699
+ }
4700
+ },
4701
+ "$schema": "http://json-schema.org/draft-07/schema#"
4702
+ },
4703
+ "packageName": "@backstage/core-components"
4704
+ },
4705
+ {
4706
+ "path": "../../node_modules/@backstage-community/plugin-puppetdb/node_modules/@backstage/plugin-permission-common/config.d.ts",
4707
+ "value": {
4708
+ "type": "object",
4709
+ "properties": {
4710
+ "permission": {
4711
+ "description": "Configuration options for Backstage permissions and authorization",
4712
+ "type": "object",
4713
+ "properties": {
4714
+ "enabled": {
4715
+ "description": "Whether authorization is enabled in Backstage. Defaults to false, which means authorization\nrequests will be automatically allowed without invoking the authorization policy.",
4716
+ "visibility": "frontend",
4717
+ "type": "boolean"
4718
+ }
4719
+ }
4720
+ }
4721
+ },
4722
+ "$schema": "http://json-schema.org/draft-07/schema#"
4723
+ },
4724
+ "packageName": "@backstage/plugin-permission-common"
4725
+ },
4726
+ {
4727
+ "path": "../integration-aws-node/config.d.ts",
4728
+ "value": {
4729
+ "type": "object",
4730
+ "properties": {
4731
+ "aws": {
4732
+ "description": "Configuration for access to AWS accounts",
4733
+ "type": "object",
4734
+ "properties": {
4735
+ "accountDefaults": {
4736
+ "description": "Defaults for retrieving AWS account credentials",
4737
+ "type": "object",
4738
+ "properties": {
4739
+ "roleName": {
4740
+ "description": "The IAM role to assume to retrieve temporary AWS credentials",
4741
+ "type": "string"
4742
+ },
4743
+ "partition": {
4744
+ "description": "The AWS partition of the IAM role, e.g. \"aws\", \"aws-cn\"",
4745
+ "type": "string"
4746
+ },
4747
+ "region": {
4748
+ "description": "The STS regional endpoint to use when retrieving temporary AWS credentials, e.g. \"ap-northeast-1\"",
4749
+ "type": "string"
4750
+ },
4751
+ "externalId": {
4752
+ "description": "The unique identifier needed to assume the role to retrieve temporary AWS credentials",
4753
+ "visibility": "secret",
4754
+ "type": "string"
4755
+ }
4756
+ }
4757
+ },
4758
+ "mainAccount": {
4759
+ "description": "Main account to use for retrieving AWS account credentials",
4760
+ "type": "object",
4761
+ "properties": {
4762
+ "accessKeyId": {
4763
+ "description": "The access key ID for a set of static AWS credentials",
4764
+ "visibility": "secret",
4765
+ "type": "string"
4766
+ },
4767
+ "secretAccessKey": {
4768
+ "description": "The secret access key for a set of static AWS credentials",
4769
+ "visibility": "secret",
4770
+ "type": "string"
4771
+ },
4772
+ "profile": {
4773
+ "description": "The configuration profile from a credentials file at ~/.aws/credentials and\na configuration file at ~/.aws/config.",
4774
+ "type": "string"
4775
+ },
4776
+ "region": {
4777
+ "description": "The STS regional endpoint to use for the main account, e.g. \"ap-northeast-1\"",
4778
+ "type": "string"
4779
+ }
4780
+ }
4781
+ },
4782
+ "accounts": {
4783
+ "description": "Configuration for retrieving AWS accounts credentials",
4784
+ "type": "array",
4785
+ "items": {
4786
+ "type": "object",
4787
+ "properties": {
4788
+ "accountId": {
4789
+ "description": "The account ID of the target account that this matches on, e.g. \"123456789012\"",
4790
+ "type": "string"
4791
+ },
4792
+ "accessKeyId": {
4793
+ "description": "The access key ID for a set of static AWS credentials",
4794
+ "visibility": "secret",
4795
+ "type": "string"
4796
+ },
4797
+ "secretAccessKey": {
4798
+ "description": "The secret access key for a set of static AWS credentials",
4799
+ "visibility": "secret",
4800
+ "type": "string"
4801
+ },
4802
+ "profile": {
4803
+ "description": "The configuration profile from a credentials file at ~/.aws/credentials and\na configuration file at ~/.aws/config.",
4804
+ "type": "string"
4805
+ },
4806
+ "roleName": {
4807
+ "description": "The IAM role to assume to retrieve temporary AWS credentials",
4808
+ "type": "string"
4809
+ },
4810
+ "partition": {
4811
+ "description": "The AWS partition of the IAM role, e.g. \"aws\", \"aws-cn\"",
4812
+ "type": "string"
4813
+ },
4814
+ "region": {
4815
+ "description": "The STS regional endpoint to use when retrieving temporary AWS credentials, e.g. \"ap-northeast-1\"",
4816
+ "type": "string"
4817
+ },
4818
+ "externalId": {
4819
+ "description": "The unique identifier needed to assume the role to retrieve temporary AWS credentials",
4820
+ "visibility": "secret",
4821
+ "type": "string"
4822
+ }
4823
+ },
4824
+ "required": [
4825
+ "accountId"
4826
+ ]
4827
+ }
4828
+ }
4829
+ }
4830
+ }
4831
+ },
4832
+ "$schema": "http://json-schema.org/draft-07/schema#"
4833
+ },
4834
+ "packageName": "@backstage/integration-aws-node"
4253
4835
  },
4254
4836
  {
4255
- "path": "../../plugins/auth-backend-module-onelogin-provider/config.d.ts",
4837
+ "path": "../../node_modules/@backstage/backend-common/node_modules/@backstage/backend-plugin-api/config.d.ts",
4256
4838
  "value": {
4257
4839
  "type": "object",
4258
4840
  "properties": {
4259
- "auth": {
4841
+ "backend": {
4260
4842
  "type": "object",
4261
4843
  "properties": {
4262
- "providers": {
4263
- "type": "object",
4264
- "properties": {
4265
- "onelogin": {
4266
- "visibility": "frontend",
4267
- "type": "object",
4268
- "additionalProperties": {
4269
- "type": "object",
4270
- "properties": {
4271
- "clientId": {
4272
- "type": "string"
4273
- },
4274
- "clientSecret": {
4275
- "visibility": "secret",
4276
- "type": "string"
4277
- },
4278
- "issuer": {
4279
- "type": "string"
4280
- },
4281
- "callbackUrl": {
4282
- "type": "string"
4283
- },
4284
- "signIn": {
4285
- "type": "object",
4286
- "properties": {
4287
- "resolvers": {
4288
- "type": "array",
4289
- "items": {
4290
- "anyOf": [
4291
- {
4292
- "type": "object",
4293
- "properties": {
4294
- "resolver": {
4295
- "type": "string",
4296
- "const": "usernameMatchingUserEntityName"
4297
- }
4298
- },
4299
- "required": [
4300
- "resolver"
4301
- ]
4302
- },
4303
- {
4304
- "type": "object",
4305
- "properties": {
4306
- "resolver": {
4307
- "type": "string",
4308
- "const": "emailLocalPartMatchingUserEntityName"
4309
- },
4310
- "allowedDomains": {
4311
- "type": "array",
4312
- "items": {
4313
- "type": "string"
4314
- }
4315
- }
4316
- },
4317
- "required": [
4318
- "resolver"
4319
- ]
4320
- },
4321
- {
4322
- "type": "object",
4323
- "properties": {
4324
- "resolver": {
4325
- "type": "string",
4326
- "const": "emailMatchingUserEntityProfileEmail"
4327
- }
4328
- },
4329
- "required": [
4330
- "resolver"
4331
- ]
4332
- }
4333
- ]
4334
- }
4335
- }
4336
- },
4337
- "required": [
4338
- "resolvers"
4339
- ]
4340
- }
4341
- },
4342
- "required": [
4343
- "clientId",
4344
- "clientSecret",
4345
- "issuer"
4346
- ]
4347
- }
4348
- }
4349
- }
4844
+ "workingDirectory": {
4845
+ "description": "An absolute path to a directory that can be used as a working dir, for\nexample as scratch space for large operations.",
4846
+ "type": "string"
4350
4847
  }
4351
4848
  }
4352
4849
  }
4353
4850
  },
4354
4851
  "$schema": "http://json-schema.org/draft-07/schema#"
4355
- }
4852
+ },
4853
+ "packageName": "@backstage/backend-plugin-api"
4356
4854
  },
4357
4855
  {
4358
- "path": "../integration-aws-node/config.d.ts",
4856
+ "path": "../../node_modules/@backstage/backend-common/node_modules/@backstage/integration-aws-node/config.d.ts",
4359
4857
  "value": {
4360
4858
  "type": "object",
4361
4859
  "properties": {
@@ -4461,7 +4959,121 @@
4461
4959
  }
4462
4960
  },
4463
4961
  "$schema": "http://json-schema.org/draft-07/schema#"
4464
- }
4962
+ },
4963
+ "packageName": "@backstage/integration-aws-node"
4964
+ },
4965
+ {
4966
+ "path": "../../node_modules/@backstage-community/plugin-puppetdb/node_modules/@backstage/frontend-app-api/config.d.ts",
4967
+ "value": {
4968
+ "type": "object",
4969
+ "properties": {
4970
+ "app": {
4971
+ "type": "object",
4972
+ "properties": {
4973
+ "experimental": {
4974
+ "type": "object",
4975
+ "properties": {
4976
+ "packages": {
4977
+ "visibility": "frontend",
4978
+ "deepVisibility": "frontend",
4979
+ "anyOf": [
4980
+ {
4981
+ "type": "object",
4982
+ "properties": {
4983
+ "include": {
4984
+ "type": "array",
4985
+ "items": {
4986
+ "type": "string"
4987
+ }
4988
+ },
4989
+ "exclude": {
4990
+ "type": "array",
4991
+ "items": {
4992
+ "type": "string"
4993
+ }
4994
+ }
4995
+ }
4996
+ },
4997
+ {
4998
+ "const": "all",
4999
+ "type": "string"
5000
+ }
5001
+ ]
5002
+ }
5003
+ }
5004
+ },
5005
+ "routes": {
5006
+ "type": "object",
5007
+ "properties": {
5008
+ "bindings": {
5009
+ "description": "Maps external route references to regular route references. Both the\nkey and the value is expected to be on the form `<pluginId>.<routeId>`.\nIf the value is `false`, the route will be disabled even if it has a\ndefault mapping.",
5010
+ "deepVisibility": "frontend",
5011
+ "type": "object",
5012
+ "additionalProperties": {
5013
+ "anyOf": [
5014
+ {
5015
+ "const": false,
5016
+ "type": "boolean"
5017
+ },
5018
+ {
5019
+ "type": "string"
5020
+ }
5021
+ ]
5022
+ }
5023
+ }
5024
+ }
5025
+ },
5026
+ "extensions": {
5027
+ "deepVisibility": "frontend",
5028
+ "type": "array",
5029
+ "items": {
5030
+ "anyOf": [
5031
+ {
5032
+ "type": "object",
5033
+ "additionalProperties": {
5034
+ "anyOf": [
5035
+ {
5036
+ "type": "object",
5037
+ "properties": {
5038
+ "attachTo": {
5039
+ "type": "object",
5040
+ "properties": {
5041
+ "id": {
5042
+ "type": "string"
5043
+ },
5044
+ "input": {
5045
+ "type": "string"
5046
+ }
5047
+ },
5048
+ "required": [
5049
+ "id",
5050
+ "input"
5051
+ ]
5052
+ },
5053
+ "disabled": {
5054
+ "type": "boolean"
5055
+ },
5056
+ "config": {}
5057
+ }
5058
+ },
5059
+ {
5060
+ "type": "boolean"
5061
+ }
5062
+ ]
5063
+ }
5064
+ },
5065
+ {
5066
+ "type": "string"
5067
+ }
5068
+ ]
5069
+ }
5070
+ }
5071
+ }
5072
+ }
5073
+ },
5074
+ "$schema": "http://json-schema.org/draft-07/schema#"
5075
+ },
5076
+ "packageName": "@backstage/frontend-app-api"
4465
5077
  }
4466
5078
  ],
4467
5079
  "backstageConfigSchemaVersion": 1