@techdocs/cli 1.8.18 → 1.8.19-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 (91) hide show
  1. package/CHANGELOG.md +17 -3
  2. package/dist/embedded-app/.config-schema.json +514 -435
  3. package/dist/embedded-app/index.html +1 -1
  4. package/dist/embedded-app/static/{124.159a325a.chunk.js → 124.1db148ab.chunk.js} +1 -1
  5. package/dist/embedded-app/static/{124.159a325a.chunk.js.map → 124.1db148ab.chunk.js.map} +1 -1
  6. package/dist/embedded-app/static/{1297.bbeaddd0.chunk.js → 1297.0e20ec6b.chunk.js} +1 -1
  7. package/dist/embedded-app/static/{1297.bbeaddd0.chunk.js.map → 1297.0e20ec6b.chunk.js.map} +1 -1
  8. package/dist/embedded-app/static/1902.44584bca.chunk.js +10 -0
  9. package/dist/embedded-app/static/1902.44584bca.chunk.js.map +1 -0
  10. package/dist/embedded-app/static/{2401.ba11bac5.chunk.js → 2401.ca97a22a.chunk.js} +1 -1
  11. package/dist/embedded-app/static/{2401.ba11bac5.chunk.js.map → 2401.ca97a22a.chunk.js.map} +1 -1
  12. package/dist/embedded-app/static/{2420.9986a695.chunk.js → 2420.2b6286b5.chunk.js} +1 -1
  13. package/dist/embedded-app/static/{2420.9986a695.chunk.js.map → 2420.2b6286b5.chunk.js.map} +1 -1
  14. package/dist/embedded-app/static/{287.57153ff3.chunk.js → 287.8842f1ab.chunk.js} +1 -1
  15. package/dist/embedded-app/static/{287.57153ff3.chunk.js.map → 287.8842f1ab.chunk.js.map} +1 -1
  16. package/dist/embedded-app/static/{3182.98982985.chunk.js → 3182.9657b1ff.chunk.js} +1 -1
  17. package/dist/embedded-app/static/{3182.98982985.chunk.js.map → 3182.9657b1ff.chunk.js.map} +1 -1
  18. package/dist/embedded-app/static/{3308.b3458818.chunk.js → 3308.c146ba21.chunk.js} +1 -1
  19. package/dist/embedded-app/static/{3308.b3458818.chunk.js.map → 3308.c146ba21.chunk.js.map} +1 -1
  20. package/dist/embedded-app/static/{3632.2a549b64.chunk.js → 3632.f5bd752c.chunk.js} +1 -1
  21. package/dist/embedded-app/static/{3632.2a549b64.chunk.js.map → 3632.f5bd752c.chunk.js.map} +1 -1
  22. package/dist/embedded-app/static/{3720.1978cecb.chunk.js → 3720.98f39354.chunk.js} +1 -1
  23. package/dist/embedded-app/static/{3720.1978cecb.chunk.js.map → 3720.98f39354.chunk.js.map} +1 -1
  24. package/dist/embedded-app/static/{4036.36665783.chunk.js → 4036.fef63266.chunk.js} +1 -1
  25. package/dist/embedded-app/static/{4036.36665783.chunk.js.map → 4036.fef63266.chunk.js.map} +1 -1
  26. package/dist/embedded-app/static/{4487.f9cc6633.chunk.js → 4487.fba50d66.chunk.js} +1 -1
  27. package/dist/embedded-app/static/{4487.f9cc6633.chunk.js.map → 4487.fba50d66.chunk.js.map} +1 -1
  28. package/dist/embedded-app/static/{4516.b1a92d53.chunk.js → 4516.cd8a0387.chunk.js} +1 -1
  29. package/dist/embedded-app/static/{4516.b1a92d53.chunk.js.map → 4516.cd8a0387.chunk.js.map} +1 -1
  30. package/dist/embedded-app/static/{5724.d2755c89.chunk.js → 5724.0fd2d023.chunk.js} +1 -1
  31. package/dist/embedded-app/static/{5724.d2755c89.chunk.js.map → 5724.0fd2d023.chunk.js.map} +1 -1
  32. package/dist/embedded-app/static/{5788.9c942dee.chunk.js → 5788.ede5f049.chunk.js} +1 -1
  33. package/dist/embedded-app/static/{5788.9c942dee.chunk.js.map → 5788.ede5f049.chunk.js.map} +1 -1
  34. package/dist/embedded-app/static/{6271.0b57a0cf.chunk.js → 6271.1f27aefc.chunk.js} +1 -1
  35. package/dist/embedded-app/static/{6271.0b57a0cf.chunk.js.map → 6271.1f27aefc.chunk.js.map} +1 -1
  36. package/dist/embedded-app/static/{6415.6b71f4b9.chunk.js → 6415.ca28e59e.chunk.js} +1 -1
  37. package/dist/embedded-app/static/{6415.6b71f4b9.chunk.js.map → 6415.ca28e59e.chunk.js.map} +1 -1
  38. package/dist/embedded-app/static/8115.60e192eb.chunk.js +3 -0
  39. package/dist/embedded-app/static/8115.60e192eb.chunk.js.map +1 -0
  40. package/dist/embedded-app/static/{8307.637eb9f7.chunk.js → 8307.48c99c9a.chunk.js} +1 -1
  41. package/dist/embedded-app/static/{8307.637eb9f7.chunk.js.map → 8307.48c99c9a.chunk.js.map} +1 -1
  42. package/dist/embedded-app/static/{8384.0c6da92e.chunk.js → 8384.c87298a7.chunk.js} +1 -1
  43. package/dist/embedded-app/static/{8384.0c6da92e.chunk.js.map → 8384.c87298a7.chunk.js.map} +1 -1
  44. package/dist/embedded-app/static/898.6dc29f65.chunk.js +4 -0
  45. package/dist/embedded-app/static/{898.c75e7113.chunk.js.map → 898.6dc29f65.chunk.js.map} +1 -1
  46. package/dist/embedded-app/static/{9234.ad94610e.chunk.js → 9234.d73cb688.chunk.js} +1 -1
  47. package/dist/embedded-app/static/{9234.ad94610e.chunk.js.map → 9234.d73cb688.chunk.js.map} +1 -1
  48. package/dist/embedded-app/static/{9605.2c26c71d.chunk.js → 9605.9dfa2d00.chunk.js} +1 -1
  49. package/dist/embedded-app/static/{9605.2c26c71d.chunk.js.map → 9605.9dfa2d00.chunk.js.map} +1 -1
  50. package/dist/embedded-app/static/{9652.5fd19eb0.chunk.js → 9652.4c4ba768.chunk.js} +1 -1
  51. package/dist/embedded-app/static/{9652.5fd19eb0.chunk.js.map → 9652.4c4ba768.chunk.js.map} +1 -1
  52. package/dist/embedded-app/static/main.304a0771.js +509 -0
  53. package/dist/embedded-app/static/main.304a0771.js.map +1 -0
  54. package/dist/embedded-app/static/{module-date-fns.9ba6144d.js → module-date-fns.2e1096cc.js} +1 -1
  55. package/dist/embedded-app/static/{module-date-fns.9ba6144d.js.map → module-date-fns.2e1096cc.js.map} +1 -1
  56. package/dist/embedded-app/static/{module-material-table.e3f26578.js → module-material-table.02244708.js} +1 -1
  57. package/dist/embedded-app/static/{module-material-table.e3f26578.js.map → module-material-table.02244708.js.map} +1 -1
  58. package/dist/embedded-app/static/{module-material-ui.2c452b58.js → module-material-ui.9dcefdc1.js} +1 -1
  59. package/dist/embedded-app/static/{module-material-ui.2c452b58.js.map → module-material-ui.9dcefdc1.js.map} +1 -1
  60. package/dist/embedded-app/static/module-mui.05cfef7f.js +3 -0
  61. package/dist/embedded-app/static/module-mui.05cfef7f.js.map +1 -0
  62. package/dist/embedded-app/static/{module-react-beautiful-dnd.ea59573c.js → module-react-beautiful-dnd.996c3b37.js} +1 -1
  63. package/dist/embedded-app/static/{module-react-beautiful-dnd.ea59573c.js.map → module-react-beautiful-dnd.996c3b37.js.map} +1 -1
  64. package/dist/embedded-app/static/{module-react-dom.1f38e13a.js → module-react-dom.3d6c828c.js} +6 -6
  65. package/dist/embedded-app/static/module-react-dom.3d6c828c.js.map +1 -0
  66. package/dist/embedded-app/static/module-react-router-dom.54955edf.js +23 -0
  67. package/dist/embedded-app/static/module-react-router-dom.54955edf.js.map +1 -0
  68. package/dist/embedded-app/static/module-react-router.0dc172f6.js +23 -0
  69. package/dist/embedded-app/static/module-react-router.0dc172f6.js.map +1 -0
  70. package/dist/embedded-app/static/{runtime.87e083f2.js → runtime.304a0771.js} +2 -2
  71. package/dist/embedded-app/static/{runtime.87e083f2.js.map → runtime.304a0771.js.map} +1 -1
  72. package/dist/embedded-app/static/vendor.304a0771.js +151 -0
  73. package/dist/embedded-app/static/vendor.304a0771.js.map +1 -0
  74. package/dist/index.cjs.js +1 -1
  75. package/package.json +4 -4
  76. package/dist/embedded-app/static/1902.6f404f8c.chunk.js +0 -10
  77. package/dist/embedded-app/static/1902.6f404f8c.chunk.js.map +0 -1
  78. package/dist/embedded-app/static/4919.e2124196.chunk.js +0 -3
  79. package/dist/embedded-app/static/4919.e2124196.chunk.js.map +0 -1
  80. package/dist/embedded-app/static/898.c75e7113.chunk.js +0 -4
  81. package/dist/embedded-app/static/main.87e083f2.js +0 -509
  82. package/dist/embedded-app/static/main.87e083f2.js.map +0 -1
  83. package/dist/embedded-app/static/module-mui.e17dd999.js +0 -3
  84. package/dist/embedded-app/static/module-mui.e17dd999.js.map +0 -1
  85. package/dist/embedded-app/static/module-react-dom.1f38e13a.js.map +0 -1
  86. package/dist/embedded-app/static/module-react-router-dom.0c2bb614.js +0 -23
  87. package/dist/embedded-app/static/module-react-router-dom.0c2bb614.js.map +0 -1
  88. package/dist/embedded-app/static/module-react-router.dac764ce.js +0 -23
  89. package/dist/embedded-app/static/module-react-router.dac764ce.js.map +0 -1
  90. package/dist/embedded-app/static/vendor.87e083f2.js +0 -155
  91. package/dist/embedded-app/static/vendor.87e083f2.js.map +0 -1
@@ -1318,8 +1318,7 @@
1318
1318
  "const": "memory"
1319
1319
  },
1320
1320
  "defaultTtl": {
1321
- "description": "An optional default TTL (in milliseconds).",
1322
- "type": "number"
1321
+ "description": "An optional default TTL (in milliseconds)."
1323
1322
  }
1324
1323
  },
1325
1324
  "required": [
@@ -1339,8 +1338,7 @@
1339
1338
  "type": "string"
1340
1339
  },
1341
1340
  "defaultTtl": {
1342
- "description": "An optional default TTL (in milliseconds).",
1343
- "type": "number"
1341
+ "description": "An optional default TTL (in milliseconds)."
1344
1342
  },
1345
1343
  "useRedisSets": {
1346
1344
  "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.",
@@ -1365,8 +1363,7 @@
1365
1363
  "type": "string"
1366
1364
  },
1367
1365
  "defaultTtl": {
1368
- "description": "An optional default TTL (in milliseconds).",
1369
- "type": "number"
1366
+ "description": "An optional default TTL (in milliseconds)."
1370
1367
  }
1371
1368
  },
1372
1369
  "required": [
@@ -1377,6 +1374,7 @@
1377
1374
  ]
1378
1375
  },
1379
1376
  "cors": {
1377
+ "description": "Properties returned upon CORS requests to the backend, including the app-backend.",
1380
1378
  "type": "object",
1381
1379
  "properties": {
1382
1380
  "origin": {
@@ -1445,6 +1443,24 @@
1445
1443
  }
1446
1444
  }
1447
1445
  },
1446
+ "csp": {
1447
+ "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.",
1448
+ "type": "object",
1449
+ "additionalProperties": {
1450
+ "anyOf": [
1451
+ {
1452
+ "type": "array",
1453
+ "items": {
1454
+ "type": "string"
1455
+ }
1456
+ },
1457
+ {
1458
+ "const": false,
1459
+ "type": "boolean"
1460
+ }
1461
+ ]
1462
+ }
1463
+ },
1448
1464
  "reading": {
1449
1465
  "description": "Configuration related to URL reading, used for example for reading catalog info\nfiles, scaffolder templates, and techdocs content.",
1450
1466
  "type": "object",
@@ -1473,24 +1489,6 @@
1473
1489
  }
1474
1490
  }
1475
1491
  }
1476
- },
1477
- "csp": {
1478
- "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.",
1479
- "type": "object",
1480
- "additionalProperties": {
1481
- "anyOf": [
1482
- {
1483
- "type": "array",
1484
- "items": {
1485
- "type": "string"
1486
- }
1487
- },
1488
- {
1489
- "const": false,
1490
- "type": "boolean"
1491
- }
1492
- ]
1493
- }
1494
1492
  }
1495
1493
  },
1496
1494
  "required": [
@@ -1507,6 +1505,69 @@
1507
1505
  "$schema": "http://json-schema.org/draft-07/schema#"
1508
1506
  }
1509
1507
  },
1508
+ {
1509
+ "path": "../backend-plugin-api/config.d.ts",
1510
+ "value": {
1511
+ "type": "object",
1512
+ "properties": {
1513
+ "backend": {
1514
+ "type": "object",
1515
+ "properties": {
1516
+ "workingDirectory": {
1517
+ "description": "An absolute path to a directory that can be used as a working dir, for\nexample as scratch space for large operations.",
1518
+ "type": "string"
1519
+ }
1520
+ }
1521
+ }
1522
+ },
1523
+ "$schema": "http://json-schema.org/draft-07/schema#"
1524
+ }
1525
+ },
1526
+ {
1527
+ "path": "../../node_modules/@backstage-community/plugin-puppetdb/node_modules/@backstage/core-components/config.d.ts",
1528
+ "value": {
1529
+ "type": "object",
1530
+ "properties": {
1531
+ "auth": {
1532
+ "type": "object",
1533
+ "properties": {
1534
+ "autologout": {
1535
+ "description": "Autologout feature configuration",
1536
+ "type": "object",
1537
+ "properties": {
1538
+ "enabled": {
1539
+ "description": "Enable or disable the autologout feature",
1540
+ "visibility": "frontend",
1541
+ "type": "boolean"
1542
+ },
1543
+ "idleTimeoutMinutes": {
1544
+ "description": "Number of minutes after which the inactive user is logged out automatically.\nDefault is 60 minutes (1 hour)",
1545
+ "visibility": "frontend",
1546
+ "type": "number"
1547
+ },
1548
+ "promptBeforeIdleSeconds": {
1549
+ "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.",
1550
+ "visibility": "frontend",
1551
+ "type": "number"
1552
+ },
1553
+ "useWorkerTimers": {
1554
+ "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.",
1555
+ "visibility": "frontend",
1556
+ "type": "boolean"
1557
+ },
1558
+ "logoutIfDisconnected": {
1559
+ "description": "Enable/disable the automatic logout also on users that are logged in but with no Backstage tabs open.\nDefault is true.",
1560
+ "visibility": "frontend",
1561
+ "type": "boolean"
1562
+ }
1563
+ }
1564
+ }
1565
+ }
1566
+ }
1567
+ },
1568
+ "$schema": "http://json-schema.org/draft-07/schema#"
1569
+ }
1570
+ },
1510
1571
  {
1511
1572
  "path": "../../node_modules/@oriflame/backstage-plugin-score-card/node_modules/@backstage/core-components/config.d.ts",
1512
1573
  "value": {
@@ -1669,7 +1730,120 @@
1669
1730
  "backend": {
1670
1731
  "type": "object",
1671
1732
  "properties": {
1733
+ "packages": {
1734
+ "description": "Used by the feature discovery service",
1735
+ "anyOf": [
1736
+ {
1737
+ "type": "object",
1738
+ "properties": {
1739
+ "include": {
1740
+ "type": "array",
1741
+ "items": {
1742
+ "type": "string"
1743
+ }
1744
+ },
1745
+ "exclude": {
1746
+ "type": "array",
1747
+ "items": {
1748
+ "type": "string"
1749
+ }
1750
+ }
1751
+ }
1752
+ },
1753
+ {
1754
+ "const": "all",
1755
+ "type": "string"
1756
+ }
1757
+ ]
1758
+ }
1759
+ }
1760
+ }
1761
+ },
1762
+ "$schema": "http://json-schema.org/draft-07/schema#"
1763
+ }
1764
+ },
1765
+ {
1766
+ "path": "../backend-defaults/config.d.ts",
1767
+ "value": {
1768
+ "type": "object",
1769
+ "properties": {
1770
+ "app": {
1771
+ "type": "object",
1772
+ "properties": {
1773
+ "baseUrl": {
1774
+ "type": "string"
1775
+ }
1776
+ },
1777
+ "required": [
1778
+ "baseUrl"
1779
+ ]
1780
+ },
1781
+ "backend": {
1782
+ "type": "object",
1783
+ "properties": {
1784
+ "baseUrl": {
1785
+ "description": "The full base URL of the backend, as seen from the browser's point of\nview as it makes calls to the backend.",
1786
+ "type": "string"
1787
+ },
1788
+ "listen": {
1789
+ "description": "Address that the backend should listen to.",
1790
+ "anyOf": [
1791
+ {
1792
+ "type": "object",
1793
+ "properties": {
1794
+ "host": {
1795
+ "description": "Address of the interface that the backend should bind to.",
1796
+ "type": "string"
1797
+ },
1798
+ "port": {
1799
+ "description": "Port that the backend should listen to.",
1800
+ "type": [
1801
+ "string",
1802
+ "number"
1803
+ ]
1804
+ }
1805
+ }
1806
+ },
1807
+ {
1808
+ "type": "string"
1809
+ }
1810
+ ]
1811
+ },
1812
+ "https": {
1813
+ "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.",
1814
+ "anyOf": [
1815
+ {
1816
+ "type": "object",
1817
+ "properties": {
1818
+ "certificate": {
1819
+ "description": "Certificate configuration",
1820
+ "type": "object",
1821
+ "properties": {
1822
+ "cert": {
1823
+ "description": "PEM encoded certificate. Use $file to load in a file",
1824
+ "type": "string"
1825
+ },
1826
+ "key": {
1827
+ "description": "PEM encoded certificate key. Use $file to load in a file.",
1828
+ "visibility": "secret",
1829
+ "type": "string"
1830
+ }
1831
+ },
1832
+ "required": [
1833
+ "cert",
1834
+ "key"
1835
+ ]
1836
+ }
1837
+ }
1838
+ },
1839
+ {
1840
+ "const": true,
1841
+ "type": "boolean"
1842
+ }
1843
+ ]
1844
+ },
1672
1845
  "auth": {
1846
+ "description": "Options used by the default auth, httpAuth and userInfo services.",
1673
1847
  "type": "object",
1674
1848
  "properties": {
1675
1849
  "dangerouslyDisableDefaultAuthPolicy": {
@@ -1977,296 +2151,6 @@
1977
2151
  "required": [
1978
2152
  "url"
1979
2153
  ]
1980
- }
1981
- },
1982
- "required": [
1983
- "options",
1984
- "type"
1985
- ]
1986
- }
1987
- ]
1988
- }
1989
- }
1990
- }
1991
- },
1992
- "packages": {
1993
- "anyOf": [
1994
- {
1995
- "type": "object",
1996
- "properties": {
1997
- "include": {
1998
- "type": "array",
1999
- "items": {
2000
- "type": "string"
2001
- }
2002
- },
2003
- "exclude": {
2004
- "type": "array",
2005
- "items": {
2006
- "type": "string"
2007
- }
2008
- }
2009
- }
2010
- },
2011
- {
2012
- "const": "all",
2013
- "type": "string"
2014
- }
2015
- ]
2016
- }
2017
- }
2018
- },
2019
- "discovery": {
2020
- "description": "Discovery options.",
2021
- "type": "object",
2022
- "properties": {
2023
- "endpoints": {
2024
- "description": "Endpoints\n\nA list of target baseUrls and the associated plugins.",
2025
- "type": "array",
2026
- "items": {
2027
- "type": "object",
2028
- "properties": {
2029
- "target": {
2030
- "description": "The target baseUrl 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 pluginId.",
2031
- "anyOf": [
2032
- {
2033
- "type": "object",
2034
- "properties": {
2035
- "internal": {
2036
- "type": "string"
2037
- },
2038
- "external": {
2039
- "type": "string"
2040
- }
2041
- },
2042
- "required": [
2043
- "external",
2044
- "internal"
2045
- ]
2046
- },
2047
- {
2048
- "type": "string"
2049
- }
2050
- ]
2051
- },
2052
- "plugins": {
2053
- "description": "Array of plugins which use the target baseUrl.",
2054
- "type": "array",
2055
- "items": {
2056
- "type": "string"
2057
- }
2058
- }
2059
- },
2060
- "required": [
2061
- "plugins",
2062
- "target"
2063
- ]
2064
- }
2065
- }
2066
- },
2067
- "required": [
2068
- "endpoints"
2069
- ]
2070
- }
2071
- },
2072
- "$schema": "http://json-schema.org/draft-07/schema#"
2073
- }
2074
- },
2075
- {
2076
- "path": "../backend-defaults/config.d.ts",
2077
- "value": {
2078
- "type": "object",
2079
- "properties": {
2080
- "backend": {
2081
- "type": "object",
2082
- "properties": {
2083
- "auth": {
2084
- "description": "Options used by the default auth, httpAuth and userInfo services.",
2085
- "type": "object",
2086
- "properties": {
2087
- "dangerouslyDisableDefaultAuthPolicy": {
2088
- "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.",
2089
- "type": "boolean"
2090
- },
2091
- "pluginKeyStore": {
2092
- "description": "Controls how to store keys for plugin-to-plugin auth",
2093
- "anyOf": [
2094
- {
2095
- "type": "object",
2096
- "properties": {
2097
- "type": {
2098
- "type": "string",
2099
- "const": "database"
2100
- }
2101
- },
2102
- "required": [
2103
- "type"
2104
- ]
2105
- },
2106
- {
2107
- "type": "object",
2108
- "properties": {
2109
- "type": {
2110
- "type": "string",
2111
- "const": "static"
2112
- },
2113
- "static": {
2114
- "type": "object",
2115
- "properties": {
2116
- "keys": {
2117
- "description": "Must be declared at least once and the first one will be used for signing.",
2118
- "type": "array",
2119
- "items": {
2120
- "type": "object",
2121
- "properties": {
2122
- "publicKeyFile": {
2123
- "description": "Path to the public key file in the SPKI format. Should be an absolute path.",
2124
- "type": "string"
2125
- },
2126
- "privateKeyFile": {
2127
- "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.",
2128
- "type": "string"
2129
- },
2130
- "keyId": {
2131
- "description": "ID to uniquely identify this key within the JWK set.",
2132
- "type": "string"
2133
- },
2134
- "algorithm": {
2135
- "description": "JWS \"alg\" (Algorithm) Header Parameter value. Defaults to ES256.\nMust match the algorithm used to generate the keys in the provided files",
2136
- "type": "string"
2137
- }
2138
- },
2139
- "required": [
2140
- "keyId",
2141
- "publicKeyFile"
2142
- ]
2143
- }
2144
- }
2145
- },
2146
- "required": [
2147
- "keys"
2148
- ]
2149
- }
2150
- },
2151
- "required": [
2152
- "static",
2153
- "type"
2154
- ]
2155
- }
2156
- ]
2157
- },
2158
- "externalAccess": {
2159
- "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.",
2160
- "type": "array",
2161
- "items": {
2162
- "anyOf": [
2163
- {
2164
- "type": "object",
2165
- "properties": {
2166
- "type": {
2167
- "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```",
2168
- "type": "string",
2169
- "const": "legacy"
2170
- },
2171
- "options": {
2172
- "type": "object",
2173
- "properties": {
2174
- "secret": {
2175
- "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```",
2176
- "visibility": "secret",
2177
- "type": "string"
2178
- },
2179
- "subject": {
2180
- "description": "Sets the subject of the principal, when matching this token.\nUseful for debugging and tracking purposes.",
2181
- "type": "string"
2182
- }
2183
- },
2184
- "required": [
2185
- "secret",
2186
- "subject"
2187
- ]
2188
- },
2189
- "accessRestrictions": {
2190
- "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.",
2191
- "type": "array",
2192
- "items": {
2193
- "type": "object",
2194
- "properties": {
2195
- "plugin": {
2196
- "description": "Permit access to make requests to this plugin.\n\nCan be further refined by setting additional fields below.",
2197
- "type": "string"
2198
- },
2199
- "permission": {
2200
- "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.",
2201
- "anyOf": [
2202
- {
2203
- "type": "array",
2204
- "items": {
2205
- "type": "string"
2206
- }
2207
- },
2208
- {
2209
- "type": "string"
2210
- }
2211
- ]
2212
- },
2213
- "permissionAttribute": {
2214
- "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.",
2215
- "type": "object",
2216
- "properties": {
2217
- "action": {
2218
- "description": "One of more of 'create', 'read', 'update', or 'delete'.",
2219
- "anyOf": [
2220
- {
2221
- "type": "array",
2222
- "items": {
2223
- "type": "string"
2224
- }
2225
- },
2226
- {
2227
- "type": "string"
2228
- }
2229
- ]
2230
- }
2231
- }
2232
- }
2233
- },
2234
- "required": [
2235
- "plugin"
2236
- ]
2237
- }
2238
- }
2239
- },
2240
- "required": [
2241
- "options",
2242
- "type"
2243
- ]
2244
- },
2245
- {
2246
- "type": "object",
2247
- "properties": {
2248
- "type": {
2249
- "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```",
2250
- "type": "string",
2251
- "const": "static"
2252
- },
2253
- "options": {
2254
- "type": "object",
2255
- "properties": {
2256
- "token": {
2257
- "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.",
2258
- "visibility": "secret",
2259
- "type": "string"
2260
- },
2261
- "subject": {
2262
- "description": "Sets the subject of the principal, when matching this token.\nUseful for debugging and tracking purposes.",
2263
- "type": "string"
2264
- }
2265
- },
2266
- "required": [
2267
- "subject",
2268
- "token"
2269
- ]
2270
2154
  },
2271
2155
  "accessRestrictions": {
2272
2156
  "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.",
@@ -2323,135 +2207,327 @@
2323
2207
  "options",
2324
2208
  "type"
2325
2209
  ]
2326
- },
2327
- {
2328
- "type": "object",
2329
- "properties": {
2330
- "type": {
2331
- "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```",
2332
- "type": "string",
2333
- "const": "jwks"
2334
- },
2335
- "options": {
2336
- "type": "object",
2337
- "properties": {
2338
- "url": {
2339
- "description": "The full URL of the JWKS endpoint.",
2340
- "type": "string"
2341
- },
2342
- "algorithm": {
2343
- "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.",
2344
- "anyOf": [
2345
- {
2346
- "type": "array",
2347
- "items": {
2348
- "type": "string"
2349
- }
2350
- },
2351
- {
2352
- "type": "string"
2353
- }
2354
- ]
2355
- },
2356
- "issuer": {
2357
- "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.",
2358
- "anyOf": [
2359
- {
2360
- "type": "array",
2361
- "items": {
2362
- "type": "string"
2363
- }
2364
- },
2365
- {
2366
- "type": "string"
2367
- }
2368
- ]
2369
- },
2370
- "audience": {
2371
- "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.",
2372
- "anyOf": [
2373
- {
2374
- "type": "array",
2375
- "items": {
2376
- "type": "string"
2377
- }
2378
- },
2379
- {
2380
- "type": "string"
2381
- }
2382
- ]
2383
- },
2384
- "subjectPrefix": {
2385
- "description": "Sets an optional subject prefix. Passes the subject to called plugins.\nUseful for debugging and tracking purposes.",
2386
- "type": "string"
2387
- }
2388
- },
2389
- "required": [
2390
- "url"
2391
- ]
2392
- },
2393
- "accessRestrictions": {
2394
- "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.",
2395
- "type": "array",
2396
- "items": {
2397
- "type": "object",
2398
- "properties": {
2399
- "plugin": {
2400
- "description": "Permit access to make requests to this plugin.\n\nCan be further refined by setting additional fields below.",
2401
- "type": "string"
2402
- },
2403
- "permission": {
2404
- "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.",
2405
- "anyOf": [
2406
- {
2407
- "type": "array",
2408
- "items": {
2409
- "type": "string"
2410
- }
2411
- },
2412
- {
2413
- "type": "string"
2414
- }
2415
- ]
2416
- },
2417
- "permissionAttribute": {
2418
- "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.",
2419
- "type": "object",
2420
- "properties": {
2421
- "action": {
2422
- "description": "One of more of 'create', 'read', 'update', or 'delete'.",
2423
- "anyOf": [
2424
- {
2425
- "type": "array",
2426
- "items": {
2427
- "type": "string"
2428
- }
2429
- },
2430
- {
2431
- "type": "string"
2432
- }
2433
- ]
2434
- }
2435
- }
2436
- }
2437
- },
2438
- "required": [
2439
- "plugin"
2440
- ]
2441
- }
2210
+ }
2211
+ ]
2212
+ }
2213
+ }
2214
+ }
2215
+ },
2216
+ "database": {
2217
+ "description": "Database connection configuration, select base database type using the `client` field",
2218
+ "type": "object",
2219
+ "properties": {
2220
+ "client": {
2221
+ "description": "Default database client to use",
2222
+ "enum": [
2223
+ "better-sqlite3",
2224
+ "pg",
2225
+ "sqlite3"
2226
+ ],
2227
+ "type": "string"
2228
+ },
2229
+ "connection": {
2230
+ "description": "Base database connection string, or object with individual connection properties",
2231
+ "visibility": "secret",
2232
+ "anyOf": [
2233
+ {
2234
+ "type": "object",
2235
+ "additionalProperties": {},
2236
+ "properties": {
2237
+ "password": {
2238
+ "description": "Password that belongs to the client User",
2239
+ "visibility": "secret",
2240
+ "type": "string"
2241
+ }
2242
+ }
2243
+ },
2244
+ {
2245
+ "type": "string"
2246
+ }
2247
+ ]
2248
+ },
2249
+ "prefix": {
2250
+ "description": "Database name prefix override",
2251
+ "type": "string"
2252
+ },
2253
+ "ensureExists": {
2254
+ "description": "Whether to ensure the given database exists by creating it if it does not.\nDefaults to true if unspecified.",
2255
+ "type": "boolean"
2256
+ },
2257
+ "ensureSchemaExists": {
2258
+ "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",
2259
+ "type": "boolean"
2260
+ },
2261
+ "pluginDivisionMode": {
2262
+ "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.",
2263
+ "default": "database",
2264
+ "enum": [
2265
+ "database",
2266
+ "schema"
2267
+ ],
2268
+ "type": "string"
2269
+ },
2270
+ "role": {
2271
+ "description": "Configures the ownership of newly created schemas in pg databases.",
2272
+ "type": "string"
2273
+ },
2274
+ "knexConfig": {
2275
+ "description": "Arbitrary config object to pass to knex when initializing\n(https://knexjs.org/#Installation-client). Most notable is the debug\nand asyncStackTraces booleans",
2276
+ "type": "object",
2277
+ "properties": {},
2278
+ "additionalProperties": true
2279
+ },
2280
+ "skipMigrations": {
2281
+ "description": "Skip running database migrations.",
2282
+ "type": "boolean"
2283
+ },
2284
+ "plugin": {
2285
+ "description": "Plugin specific database configuration and client override",
2286
+ "type": "object",
2287
+ "additionalProperties": {
2288
+ "type": "object",
2289
+ "properties": {
2290
+ "client": {
2291
+ "description": "Database client override",
2292
+ "enum": [
2293
+ "better-sqlite3",
2294
+ "pg",
2295
+ "sqlite3"
2296
+ ],
2297
+ "type": "string"
2298
+ },
2299
+ "connection": {
2300
+ "description": "Database connection string or Knex object override",
2301
+ "visibility": "secret",
2302
+ "anyOf": [
2303
+ {
2304
+ "type": "object",
2305
+ "properties": {},
2306
+ "additionalProperties": true
2307
+ },
2308
+ {
2309
+ "type": "string"
2442
2310
  }
2443
- },
2444
- "required": [
2445
- "options",
2446
- "type"
2447
2311
  ]
2312
+ },
2313
+ "ensureExists": {
2314
+ "description": "Whether to ensure the given database exists by creating it if it does not.\nDefaults to base config if unspecified.",
2315
+ "type": "boolean"
2316
+ },
2317
+ "ensureSchemaExists": {
2318
+ "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",
2319
+ "type": "boolean"
2320
+ },
2321
+ "knexConfig": {
2322
+ "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",
2323
+ "type": "object",
2324
+ "properties": {},
2325
+ "additionalProperties": true
2326
+ },
2327
+ "role": {
2328
+ "description": "Configures the ownership of newly created schemas in pg databases.",
2329
+ "type": "string"
2330
+ },
2331
+ "skipMigrations": {
2332
+ "description": "Skip running database migrations.",
2333
+ "type": "boolean"
2334
+ }
2335
+ }
2336
+ }
2337
+ }
2338
+ },
2339
+ "required": [
2340
+ "client",
2341
+ "connection"
2342
+ ]
2343
+ },
2344
+ "cache": {
2345
+ "description": "Cache connection configuration, select cache type using the `store` field",
2346
+ "anyOf": [
2347
+ {
2348
+ "type": "object",
2349
+ "properties": {
2350
+ "store": {
2351
+ "type": "string",
2352
+ "const": "memory"
2353
+ },
2354
+ "defaultTtl": {
2355
+ "description": "An optional default TTL (in milliseconds)."
2356
+ }
2357
+ },
2358
+ "required": [
2359
+ "store"
2360
+ ]
2361
+ },
2362
+ {
2363
+ "type": "object",
2364
+ "properties": {
2365
+ "store": {
2366
+ "type": "string",
2367
+ "const": "redis"
2368
+ },
2369
+ "connection": {
2370
+ "description": "A redis connection string in the form `redis://user:pass@host:port`.",
2371
+ "visibility": "secret",
2372
+ "type": "string"
2373
+ },
2374
+ "defaultTtl": {
2375
+ "description": "An optional default TTL (in milliseconds)."
2376
+ },
2377
+ "useRedisSets": {
2378
+ "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.",
2379
+ "type": "boolean"
2380
+ }
2381
+ },
2382
+ "required": [
2383
+ "connection",
2384
+ "store"
2385
+ ]
2386
+ },
2387
+ {
2388
+ "type": "object",
2389
+ "properties": {
2390
+ "store": {
2391
+ "type": "string",
2392
+ "const": "memcache"
2393
+ },
2394
+ "connection": {
2395
+ "description": "A memcache connection string in the form `user:pass@host:port`.",
2396
+ "visibility": "secret",
2397
+ "type": "string"
2398
+ },
2399
+ "defaultTtl": {
2400
+ "description": "An optional default TTL (in milliseconds)."
2401
+ }
2402
+ },
2403
+ "required": [
2404
+ "connection",
2405
+ "store"
2406
+ ]
2407
+ }
2408
+ ]
2409
+ },
2410
+ "cors": {
2411
+ "type": "object",
2412
+ "properties": {
2413
+ "origin": {
2414
+ "anyOf": [
2415
+ {
2416
+ "type": "array",
2417
+ "items": {
2418
+ "type": "string"
2419
+ }
2420
+ },
2421
+ {
2422
+ "type": "string"
2423
+ }
2424
+ ]
2425
+ },
2426
+ "methods": {
2427
+ "anyOf": [
2428
+ {
2429
+ "type": "array",
2430
+ "items": {
2431
+ "type": "string"
2432
+ }
2433
+ },
2434
+ {
2435
+ "type": "string"
2436
+ }
2437
+ ]
2438
+ },
2439
+ "allowedHeaders": {
2440
+ "anyOf": [
2441
+ {
2442
+ "type": "array",
2443
+ "items": {
2444
+ "type": "string"
2445
+ }
2446
+ },
2447
+ {
2448
+ "type": "string"
2449
+ }
2450
+ ]
2451
+ },
2452
+ "exposedHeaders": {
2453
+ "anyOf": [
2454
+ {
2455
+ "type": "array",
2456
+ "items": {
2457
+ "type": "string"
2458
+ }
2459
+ },
2460
+ {
2461
+ "type": "string"
2462
+ }
2463
+ ]
2464
+ },
2465
+ "credentials": {
2466
+ "type": "boolean"
2467
+ },
2468
+ "maxAge": {
2469
+ "type": "number"
2470
+ },
2471
+ "preflightContinue": {
2472
+ "type": "boolean"
2473
+ },
2474
+ "optionsSuccessStatus": {
2475
+ "type": "number"
2476
+ }
2477
+ }
2478
+ },
2479
+ "csp": {
2480
+ "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.",
2481
+ "type": "object",
2482
+ "additionalProperties": {
2483
+ "anyOf": [
2484
+ {
2485
+ "type": "array",
2486
+ "items": {
2487
+ "type": "string"
2488
+ }
2489
+ },
2490
+ {
2491
+ "const": false,
2492
+ "type": "boolean"
2493
+ }
2494
+ ]
2495
+ }
2496
+ },
2497
+ "reading": {
2498
+ "description": "Configuration related to URL reading, used for example for reading catalog info\nfiles, scaffolder templates, and techdocs content.",
2499
+ "type": "object",
2500
+ "properties": {
2501
+ "allow": {
2502
+ "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.",
2503
+ "type": "array",
2504
+ "items": {
2505
+ "type": "object",
2506
+ "properties": {
2507
+ "host": {
2508
+ "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`.",
2509
+ "type": "string"
2510
+ },
2511
+ "paths": {
2512
+ "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`.",
2513
+ "type": "array",
2514
+ "items": {
2515
+ "type": "string"
2516
+ }
2448
2517
  }
2518
+ },
2519
+ "required": [
2520
+ "host"
2449
2521
  ]
2450
2522
  }
2451
2523
  }
2452
2524
  }
2453
2525
  }
2454
- }
2526
+ },
2527
+ "required": [
2528
+ "baseUrl",
2529
+ "database"
2530
+ ]
2455
2531
  },
2456
2532
  "discovery": {
2457
2533
  "description": "Options used by the default discovery service.",
@@ -2506,6 +2582,9 @@
2506
2582
  ]
2507
2583
  }
2508
2584
  },
2585
+ "required": [
2586
+ "app"
2587
+ ],
2509
2588
  "$schema": "http://json-schema.org/draft-07/schema#"
2510
2589
  }
2511
2590
  }