diff --git a/docs/05-administrator-guide/03-operations/09-observability/02-recon/02-recon-rest-api.md b/docs/05-administrator-guide/03-operations/09-observability/02-recon/02-recon-rest-api.md
deleted file mode 100644
index bdb3195653..0000000000
--- a/docs/05-administrator-guide/03-operations/09-observability/02-recon/02-recon-rest-api.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Recon REST API
-
-**TODO:** [HDDS-10684](https://issues.apache.org/jira/browse/HDDS-10684) Embed a Swagger API spec into this page.
diff --git a/docs/05-administrator-guide/03-operations/09-observability/02-recon/02-recon-rest-api.mdx b/docs/05-administrator-guide/03-operations/09-observability/02-recon/02-recon-rest-api.mdx
new file mode 100644
index 0000000000..293d60865b
--- /dev/null
+++ b/docs/05-administrator-guide/03-operations/09-observability/02-recon/02-recon-rest-api.mdx
@@ -0,0 +1,9 @@
+# Recon REST API
+
+import SwaggerUI from '@site/src/components/SwaggerUI';
+
+Ozone Recon's public **REST API** follows the [OpenAPI specification](https://www.openapis.org/), and is documented below.
+
+The API is defined in the [recon-api.yaml](/recon-api.yaml) OpenAPI specification file and is available under the [Apache 2.0 License](http://www.apache.org/licenses/LICENSE-2.0.html).
+
+
diff --git a/package.json b/package.json
index 539ea84bb1..6994e32177 100644
--- a/package.json
+++ b/package.json
@@ -25,7 +25,8 @@
"prism-react-renderer": "^2.4.1",
"react": "^18.3.1",
"react-bootstrap-icons": "^1.11.5",
- "react-dom": "^18.3.1"
+ "react-dom": "^18.3.1",
+ "swagger-ui-react": "^5.31.0"
},
"devDependencies": {
"@cspell/dict-docker": "^1.1.12",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6225c55a51..41255a180d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -41,6 +41,9 @@ importers:
react-dom:
specifier: ^18.3.1
version: 18.3.1(react@18.3.1)
+ swagger-ui-react:
+ specifier: ^5.31.0
+ version: 5.31.0(@types/react@19.0.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
devDependencies:
'@cspell/dict-docker':
specifier: ^1.1.12
@@ -698,10 +701,18 @@ packages:
resolution: {integrity: sha512-uITFQYO68pMEYR46AHgQoyBg7KPPJDAbGn4jUTIRgCFJIp88MIBUianVOplhZDEec07bp9zIyr4Kp0FCyQzmWg==}
engines: {node: '>=6.9.0'}
+ '@babel/runtime-corejs3@7.28.6':
+ resolution: {integrity: sha512-kz2fAQ5UzjV7X7D3ySxmj3vRq89dTpqOZWv76Z6pNPztkwb/0Yj1Mtx1xFrYj6mbIHysxtBot8J4o0JLCblcFw==}
+ engines: {node: '>=6.9.0'}
+
'@babel/runtime@7.26.10':
resolution: {integrity: sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==}
engines: {node: '>=6.9.0'}
+ '@babel/runtime@7.28.6':
+ resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==}
+ engines: {node: '>=6.9.0'}
+
'@babel/template@7.26.9':
resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==}
engines: {node: '>=6.9.0'}
@@ -1524,6 +1535,9 @@ packages:
rollup:
optional: true
+ '@scarf/scarf@1.4.0':
+ resolution: {integrity: sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==}
+
'@sideway/address@4.1.5':
resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==}
@@ -1634,10 +1648,125 @@ packages:
resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==}
engines: {node: '>=14'}
+ '@swagger-api/apidom-ast@1.2.2':
+ resolution: {integrity: sha512-A2GaCpOg+SILyMEBZ7CtjUL7I4RCTUbmI1ldXuKYNOl2k8yo5maJWrJKcM4Y3X+mEmqXR57s3gVNGSMwNVO72w==}
+
+ '@swagger-api/apidom-core@1.2.2':
+ resolution: {integrity: sha512-wcV3Ej+emB+y/ybcNaF3bMURQ00UfJ3pTG80x6//blySg+g9LtS1HcXj2JggYxEVeWnarmX3HuHCzZTbw87Q1g==}
+
+ '@swagger-api/apidom-error@1.2.2':
+ resolution: {integrity: sha512-wU6i2ETXLVsUjwC2XR6oQDriUdo1L85BigyhcKFG88rXzSvwB5B5x3bAVUa95bQJHV0H/iU1BX5KuPk+AUDa1w==}
+
+ '@swagger-api/apidom-json-pointer@1.2.2':
+ resolution: {integrity: sha512-zbV4q4YA4bN65K17M3JvUqicI521sm7dI3WNwF26jTo/mXC9hrkbv8QznSGO1N9i+pOAQ4eO+3i0a+4iII9zEw==}
+
+ '@swagger-api/apidom-ns-api-design-systems@1.2.2':
+ resolution: {integrity: sha512-0D6RzBROnhUDSFcDURYnIYspuOXcJ9XBIv+08RwONno3Pr5VIRAwQqGFTldSOauMHMgwDLTwetUqPjEn3fjSpA==}
+
+ '@swagger-api/apidom-ns-arazzo-1@1.2.2':
+ resolution: {integrity: sha512-387mds78w90tCF6cAr2V1OznRK9vpGqn+cgjHlPkfQiAkqolZPGalh99kKTdzMhPkST1agdhKrosW2lw+9Na3A==}
+
+ '@swagger-api/apidom-ns-asyncapi-2@1.2.2':
+ resolution: {integrity: sha512-DRiN0xDPeZbc8Ic3knvSndZcWfBR5f2kRe/1QWuEdrAX4QCFgPtWgOlolKAOm/1FshflV0l0HmgoPQh24U7WFg==}
+
+ '@swagger-api/apidom-ns-asyncapi-3@1.2.2':
+ resolution: {integrity: sha512-Vs/R7EWrmyVr3voKlZi+C6e2Kn8x1+cB+8k5jSq8iMdXgVsLqD796iu6l+swU0nzV/HHDjli69WziKSpgBZu1g==}
+
+ '@swagger-api/apidom-ns-json-schema-2019-09@1.2.2':
+ resolution: {integrity: sha512-ivLx+OZ7uhXzweoPMDdBX8BMjXDMtWIpjHwS5AMhGLiVQWmx05vfgGTmDzBKDp89DDFDKfjwhHgMvVHAFc+9mg==}
+
+ '@swagger-api/apidom-ns-json-schema-2020-12@1.2.2':
+ resolution: {integrity: sha512-6uBWxnzllLs/0+q9w2iuPDlM6BevCXA0ARqUblqrrXohwdsRCk88bw9ku+dre2egDQxTkviYFIn9S3ycip2eEw==}
+
+ '@swagger-api/apidom-ns-json-schema-draft-4@1.2.2':
+ resolution: {integrity: sha512-1BVOBZzDu/We8DfS7COpcQ4cn7IJNwGq67Z3rdTfld7a/QJnMf6SUkSPEir7q7q5vJhRhD0ldlU7RUJWzZavFw==}
+
+ '@swagger-api/apidom-ns-json-schema-draft-6@1.2.2':
+ resolution: {integrity: sha512-nHmAE57iAkkORKVd89GUaQUSY01VlpxW4HuGoBqZJ8GcuCkfky7Zi5XF7gH2Gg1nYPOzmZNJa69+mDoOe/n81g==}
+
+ '@swagger-api/apidom-ns-json-schema-draft-7@1.2.2':
+ resolution: {integrity: sha512-udoaz8pOYnniS/xV/jwXbEVKcOYZ0AbRRu1ZlepUR6xkpGjCNXKpJ9oxCSlR9BNjFY2Lkln2pp7RQ6i3KyG0Gw==}
+
+ '@swagger-api/apidom-ns-openapi-2@1.2.2':
+ resolution: {integrity: sha512-K1ohVyJyDIUQg5ufUb726qFt6zxBIpQl2KMwRoUfZw/eqd7ee2If0AtL0t9qPkDNPAy1l/+NLJtg8kjny2MkBg==}
+
+ '@swagger-api/apidom-ns-openapi-3-0@1.2.2':
+ resolution: {integrity: sha512-bUN8SfI1Qc5jWJrcFtfJQa6Z04DLGQTBRGtfPr6BmfB7vN0J+LRdd93EJXWVlXWHzKz9nlq7JJ3qJnSnypHB7Q==}
+
+ '@swagger-api/apidom-ns-openapi-3-1@1.2.2':
+ resolution: {integrity: sha512-qgIjjlR1BfFmjmB82YuAEAtS06WBHMyPNRdF/zV4uSgUwnpkgByoYGaXrVRii/rHEmc1N1nHGaFfumDYUWljdg==}
+
+ '@swagger-api/apidom-parser-adapter-api-design-systems-json@1.2.2':
+ resolution: {integrity: sha512-7c7+e+OIX24i1iAsEOuPBfHoZ8nz1YESdA7Rr0NUApWPocsB6atKgO3NqlRxFRm+eqBV1n9O5YnLxa2E3hhldw==}
+
+ '@swagger-api/apidom-parser-adapter-api-design-systems-yaml@1.2.2':
+ resolution: {integrity: sha512-pr9lt6mnLgoD+DSsFktu751VKXALFY+spb6+ns6aTq3FaEt6nD0qIOb3Vz1hgzJsax4Day7JZgjaWG9Kk7vY5A==}
+
+ '@swagger-api/apidom-parser-adapter-arazzo-json-1@1.2.2':
+ resolution: {integrity: sha512-0ULPlNJysnFPjhwgKK3m2Cm+3odoBeGdMM6BiPKBAZ5x0RKRJK2lD5HU8L3SOzQogWEm0YqINuVipaneGymbbg==}
+
+ '@swagger-api/apidom-parser-adapter-arazzo-yaml-1@1.2.2':
+ resolution: {integrity: sha512-nHPm94VrDNsh5LboJJI9pos4YJjt9pAX1j9dx/r3g2mjMqpAA/HlftYMZ4jvrOKo7e1OqN9OkegsVuey225ogQ==}
+
+ '@swagger-api/apidom-parser-adapter-asyncapi-json-2@1.2.2':
+ resolution: {integrity: sha512-tcuzT35jBdilAcdAPBVIhbh2RyzwO+NljwX50MpXVO5JZXSRCN+lQeNUjxuhnUe8MzfVT7Ct+9hoxURobVga7Q==}
+
+ '@swagger-api/apidom-parser-adapter-asyncapi-json-3@1.2.2':
+ resolution: {integrity: sha512-mcFgqQkb0uo1YPq+9bLDC0oGpi3Qus+MPGJe5tgJoBOwZC7nnZpzrM0vMsHIfEp//uauw77ekZt/5pbipGgC0A==}
+
+ '@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@1.2.2':
+ resolution: {integrity: sha512-SJava43USnIaz4X7iGfTDx3+j7m7DGbTnz5FDsLeLwH/ZmoRsRp9OnPxFp3J/pJ2mENISqeRUxVcJKVvBx0JbA==}
+
+ '@swagger-api/apidom-parser-adapter-asyncapi-yaml-3@1.2.2':
+ resolution: {integrity: sha512-601noVwKmWoBQC0NdRlkApmSf1cgii3wgbU1cFLlWz9LshJNXhzrs0rTRkwncJNM0100DtumKhvN+xOeM82MyA==}
+
+ '@swagger-api/apidom-parser-adapter-json@1.2.2':
+ resolution: {integrity: sha512-huEX+PjfFNJroNiYooIneGynbrH7EwkQfuZXvzA4PXPCh8M7jNPR4vOWmj0jnXeRyaJ0/iokLrHkfqW1d1Bs9Q==}
+
+ '@swagger-api/apidom-parser-adapter-openapi-json-2@1.2.2':
+ resolution: {integrity: sha512-iZLl1DQhy8rjRduRntZI1RNwfz1p85zEeTWImToqfOCdK/az3914ZkG0ForfWWCdvpHYChEhgksgdknFKSZv8w==}
+
+ '@swagger-api/apidom-parser-adapter-openapi-json-3-0@1.2.2':
+ resolution: {integrity: sha512-fk7up4pw9I9pl4H35K4MIYUZnlVPGNc6cHtXYf6qRctkB7WQvGb1R59iEAUvexexlObQyfOIUyo/HS3NcIlpKA==}
+
+ '@swagger-api/apidom-parser-adapter-openapi-json-3-1@1.2.2':
+ resolution: {integrity: sha512-HwbVXojjqzCc77QexZw6rDNg3I9I7X4WuOOm3WzM/TcajL5oyXm+xcV25LzXzhR71lSnznIhnEcbzN++pnCM7A==}
+
+ '@swagger-api/apidom-parser-adapter-openapi-yaml-2@1.2.2':
+ resolution: {integrity: sha512-9D7rZ/Y37G7Mp5sTQvB5udPqDF0aajdJMoRN7U41cJmPPEwjPPAHuPTZzKwjhdvetEyL+1Qo0E2c35VDwVyeaw==}
+
+ '@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@1.2.2':
+ resolution: {integrity: sha512-N6yQ93kRrPbQYdyD7QlHJbs0j2ItUvVIvHk+Z9iSQKD5ShOwzxDqUowYBTgsSkSDKeqqZWuxB2l7voWerUKToQ==}
+
+ '@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@1.2.2':
+ resolution: {integrity: sha512-qH3gJxeZe+KZk2PxcSzciNwoPr754tce1HqqHYAVeCrf2XD6wf+AhBWSeB8pEHceToVU9zS1prEs1aeooM2yWw==}
+
+ '@swagger-api/apidom-parser-adapter-yaml-1-2@1.2.2':
+ resolution: {integrity: sha512-q6jpgFnBHm/Thy/udSmjb8RKEjDMlfhbwehrYLVI4DVeAnxNWY3Kn2G2GLuVEUehPPIBVRdrin5Nv8vRcwAa2w==}
+
+ '@swagger-api/apidom-reference@1.2.2':
+ resolution: {integrity: sha512-rPXfTV9q3Dr+PYgC0G0ZYrQ3dpkiuoYQGuc29bsI83ZVBROwbUbCNOpBwOnXJJWcuBZUHs7xKR/tE5aFLlmXWQ==}
+
+ '@swaggerexpert/cookie@2.0.2':
+ resolution: {integrity: sha512-DPI8YJ0Vznk4CT+ekn3rcFNq1uQwvUHZhH6WvTSPD0YKBIlMS9ur2RYKghXuxxOiqOam/i4lHJH4xTIiTgs3Mg==}
+ engines: {node: '>=12.20.0'}
+
+ '@swaggerexpert/json-pointer@2.10.2':
+ resolution: {integrity: sha512-qMx1nOrzoB+PF+pzb26Q4Tc2sOlrx9Ba2UBNX9hB31Omrq+QoZ2Gly0KLrQWw4Of1AQ4J9lnD+XOdwOdcdXqqw==}
+ engines: {node: '>=12.20.0'}
+
'@szmarczak/http-timer@5.0.1':
resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==}
engines: {node: '>=14.16'}
+ '@tree-sitter-grammars/tree-sitter-yaml@0.7.1':
+ resolution: {integrity: sha512-AynBwkIoQCTgjDR33bDUp9Mqq+YTco0is3n5hRApMqG9of/6A4eQsfC1/uSEeHSUyMQSYawcAWamsexnVpIP4Q==}
+ peerDependencies:
+ tree-sitter: ^0.22.4
+ peerDependenciesMeta:
+ tree-sitter:
+ optional: true
+
'@trysound/sax@0.2.0':
resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
engines: {node: '>=10.13.0'}
@@ -1759,6 +1888,9 @@ packages:
'@types/qs@6.9.18':
resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==}
+ '@types/ramda@0.30.2':
+ resolution: {integrity: sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==}
+
'@types/range-parser@1.2.7':
resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==}
@@ -1804,6 +1936,9 @@ packages:
'@types/unist@3.0.3':
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
+ '@types/use-sync-external-store@0.0.6':
+ resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==}
+
'@types/ws@8.18.0':
resolution: {integrity: sha512-8svvI3hMyvN0kKCJMvTJP/x6Y/EoQbepff882wL+Sn5QsXb3etnamgrJq4isrBxSJj5L2AuXcI0+bgkoAXGUJw==}
@@ -1967,6 +2102,9 @@ packages:
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
engines: {node: '>= 8'}
+ apg-lite@1.0.5:
+ resolution: {integrity: sha512-SlI+nLMQDzCZfS39ihzjGp3JNBQfJXyMi6cg9tkLOCPVErgFsUIAEdO9IezR7kbP5Xd0ozcPNQBkf9TO5cHgWw==}
+
arg@5.0.2:
resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
@@ -2005,10 +2143,16 @@ packages:
async@3.2.6:
resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==}
+ asynckit@0.4.0:
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+
at-least-node@1.0.0:
resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==}
engines: {node: '>= 4.0.0'}
+ autolinker@3.16.2:
+ resolution: {integrity: sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA==}
+
autoprefixer@10.4.21:
resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==}
engines: {node: ^10 || ^12 || >=14}
@@ -2020,6 +2164,9 @@ packages:
resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
engines: {node: '>= 0.4'}
+ axios@1.13.2:
+ resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==}
+
babel-loader@9.2.1:
resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==}
engines: {node: '>= 14.15.0'}
@@ -2051,6 +2198,9 @@ packages:
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ base64-js@1.5.1:
+ resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+
batch@0.6.1:
resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==}
@@ -2097,6 +2247,9 @@ packages:
buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+ buffer@6.0.3:
+ resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
+
bytes@3.0.0:
resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==}
engines: {node: '>= 0.8'}
@@ -2196,6 +2349,9 @@ packages:
resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
engines: {node: '>=8'}
+ classnames@2.5.1:
+ resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==}
+
clean-css@5.3.3:
resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==}
engines: {node: '>= 10.0'}
@@ -2244,6 +2400,10 @@ packages:
resolution: {integrity: sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==}
engines: {node: '>=10'}
+ combined-stream@1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+
comma-separated-tokens@2.0.3:
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
@@ -2337,6 +2497,9 @@ packages:
resolution: {integrity: sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==}
engines: {node: '>=12'}
+ copy-to-clipboard@3.3.3:
+ resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==}
+
copy-webpack-plugin@11.0.0:
resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==}
engines: {node: '>= 14.15.0'}
@@ -2349,6 +2512,9 @@ packages:
core-js-pure@3.41.0:
resolution: {integrity: sha512-71Gzp96T9YPk63aUvE5Q5qP+DryB4ZloUZPSOebGM88VNw8VNfvdA7z6kGA8iGOTEzAomsRidp4jXSmUIJsL+Q==}
+ core-js-pure@3.47.0:
+ resolution: {integrity: sha512-BcxeDbzUrRnXGYIVAGFtcGQVNpFcUhVjr6W7F8XktvQW2iJP9e66GP6xdKotCRFlrxBvNIBrhwKteRXqMV86Nw==}
+
core-js@3.41.0:
resolution: {integrity: sha512-SJ4/EHwS36QMJd6h/Rg+GyR4A5xE0FSI3eZ+iBVpfqf1x0eTSg1smWLHrA+2jQThZSh97fmSgFSU8B61nxosxA==}
@@ -2501,6 +2667,9 @@ packages:
resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
engines: {node: '>= 6'}
+ css.escape@1.5.1:
+ resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==}
+
cssdb@8.2.4:
resolution: {integrity: sha512-3KSCVkjZJe/QxicVXnbyYSY26WsFc1YoMY7jep1ZKWMEVc7jEm6V2Xq2r+MX8WKQIuB7ofGbnr5iVI+aZpoSzg==}
@@ -2768,6 +2937,10 @@ packages:
delaunator@5.0.1:
resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==}
+ delayed-stream@1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
+
depd@1.1.2:
resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==}
engines: {node: '>= 0.6'}
@@ -2835,6 +3008,9 @@ packages:
dompurify@3.1.6:
resolution: {integrity: sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==}
+ dompurify@3.2.6:
+ resolution: {integrity: sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==}
+
domutils@2.8.0:
resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
@@ -2848,6 +3024,10 @@ packages:
resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==}
engines: {node: '>=10'}
+ drange@1.1.1:
+ resolution: {integrity: sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==}
+ engines: {node: '>=4'}
+
dunder-proto@1.0.1:
resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
engines: {node: '>= 0.4'}
@@ -3077,6 +3257,9 @@ packages:
resolution: {integrity: sha512-4j5uBaTnsYAV5ebkidvxiLUYOwjQ+JSFljeqfTxCrH9bDmlCQaOJFS84oDJ2rAXZq2yskmk3ORfoP9DCwqFNig==}
engines: {node: '>= 0.4.0'}
+ fast-json-patch@3.1.1:
+ resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==}
+
fast-json-stable-stringify@2.1.0:
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
@@ -3086,6 +3269,9 @@ packages:
fastq@1.19.1:
resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
+ fault@1.0.4:
+ resolution: {integrity: sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==}
+
fault@2.0.1:
resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==}
@@ -3200,6 +3386,10 @@ packages:
resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==}
engines: {node: '>= 14.17'}
+ form-data@4.0.5:
+ resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==}
+ engines: {node: '>= 6'}
+
format@0.2.2:
resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==}
engines: {node: '>=0.4.x'}
@@ -3418,6 +3608,12 @@ packages:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
hasBin: true
+ highlight.js@10.7.3:
+ resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==}
+
+ highlightjs-vue@1.0.0:
+ resolution: {integrity: sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==}
+
history@4.10.1:
resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==}
@@ -3523,6 +3719,9 @@ packages:
idb@7.1.1:
resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==}
+ ieee754@1.2.1:
+ resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
+
ignore@5.3.2:
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
engines: {node: '>= 4'}
@@ -3535,6 +3734,10 @@ packages:
immer@9.0.21:
resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==}
+ immutable@3.8.2:
+ resolution: {integrity: sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==}
+ engines: {node: '>=0.10.0'}
+
import-fresh@3.3.1:
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
engines: {node: '>=6'}
@@ -3849,6 +4052,9 @@ packages:
joi@17.13.3:
resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==}
+ js-file-download@0.4.12:
+ resolution: {integrity: sha512-rML+NkoD08p5Dllpjo0ffy4jRHeY6Zsapvr/W86N7E0yuzAO6qa5X9+xog6zQNlH102J7IXljNY2FtS6Lj3ucg==}
+
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@@ -3860,6 +4066,10 @@ packages:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
+ js-yaml@4.1.1:
+ resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
+ hasBin: true
+
jsesc@3.0.2:
resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
engines: {node: '>=6'}
@@ -4005,6 +4215,9 @@ packages:
resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ lowlight@1.20.0:
+ resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==}
+
lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
@@ -4360,6 +4573,10 @@ packages:
peerDependencies:
webpack: ^5.0.0
+ minim@0.23.8:
+ resolution: {integrity: sha512-bjdr2xW1dBCMsMGGsUeqM4eFI60m94+szhxWys+B1ztIt6gWSfeGBdSVCIawezeHYLYn0j6zrsXdQS/JllBzww==}
+ engines: {node: '>=6'}
+
minimalistic-assert@1.0.1:
resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==}
@@ -4370,6 +4587,10 @@ packages:
resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
engines: {node: '>=10'}
+ minimatch@7.4.6:
+ resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==}
+ engines: {node: '>=10'}
+
minimatch@9.0.5:
resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
engines: {node: '>=16 || 14 >=14.17'}
@@ -4415,17 +4636,41 @@ packages:
neo-async@2.6.2:
resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
+ neotraverse@0.6.18:
+ resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==}
+ engines: {node: '>= 10'}
+
no-case@3.0.4:
resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
+ node-abort-controller@3.1.1:
+ resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==}
+
+ node-addon-api@8.5.0:
+ resolution: {integrity: sha512-/bRZty2mXUIFY/xU5HLvveNHlswNJej+RnxBjOMkidWfwZzgTbPG1E3K5TOxRLOR+5hX7bSofy8yf1hZevMS8A==}
+ engines: {node: ^18 || ^20 || >= 21}
+
+ node-domexception@1.0.0:
+ resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==}
+ engines: {node: '>=10.5.0'}
+ deprecated: Use your platform's native DOMException instead
+
node-emoji@2.2.0:
resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==}
engines: {node: '>=18'}
+ node-fetch-commonjs@3.3.2:
+ resolution: {integrity: sha512-VBlAiynj3VMLrotgwOS3OyECFxas5y7ltLcK4t41lMUZeaK15Ym4QRkqN0EQKAFL42q9i21EPKjzLUPfltR72A==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
node-forge@1.3.1:
resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==}
engines: {node: '>= 6.13.0'}
+ node-gyp-build@4.8.4:
+ resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==}
+ hasBin: true
+
node-releases@2.0.19:
resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}
@@ -4498,6 +4743,14 @@ packages:
resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==}
engines: {node: '>=12'}
+ openapi-path-templating@2.2.1:
+ resolution: {integrity: sha512-eN14VrDvl/YyGxxrkGOHkVkWEoPyhyeydOUrbvjoz8K5eIGgELASwN1eqFOJ2CTQMGCy2EntOK1KdtJ8ZMekcg==}
+ engines: {node: '>=12.20.0'}
+
+ openapi-server-url-templating@1.3.0:
+ resolution: {integrity: sha512-DPlCms3KKEbjVQb0spV6Awfn6UWNheuG/+folQPzh/wUaKwuqvj8zt5gagD7qoyxtE03cIiKPgLFS3Q8Bz00uQ==}
+ engines: {node: '>=12.20.0'}
+
opener@1.5.2:
resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==}
hasBin: true
@@ -5064,6 +5317,10 @@ packages:
process-nextick-args@2.0.1:
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+ process@0.11.10:
+ resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
+ engines: {node: '>= 0.6.0'}
+
prompts@2.4.2:
resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
engines: {node: '>= 6'}
@@ -5084,6 +5341,9 @@ packages:
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
engines: {node: '>= 0.10'}
+ proxy-from-env@1.1.0:
+ resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
+
punycode.js@2.3.1:
resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==}
engines: {node: '>=6'}
@@ -5100,6 +5360,9 @@ packages:
resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==}
engines: {node: '>=0.6'}
+ querystringify@2.2.0:
+ resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
+
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
@@ -5110,6 +5373,19 @@ packages:
resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
engines: {node: '>=10'}
+ ramda-adjunct@5.1.0:
+ resolution: {integrity: sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==}
+ engines: {node: '>=0.10.3'}
+ peerDependencies:
+ ramda: '>= 0.30.0'
+
+ ramda@0.30.1:
+ resolution: {integrity: sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==}
+
+ randexp@0.5.3:
+ resolution: {integrity: sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w==}
+ engines: {node: '>=4'}
+
randombytes@2.1.0:
resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
@@ -5134,6 +5410,16 @@ packages:
peerDependencies:
react: '>=16.8.6'
+ react-copy-to-clipboard@5.1.0:
+ resolution: {integrity: sha512-k61RsNgAayIJNoy9yDsYzDe/yAZAzEbEgcz3DZMhF686LEyukcE1hzurxe85JandPUG+yTfGVFzuEw3xt8WP/A==}
+ peerDependencies:
+ react: ^15.3.0 || 16 || 17 || 18
+
+ react-debounce-input@3.3.0:
+ resolution: {integrity: sha512-VEqkvs8JvY/IIZvh71Z0TC+mdbxERvYF33RcebnodlsUZ8RSgyKe2VWaHXv4+/8aoOgXLxWrdsYs2hDhcwbUgA==}
+ peerDependencies:
+ react: ^15.3.0 || 16 || 17 || 18
+
react-dev-utils@12.0.1:
resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==}
engines: {node: '>=14'}
@@ -5155,6 +5441,23 @@ packages:
react-fast-compare@3.2.2:
resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==}
+ react-immutable-proptypes@2.2.0:
+ resolution: {integrity: sha512-Vf4gBsePlwdGvSZoLSBfd4HAP93HDauMY4fDjXhreg/vg6F3Fj/MXDNyTbltPC/xZKmZc+cjLu3598DdYK6sgQ==}
+ peerDependencies:
+ immutable: '>=3.6.2'
+
+ react-immutable-pure-component@2.2.2:
+ resolution: {integrity: sha512-vkgoMJUDqHZfXXnjVlG3keCxSO/U6WeDQ5/Sl0GK2cH8TOxEzQ5jXqDXHEL/jqk6fsNxV05oH5kD7VNMUE2k+A==}
+ peerDependencies:
+ immutable: '>= 2 || >= 4.0.0-rc'
+ react: '>= 16.6'
+ react-dom: '>= 16.6'
+
+ react-inspector@6.0.2:
+ resolution: {integrity: sha512-x+b7LxhmHXjHoU/VrFAzw5iutsILRoYyDq97EDYdFpPLcvqtEzk4ZSZSQjnFPbr5T57tLXnHcqFYoN1pI6u8uQ==}
+ peerDependencies:
+ react: ^16.8.4 || ^17.0.0 || ^18.0.0
+
react-is@16.13.1:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
@@ -5171,6 +5474,18 @@ packages:
react-loadable: '*'
webpack: '>=4.41.1 || 5.x'
+ react-redux@9.2.0:
+ resolution: {integrity: sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==}
+ peerDependencies:
+ '@types/react': ^18.2.25 || ^19
+ react: ^18.0 || ^19
+ redux: ^5.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ redux:
+ optional: true
+
react-router-config@5.1.1:
resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==}
peerDependencies:
@@ -5187,6 +5502,12 @@ packages:
peerDependencies:
react: '>=15'
+ react-syntax-highlighter@16.1.0:
+ resolution: {integrity: sha512-E40/hBiP5rCNwkeBN1vRP+xow1X0pndinO+z3h7HLsHyjztbyjfzNWNKuAsJj+7DLam9iT4AaaOZnueCU+Nplg==}
+ engines: {node: '>= 16.20.2'}
+ peerDependencies:
+ react: '>= 0.14.0'
+
react@18.3.1:
resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
engines: {node: '>=0.10.0'}
@@ -5225,10 +5546,21 @@ packages:
resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==}
engines: {node: '>=6.0.0'}
+ redux-immutable@4.0.0:
+ resolution: {integrity: sha512-SchSn/DWfGb3oAejd+1hhHx01xUoxY+V7TeK0BKqpkLKiQPVFf7DYzEaKmrEVxsWxielKfSK9/Xq66YyxgR1cg==}
+ peerDependencies:
+ immutable: ^3.8.1 || ^4.0.0-rc.1
+
+ redux@5.0.1:
+ resolution: {integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==}
+
reflect.getprototypeof@1.0.10:
resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
engines: {node: '>= 0.4'}
+ refractor@5.0.0:
+ resolution: {integrity: sha512-QXOrHQF5jOpjjLfiNk5GFnWhRXvxjUVnlFxkeDmewR5sXkr3iM46Zo+CnRR8B+MDVqkULW4EcLVcRBNOPXHosw==}
+
regenerate-unicode-properties@10.2.0:
resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==}
engines: {node: '>=4'}
@@ -5300,6 +5632,11 @@ packages:
remark-stringify@11.0.0:
resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==}
+ remarkable@2.0.1:
+ resolution: {integrity: sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA==}
+ engines: {node: '>= 6.0.0'}
+ hasBin: true
+
renderkid@3.0.0:
resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==}
@@ -5317,6 +5654,9 @@ packages:
requires-port@1.0.0:
resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
+ reselect@5.1.1:
+ resolution: {integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==}
+
resolve-alpn@1.2.1:
resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==}
@@ -5340,6 +5680,10 @@ packages:
resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==}
engines: {node: '>=14.16'}
+ ret@0.2.2:
+ resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==}
+ engines: {node: '>=4'}
+
retry@0.13.1:
resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==}
engines: {node: '>= 4'}
@@ -5450,6 +5794,10 @@ packages:
resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==}
engines: {node: '>= 0.8.0'}
+ serialize-error@8.1.0:
+ resolution: {integrity: sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==}
+ engines: {node: '>=10'}
+
serialize-javascript@6.0.2:
resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==}
@@ -5482,6 +5830,11 @@ packages:
setprototypeof@1.2.0:
resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
+ sha.js@2.4.12:
+ resolution: {integrity: sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==}
+ engines: {node: '>= 0.10'}
+ hasBin: true
+
shallow-clone@3.0.1:
resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==}
engines: {node: '>=8'}
@@ -5506,6 +5859,10 @@ packages:
engines: {node: '>=4'}
hasBin: true
+ short-unique-id@5.3.2:
+ resolution: {integrity: sha512-KRT/hufMSxXKEDSQujfVE0Faa/kZ51ihUcZQAcmP04t00DvPj7Ox5anHke1sJYUtzSuiT/Y5uyzg/W7bBEGhCg==}
+ hasBin: true
+
side-channel-list@1.0.0:
resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
engines: {node: '>= 0.4'}
@@ -5718,6 +6075,15 @@ packages:
engines: {node: '>=14.0.0'}
hasBin: true
+ swagger-client@3.36.0:
+ resolution: {integrity: sha512-9fkjxGHXuKy20jj8zwE6RwgFSOGKAyOD5U7aKgW/+/futtHZHOdZeqiEkb97sptk2rdBv7FEiUQDNlWZR186RA==}
+
+ swagger-ui-react@5.31.0:
+ resolution: {integrity: sha512-E/sTgKADThzpVksaGXbhED0pQCYdajiBNOzvSAan+RhV7pdoi2qvdwWhZsIo8nRvHk9UXJ0nkuxrud854ICr7A==}
+ peerDependencies:
+ react: '>=16.8.0 <20'
+ react-dom: '>=16.8.0 <20'
+
tapable@1.1.3:
resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==}
engines: {node: '>=6'}
@@ -5771,10 +6137,17 @@ packages:
resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==}
engines: {node: '>=12.0.0'}
+ to-buffer@1.2.2:
+ resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==}
+ engines: {node: '>= 0.4'}
+
to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
+ toggle-selection@1.0.6:
+ resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==}
+
toidentifier@1.0.1:
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
engines: {node: '>=0.6'}
@@ -5786,6 +6159,17 @@ packages:
tr46@1.0.1:
resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==}
+ tree-sitter-json@0.24.8:
+ resolution: {integrity: sha512-Tc9ZZYwHyWZ3Tt1VEw7Pa2scu1YO7/d2BCBbKTx5hXwig3UfdQjsOPkPyLpDJOn/m1UBEWYAtSdGAwCSyagBqQ==}
+ peerDependencies:
+ tree-sitter: ^0.21.1
+ peerDependenciesMeta:
+ tree-sitter:
+ optional: true
+
+ tree-sitter@0.22.4:
+ resolution: {integrity: sha512-usbHZP9/oxNsUY65MQUsduGRqDHQOou1cagUSwjhoSYAmSahjQDAVsh9s+SlZkn8X8+O1FULRGwHu7AFP3kjzg==}
+
trim-lines@3.0.1:
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
@@ -5796,6 +6180,12 @@ packages:
resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==}
engines: {node: '>=6.10'}
+ ts-mixer@6.0.4:
+ resolution: {integrity: sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==}
+
+ ts-toolbelt@9.6.0:
+ resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==}
+
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
@@ -5803,6 +6193,10 @@ packages:
resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==}
engines: {node: '>=10'}
+ type-fest@0.20.2:
+ resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
+ engines: {node: '>=10'}
+
type-fest@0.21.3:
resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
engines: {node: '>=10'}
@@ -5838,6 +6232,9 @@ packages:
typedarray-to-buffer@3.1.5:
resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==}
+ types-ramda@0.30.1:
+ resolution: {integrity: sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==}
+
typescript@5.8.2:
resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==}
engines: {node: '>=14.17'}
@@ -5913,6 +6310,9 @@ packages:
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
engines: {node: '>= 0.8'}
+ unraw@3.0.0:
+ resolution: {integrity: sha512-08/DA66UF65OlpUDIQtbJyrqTR0jTAlJ+jsnkQ4jxR7+K5g5YG1APZKQSMCE1vqqmD+2pv6+IdEjmopFatacvg==}
+
upath@1.2.0:
resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==}
engines: {node: '>=4'}
@@ -5940,6 +6340,14 @@ packages:
file-loader:
optional: true
+ url-parse@1.5.10:
+ resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
+
+ use-sync-external-store@1.6.0:
+ resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
@@ -5999,6 +6407,13 @@ packages:
web-namespaces@2.0.1:
resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
+ web-streams-polyfill@3.3.3:
+ resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==}
+ engines: {node: '>= 8'}
+
+ web-tree-sitter@0.24.5:
+ resolution: {integrity: sha512-+J/2VSHN8J47gQUAvF8KDadrfz6uFYVjxoxbKWDoXVsH2u7yLdarCnIURnrMA6uSRkgX3SdmqM5BOoQjPdSh5w==}
+
web-worker@1.3.0:
resolution: {integrity: sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==}
@@ -6191,10 +6606,16 @@ packages:
resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==}
engines: {node: '>=12'}
+ xml-but-prettier@1.0.1:
+ resolution: {integrity: sha512-C2CJaadHrZTqESlH03WOyw0oZTtoy2uEg6dSDF6YRg+9GnYNub53RRemLpnvtbHDFelxMx4LajiFsYeR6XJHgQ==}
+
xml-js@1.6.11:
resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==}
hasBin: true
+ xml@1.0.1:
+ resolution: {integrity: sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==}
+
yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
@@ -6215,6 +6636,9 @@ packages:
resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==}
engines: {node: '>=12.20'}
+ zenscroll@4.0.2:
+ resolution: {integrity: sha512-jEA1znR7b4C/NnaycInCU6h/d15ZzCd1jmsruqOKnZP6WXQSMH3W2GL+OXbkruslU4h+Tzuos0HdswzRUk/Vgg==}
+
zwitch@2.0.4:
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
@@ -7051,10 +7475,16 @@ snapshots:
core-js-pure: 3.41.0
regenerator-runtime: 0.14.1
+ '@babel/runtime-corejs3@7.28.6':
+ dependencies:
+ core-js-pure: 3.47.0
+
'@babel/runtime@7.26.10':
dependencies:
regenerator-runtime: 0.14.1
+ '@babel/runtime@7.28.6': {}
+
'@babel/template@7.26.9':
dependencies:
'@babel/code-frame': 7.26.2
@@ -8578,6 +9008,8 @@ snapshots:
optionalDependencies:
rollup: 2.79.2
+ '@scarf/scarf@1.4.0': {}
+
'@sideway/address@4.1.5':
dependencies:
'@hapi/hoek': 9.3.0
@@ -8594,7 +9026,7 @@ snapshots:
'@slorber/react-helmet-async@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@babel/runtime': 7.26.10
+ '@babel/runtime': 7.28.6
invariant: 2.2.4
prop-types: 15.8.1
react: 18.3.1
@@ -8708,10 +9140,412 @@ snapshots:
- supports-color
- typescript
+ '@swagger-api/apidom-ast@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-error': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ unraw: 3.0.0
+
+ '@swagger-api/apidom-core@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-ast': 1.2.2
+ '@swagger-api/apidom-error': 1.2.2
+ '@types/ramda': 0.30.2
+ minim: 0.23.8
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ short-unique-id: 5.3.2
+ ts-mixer: 6.0.4
+
+ '@swagger-api/apidom-error@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+
+ '@swagger-api/apidom-json-pointer@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-error': 1.2.2
+ '@swaggerexpert/json-pointer': 2.10.2
+
+ '@swagger-api/apidom-ns-api-design-systems@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-error': 1.2.2
+ '@swagger-api/apidom-ns-openapi-3-1': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ ts-mixer: 6.0.4
+ optional: true
+
+ '@swagger-api/apidom-ns-arazzo-1@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-ns-json-schema-2020-12': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ ts-mixer: 6.0.4
+ optional: true
+
+ '@swagger-api/apidom-ns-asyncapi-2@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-ns-json-schema-draft-7': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ ts-mixer: 6.0.4
+ optional: true
+
+ '@swagger-api/apidom-ns-asyncapi-3@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-ns-asyncapi-2': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ ts-mixer: 6.0.4
+ optional: true
+
+ '@swagger-api/apidom-ns-json-schema-2019-09@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-error': 1.2.2
+ '@swagger-api/apidom-ns-json-schema-draft-7': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ ts-mixer: 6.0.4
+
+ '@swagger-api/apidom-ns-json-schema-2020-12@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-error': 1.2.2
+ '@swagger-api/apidom-ns-json-schema-2019-09': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ ts-mixer: 6.0.4
+
+ '@swagger-api/apidom-ns-json-schema-draft-4@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-ast': 1.2.2
+ '@swagger-api/apidom-core': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ ts-mixer: 6.0.4
+
+ '@swagger-api/apidom-ns-json-schema-draft-6@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-error': 1.2.2
+ '@swagger-api/apidom-ns-json-schema-draft-4': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ ts-mixer: 6.0.4
+
+ '@swagger-api/apidom-ns-json-schema-draft-7@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-error': 1.2.2
+ '@swagger-api/apidom-ns-json-schema-draft-6': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ ts-mixer: 6.0.4
+
+ '@swagger-api/apidom-ns-openapi-2@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-error': 1.2.2
+ '@swagger-api/apidom-ns-json-schema-draft-4': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ ts-mixer: 6.0.4
+ optional: true
+
+ '@swagger-api/apidom-ns-openapi-3-0@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-error': 1.2.2
+ '@swagger-api/apidom-ns-json-schema-draft-4': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ ts-mixer: 6.0.4
+
+ '@swagger-api/apidom-ns-openapi-3-1@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-ast': 1.2.2
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-json-pointer': 1.2.2
+ '@swagger-api/apidom-ns-json-schema-2020-12': 1.2.2
+ '@swagger-api/apidom-ns-openapi-3-0': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ ts-mixer: 6.0.4
+
+ '@swagger-api/apidom-parser-adapter-api-design-systems-json@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-ns-api-design-systems': 1.2.2
+ '@swagger-api/apidom-parser-adapter-json': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ optional: true
+
+ '@swagger-api/apidom-parser-adapter-api-design-systems-yaml@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-ns-api-design-systems': 1.2.2
+ '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ optional: true
+
+ '@swagger-api/apidom-parser-adapter-arazzo-json-1@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-ns-arazzo-1': 1.2.2
+ '@swagger-api/apidom-parser-adapter-json': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ optional: true
+
+ '@swagger-api/apidom-parser-adapter-arazzo-yaml-1@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-ns-arazzo-1': 1.2.2
+ '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ optional: true
+
+ '@swagger-api/apidom-parser-adapter-asyncapi-json-2@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-ns-asyncapi-2': 1.2.2
+ '@swagger-api/apidom-parser-adapter-json': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ optional: true
+
+ '@swagger-api/apidom-parser-adapter-asyncapi-json-3@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-ns-asyncapi-3': 1.2.2
+ '@swagger-api/apidom-parser-adapter-json': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ optional: true
+
+ '@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-ns-asyncapi-2': 1.2.2
+ '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ optional: true
+
+ '@swagger-api/apidom-parser-adapter-asyncapi-yaml-3@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-ns-asyncapi-3': 1.2.2
+ '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ optional: true
+
+ '@swagger-api/apidom-parser-adapter-json@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-ast': 1.2.2
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-error': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ tree-sitter: 0.22.4
+ tree-sitter-json: 0.24.8(tree-sitter@0.22.4)
+ web-tree-sitter: 0.24.5
+ optional: true
+
+ '@swagger-api/apidom-parser-adapter-openapi-json-2@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-ns-openapi-2': 1.2.2
+ '@swagger-api/apidom-parser-adapter-json': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ optional: true
+
+ '@swagger-api/apidom-parser-adapter-openapi-json-3-0@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-ns-openapi-3-0': 1.2.2
+ '@swagger-api/apidom-parser-adapter-json': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ optional: true
+
+ '@swagger-api/apidom-parser-adapter-openapi-json-3-1@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-ns-openapi-3-1': 1.2.2
+ '@swagger-api/apidom-parser-adapter-json': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ optional: true
+
+ '@swagger-api/apidom-parser-adapter-openapi-yaml-2@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-ns-openapi-2': 1.2.2
+ '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ optional: true
+
+ '@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-ns-openapi-3-0': 1.2.2
+ '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ optional: true
+
+ '@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-ns-openapi-3-1': 1.2.2
+ '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.2.2
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ optional: true
+
+ '@swagger-api/apidom-parser-adapter-yaml-1-2@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-ast': 1.2.2
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-error': 1.2.2
+ '@tree-sitter-grammars/tree-sitter-yaml': 0.7.1(tree-sitter@0.22.4)
+ '@types/ramda': 0.30.2
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ tree-sitter: 0.22.4
+ web-tree-sitter: 0.24.5
+ optional: true
+
+ '@swagger-api/apidom-reference@1.2.2':
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-error': 1.2.2
+ '@types/ramda': 0.30.2
+ axios: 1.13.2
+ minimatch: 7.4.6
+ process: 0.11.10
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ optionalDependencies:
+ '@swagger-api/apidom-json-pointer': 1.2.2
+ '@swagger-api/apidom-ns-arazzo-1': 1.2.2
+ '@swagger-api/apidom-ns-asyncapi-2': 1.2.2
+ '@swagger-api/apidom-ns-openapi-2': 1.2.2
+ '@swagger-api/apidom-ns-openapi-3-0': 1.2.2
+ '@swagger-api/apidom-ns-openapi-3-1': 1.2.2
+ '@swagger-api/apidom-parser-adapter-api-design-systems-json': 1.2.2
+ '@swagger-api/apidom-parser-adapter-api-design-systems-yaml': 1.2.2
+ '@swagger-api/apidom-parser-adapter-arazzo-json-1': 1.2.2
+ '@swagger-api/apidom-parser-adapter-arazzo-yaml-1': 1.2.2
+ '@swagger-api/apidom-parser-adapter-asyncapi-json-2': 1.2.2
+ '@swagger-api/apidom-parser-adapter-asyncapi-json-3': 1.2.2
+ '@swagger-api/apidom-parser-adapter-asyncapi-yaml-2': 1.2.2
+ '@swagger-api/apidom-parser-adapter-asyncapi-yaml-3': 1.2.2
+ '@swagger-api/apidom-parser-adapter-json': 1.2.2
+ '@swagger-api/apidom-parser-adapter-openapi-json-2': 1.2.2
+ '@swagger-api/apidom-parser-adapter-openapi-json-3-0': 1.2.2
+ '@swagger-api/apidom-parser-adapter-openapi-json-3-1': 1.2.2
+ '@swagger-api/apidom-parser-adapter-openapi-yaml-2': 1.2.2
+ '@swagger-api/apidom-parser-adapter-openapi-yaml-3-0': 1.2.2
+ '@swagger-api/apidom-parser-adapter-openapi-yaml-3-1': 1.2.2
+ '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.2.2
+ transitivePeerDependencies:
+ - debug
+
+ '@swaggerexpert/cookie@2.0.2':
+ dependencies:
+ apg-lite: 1.0.5
+
+ '@swaggerexpert/json-pointer@2.10.2':
+ dependencies:
+ apg-lite: 1.0.5
+
'@szmarczak/http-timer@5.0.1':
dependencies:
defer-to-connect: 2.0.1
+ '@tree-sitter-grammars/tree-sitter-yaml@0.7.1(tree-sitter@0.22.4)':
+ dependencies:
+ node-addon-api: 8.5.0
+ node-gyp-build: 4.8.4
+ optionalDependencies:
+ tree-sitter: 0.22.4
+ optional: true
+
'@trysound/sax@0.2.0': {}
'@types/acorn@4.0.6':
@@ -8847,6 +9681,10 @@ snapshots:
'@types/qs@6.9.18': {}
+ '@types/ramda@0.30.2':
+ dependencies:
+ types-ramda: 0.30.1
+
'@types/range-parser@1.2.7': {}
'@types/react-router-config@5.0.11':
@@ -8903,6 +9741,8 @@ snapshots:
'@types/unist@3.0.3': {}
+ '@types/use-sync-external-store@0.0.6': {}
+
'@types/ws@8.18.0':
dependencies:
'@types/node': 22.13.11
@@ -9100,6 +9940,8 @@ snapshots:
normalize-path: 3.0.0
picomatch: 2.3.1
+ apg-lite@1.0.5: {}
+
arg@5.0.2: {}
argparse@1.0.10:
@@ -9135,8 +9977,14 @@ snapshots:
async@3.2.6: {}
+ asynckit@0.4.0: {}
+
at-least-node@1.0.0: {}
+ autolinker@3.16.2:
+ dependencies:
+ tslib: 2.8.1
+
autoprefixer@10.4.21(postcss@8.5.3):
dependencies:
browserslist: 4.24.4
@@ -9151,6 +9999,14 @@ snapshots:
dependencies:
possible-typed-array-names: 1.1.0
+ axios@1.13.2:
+ dependencies:
+ follow-redirects: 1.15.9
+ form-data: 4.0.5
+ proxy-from-env: 1.1.0
+ transitivePeerDependencies:
+ - debug
+
babel-loader@9.2.1(@babel/core@7.26.10)(webpack@5.98.0):
dependencies:
'@babel/core': 7.26.10
@@ -9190,6 +10046,8 @@ snapshots:
balanced-match@1.0.2: {}
+ base64-js@1.5.1: {}
+
batch@0.6.1: {}
big.js@5.2.2: {}
@@ -9264,6 +10122,11 @@ snapshots:
buffer-from@1.1.2: {}
+ buffer@6.0.3:
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+
bytes@3.0.0: {}
bytes@3.1.2: {}
@@ -9375,6 +10238,8 @@ snapshots:
ci-info@3.9.0: {}
+ classnames@2.5.1: {}
+
clean-css@5.3.3:
dependencies:
source-map: 0.6.1
@@ -9416,6 +10281,10 @@ snapshots:
combine-promises@1.2.0: {}
+ combined-stream@1.0.8:
+ dependencies:
+ delayed-stream: 1.0.0
+
comma-separated-tokens@2.0.3: {}
commander@10.0.1: {}
@@ -9495,6 +10364,10 @@ snapshots:
copy-text-to-clipboard@3.2.0: {}
+ copy-to-clipboard@3.3.3:
+ dependencies:
+ toggle-selection: 1.0.6
+
copy-webpack-plugin@11.0.0(webpack@5.98.0):
dependencies:
fast-glob: 3.3.3
@@ -9511,6 +10384,8 @@ snapshots:
core-js-pure@3.41.0: {}
+ core-js-pure@3.47.0: {}
+
core-js@3.41.0: {}
core-util-is@1.0.3: {}
@@ -9710,6 +10585,8 @@ snapshots:
css-what@6.1.0: {}
+ css.escape@1.5.1: {}
+
cssdb@8.2.4: {}
cssesc@3.0.0: {}
@@ -10031,6 +10908,8 @@ snapshots:
dependencies:
robust-predicates: 3.0.2
+ delayed-stream@1.0.0: {}
+
depd@1.1.2: {}
depd@2.0.0: {}
@@ -10097,6 +10976,10 @@ snapshots:
dompurify@3.1.6: {}
+ dompurify@3.2.6:
+ optionalDependencies:
+ '@types/trusted-types': 2.0.7
+
domutils@2.8.0:
dependencies:
dom-serializer: 1.4.1
@@ -10118,6 +11001,8 @@ snapshots:
dependencies:
is-obj: 2.0.0
+ drange@1.1.1: {}
+
dunder-proto@1.0.1:
dependencies:
call-bind-apply-helpers: 1.0.2
@@ -10413,6 +11298,8 @@ snapshots:
dependencies:
fast-deep-equal: 2.0.1
+ fast-json-patch@3.1.1: {}
+
fast-json-stable-stringify@2.1.0: {}
fast-uri@3.0.6: {}
@@ -10421,6 +11308,10 @@ snapshots:
dependencies:
reusify: 1.1.0
+ fault@1.0.4:
+ dependencies:
+ format: 0.2.2
+
fault@2.0.1:
dependencies:
format: 0.2.2
@@ -10534,6 +11425,14 @@ snapshots:
form-data-encoder@2.1.4: {}
+ form-data@4.0.5:
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ es-set-tostringtag: 2.1.0
+ hasown: 2.0.2
+ mime-types: 2.1.35
+
format@0.2.2: {}
forwarded@0.2.0: {}
@@ -10835,6 +11734,10 @@ snapshots:
he@1.2.0: {}
+ highlight.js@10.7.3: {}
+
+ highlightjs-vue@1.0.0: {}
+
history@4.10.1:
dependencies:
'@babel/runtime': 7.26.10
@@ -10969,6 +11872,8 @@ snapshots:
idb@7.1.1: {}
+ ieee754@1.2.1: {}
+
ignore@5.3.2: {}
image-size@1.2.0:
@@ -10977,6 +11882,8 @@ snapshots:
immer@9.0.21: {}
+ immutable@3.8.2: {}
+
import-fresh@3.3.1:
dependencies:
parent-module: 1.0.1
@@ -11257,6 +12164,8 @@ snapshots:
'@sideway/formula': 3.0.1
'@sideway/pinpoint': 2.0.0
+ js-file-download@0.4.12: {}
+
js-tokens@4.0.0: {}
js-yaml@3.14.1:
@@ -11268,6 +12177,10 @@ snapshots:
dependencies:
argparse: 2.0.1
+ js-yaml@4.1.1:
+ dependencies:
+ argparse: 2.0.1
+
jsesc@3.0.2: {}
jsesc@3.1.0: {}
@@ -11382,6 +12295,11 @@ snapshots:
lowercase-keys@3.0.0: {}
+ lowlight@1.20.0:
+ dependencies:
+ fault: 1.0.4
+ highlight.js: 10.7.3
+
lru-cache@10.4.3: {}
lru-cache@5.1.1:
@@ -12133,6 +13051,10 @@ snapshots:
tapable: 2.2.1
webpack: 5.98.0
+ minim@0.23.8:
+ dependencies:
+ lodash: 4.17.21
+
minimalistic-assert@1.0.1: {}
minimatch@3.1.2:
@@ -12143,6 +13065,10 @@ snapshots:
dependencies:
brace-expansion: 2.0.1
+ minimatch@7.4.6:
+ dependencies:
+ brace-expansion: 2.0.1
+
minimatch@9.0.5:
dependencies:
brace-expansion: 2.0.1
@@ -12172,11 +13098,20 @@ snapshots:
neo-async@2.6.2: {}
+ neotraverse@0.6.18: {}
+
no-case@3.0.4:
dependencies:
lower-case: 2.0.2
tslib: 2.8.1
+ node-abort-controller@3.1.1: {}
+
+ node-addon-api@8.5.0:
+ optional: true
+
+ node-domexception@1.0.0: {}
+
node-emoji@2.2.0:
dependencies:
'@sindresorhus/is': 4.6.0
@@ -12184,8 +13119,16 @@ snapshots:
emojilib: 2.4.0
skin-tone: 2.0.0
+ node-fetch-commonjs@3.3.2:
+ dependencies:
+ node-domexception: 1.0.0
+ web-streams-polyfill: 3.3.3
+
node-forge@1.3.1: {}
+ node-gyp-build@4.8.4:
+ optional: true
+
node-releases@2.0.19: {}
non-layered-tidy-tree-layout@2.0.2: {}
@@ -12249,6 +13192,14 @@ snapshots:
is-docker: 2.2.1
is-wsl: 2.2.0
+ openapi-path-templating@2.2.1:
+ dependencies:
+ apg-lite: 1.0.5
+
+ openapi-server-url-templating@1.3.0:
+ dependencies:
+ apg-lite: 1.0.5
+
opener@1.5.2: {}
own-keys@1.0.1:
@@ -12846,6 +13797,8 @@ snapshots:
process-nextick-args@2.0.1: {}
+ process@0.11.10: {}
+
prompts@2.4.2:
dependencies:
kleur: 3.0.3
@@ -12868,6 +13821,8 @@ snapshots:
forwarded: 0.2.0
ipaddr.js: 1.9.1
+ proxy-from-env@1.1.0: {}
+
punycode.js@2.3.1: {}
punycode@2.3.1: {}
@@ -12880,6 +13835,8 @@ snapshots:
dependencies:
side-channel: 1.1.0
+ querystringify@2.2.0: {}
+
queue-microtask@1.2.3: {}
queue@6.0.2:
@@ -12888,6 +13845,17 @@ snapshots:
quick-lru@5.1.1: {}
+ ramda-adjunct@5.1.0(ramda@0.30.1):
+ dependencies:
+ ramda: 0.30.1
+
+ ramda@0.30.1: {}
+
+ randexp@0.5.3:
+ dependencies:
+ drange: 1.1.1
+ ret: 0.2.2
+
randombytes@2.1.0:
dependencies:
safe-buffer: 5.2.1
@@ -12915,6 +13883,18 @@ snapshots:
prop-types: 15.8.1
react: 18.3.1
+ react-copy-to-clipboard@5.1.0(react@18.3.1):
+ dependencies:
+ copy-to-clipboard: 3.3.3
+ prop-types: 15.8.1
+ react: 18.3.1
+
+ react-debounce-input@3.3.0(react@18.3.1):
+ dependencies:
+ lodash.debounce: 4.0.8
+ prop-types: 15.8.1
+ react: 18.3.1
+
react-dev-utils@12.0.1(typescript@5.8.2)(webpack@5.98.0):
dependencies:
'@babel/code-frame': 7.26.2
@@ -12959,6 +13939,21 @@ snapshots:
react-fast-compare@3.2.2: {}
+ react-immutable-proptypes@2.2.0(immutable@3.8.2):
+ dependencies:
+ immutable: 3.8.2
+ invariant: 2.2.4
+
+ react-immutable-pure-component@2.2.2(immutable@3.8.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ dependencies:
+ immutable: 3.8.2
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+
+ react-inspector@6.0.2(react@18.3.1):
+ dependencies:
+ react: 18.3.1
+
react-is@16.13.1: {}
react-json-view-lite@1.5.0(react@18.3.1):
@@ -12971,6 +13966,15 @@ snapshots:
react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)'
webpack: 5.98.0
+ react-redux@9.2.0(@types/react@19.0.12)(react@18.3.1)(redux@5.0.1):
+ dependencies:
+ '@types/use-sync-external-store': 0.0.6
+ react: 18.3.1
+ use-sync-external-store: 1.6.0(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 19.0.12
+ redux: 5.0.1
+
react-router-config@5.1.1(react-router@5.3.4(react@18.3.1))(react@18.3.1):
dependencies:
'@babel/runtime': 7.26.10
@@ -13001,6 +14005,16 @@ snapshots:
tiny-invariant: 1.3.3
tiny-warning: 1.0.3
+ react-syntax-highlighter@16.1.0(react@18.3.1):
+ dependencies:
+ '@babel/runtime': 7.28.6
+ highlight.js: 10.7.3
+ highlightjs-vue: 1.0.0
+ lowlight: 1.20.0
+ prismjs: 1.30.0
+ react: 18.3.1
+ refractor: 5.0.0
+
react@18.3.1:
dependencies:
loose-envify: 1.4.0
@@ -13065,6 +14079,12 @@ snapshots:
dependencies:
minimatch: 3.1.2
+ redux-immutable@4.0.0(immutable@3.8.2):
+ dependencies:
+ immutable: 3.8.2
+
+ redux@5.0.1: {}
+
reflect.getprototypeof@1.0.10:
dependencies:
call-bind: 1.0.8
@@ -13076,6 +14096,13 @@ snapshots:
get-proto: 1.0.1
which-builtin-type: 1.2.1
+ refractor@5.0.0:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/prismjs': 1.26.5
+ hastscript: 9.0.1
+ parse-entities: 4.0.2
+
regenerate-unicode-properties@10.2.0:
dependencies:
regenerate: 1.4.2
@@ -13086,7 +14113,7 @@ snapshots:
regenerator-transform@0.15.2:
dependencies:
- '@babel/runtime': 7.26.10
+ '@babel/runtime': 7.28.6
regexp.prototype.flags@1.5.4:
dependencies:
@@ -13203,6 +14230,11 @@ snapshots:
mdast-util-to-markdown: 2.1.2
unified: 11.0.5
+ remarkable@2.0.1:
+ dependencies:
+ argparse: 1.0.10
+ autolinker: 3.16.2
+
renderkid@3.0.0:
dependencies:
css-select: 4.3.0
@@ -13219,6 +14251,8 @@ snapshots:
requires-port@1.0.0: {}
+ reselect@5.1.1: {}
+
resolve-alpn@1.2.1: {}
resolve-from@4.0.0: {}
@@ -13237,6 +14271,8 @@ snapshots:
dependencies:
lowercase-keys: 3.0.0
+ ret@0.2.2: {}
+
retry@0.13.1: {}
reusify@1.1.0: {}
@@ -13365,6 +14401,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ serialize-error@8.1.0:
+ dependencies:
+ type-fest: 0.20.2
+
serialize-javascript@6.0.2:
dependencies:
randombytes: 2.1.0
@@ -13426,6 +14466,12 @@ snapshots:
setprototypeof@1.2.0: {}
+ sha.js@2.4.12:
+ dependencies:
+ inherits: 2.0.4
+ safe-buffer: 5.2.1
+ to-buffer: 1.2.2
+
shallow-clone@3.0.1:
dependencies:
kind-of: 6.0.3
@@ -13446,6 +14492,8 @@ snapshots:
interpret: 1.4.0
rechoir: 0.6.2
+ short-unique-id@5.3.2: {}
+
side-channel-list@1.0.0:
dependencies:
es-errors: 1.3.0
@@ -13692,6 +14740,71 @@ snapshots:
csso: 5.0.5
picocolors: 1.1.1
+ swagger-client@3.36.0:
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@scarf/scarf': 1.4.0
+ '@swagger-api/apidom-core': 1.2.2
+ '@swagger-api/apidom-error': 1.2.2
+ '@swagger-api/apidom-json-pointer': 1.2.2
+ '@swagger-api/apidom-ns-openapi-3-1': 1.2.2
+ '@swagger-api/apidom-reference': 1.2.2
+ '@swaggerexpert/cookie': 2.0.2
+ deepmerge: 4.3.1
+ fast-json-patch: 3.1.1
+ js-yaml: 4.1.1
+ neotraverse: 0.6.18
+ node-abort-controller: 3.1.1
+ node-fetch-commonjs: 3.3.2
+ openapi-path-templating: 2.2.1
+ openapi-server-url-templating: 1.3.0
+ ramda: 0.30.1
+ ramda-adjunct: 5.1.0(ramda@0.30.1)
+ transitivePeerDependencies:
+ - debug
+
+ swagger-ui-react@5.31.0(@types/react@19.0.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ dependencies:
+ '@babel/runtime-corejs3': 7.28.6
+ '@scarf/scarf': 1.4.0
+ base64-js: 1.5.1
+ buffer: 6.0.3
+ classnames: 2.5.1
+ css.escape: 1.5.1
+ deep-extend: 0.6.0
+ dompurify: 3.2.6
+ ieee754: 1.2.1
+ immutable: 3.8.2
+ js-file-download: 0.4.12
+ js-yaml: 4.1.1
+ lodash: 4.17.21
+ prop-types: 15.8.1
+ randexp: 0.5.3
+ randombytes: 2.1.0
+ react: 18.3.1
+ react-copy-to-clipboard: 5.1.0(react@18.3.1)
+ react-debounce-input: 3.3.0(react@18.3.1)
+ react-dom: 18.3.1(react@18.3.1)
+ react-immutable-proptypes: 2.2.0(immutable@3.8.2)
+ react-immutable-pure-component: 2.2.2(immutable@3.8.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ react-inspector: 6.0.2(react@18.3.1)
+ react-redux: 9.2.0(@types/react@19.0.12)(react@18.3.1)(redux@5.0.1)
+ react-syntax-highlighter: 16.1.0(react@18.3.1)
+ redux: 5.0.1
+ redux-immutable: 4.0.0(immutable@3.8.2)
+ remarkable: 2.0.1
+ reselect: 5.1.1
+ serialize-error: 8.1.0
+ sha.js: 2.4.12
+ swagger-client: 3.36.0
+ url-parse: 1.5.10
+ xml: 1.0.1
+ xml-but-prettier: 1.0.1
+ zenscroll: 4.0.2
+ transitivePeerDependencies:
+ - '@types/react'
+ - debug
+
tapable@1.1.3: {}
tapable@2.2.1: {}
@@ -13734,10 +14847,18 @@ snapshots:
fdir: 6.4.3(picomatch@4.0.2)
picomatch: 4.0.2
+ to-buffer@1.2.2:
+ dependencies:
+ isarray: 2.0.5
+ safe-buffer: 5.2.1
+ typed-array-buffer: 1.0.3
+
to-regex-range@5.0.1:
dependencies:
is-number: 7.0.0
+ toggle-selection@1.0.6: {}
+
toidentifier@1.0.1: {}
totalist@3.0.1: {}
@@ -13746,16 +14867,36 @@ snapshots:
dependencies:
punycode: 2.3.1
+ tree-sitter-json@0.24.8(tree-sitter@0.22.4):
+ dependencies:
+ node-addon-api: 8.5.0
+ node-gyp-build: 4.8.4
+ optionalDependencies:
+ tree-sitter: 0.22.4
+ optional: true
+
+ tree-sitter@0.22.4:
+ dependencies:
+ node-addon-api: 8.5.0
+ node-gyp-build: 4.8.4
+ optional: true
+
trim-lines@3.0.1: {}
trough@2.2.0: {}
ts-dedent@2.2.0: {}
+ ts-mixer@6.0.4: {}
+
+ ts-toolbelt@9.6.0: {}
+
tslib@2.8.1: {}
type-fest@0.16.0: {}
+ type-fest@0.20.2: {}
+
type-fest@0.21.3: {}
type-fest@1.4.0: {}
@@ -13804,6 +14945,10 @@ snapshots:
dependencies:
is-typedarray: 1.0.0
+ types-ramda@0.30.1:
+ dependencies:
+ ts-toolbelt: 9.6.0
+
typescript@5.8.2: {}
uc.micro@2.0.0: {}
@@ -13883,6 +15028,8 @@ snapshots:
unpipe@1.0.0: {}
+ unraw@3.0.0: {}
+
upath@1.2.0: {}
update-browserslist-db@1.1.3(browserslist@4.24.4):
@@ -13921,6 +15068,15 @@ snapshots:
optionalDependencies:
file-loader: 6.2.0(webpack@5.98.0)
+ url-parse@1.5.10:
+ dependencies:
+ querystringify: 2.2.0
+ requires-port: 1.0.0
+
+ use-sync-external-store@1.6.0(react@18.3.1):
+ dependencies:
+ react: 18.3.1
+
util-deprecate@1.0.2: {}
utila@0.4.0: {}
@@ -13974,6 +15130,11 @@ snapshots:
web-namespaces@2.0.1: {}
+ web-streams-polyfill@3.3.3: {}
+
+ web-tree-sitter@0.24.5:
+ optional: true
+
web-worker@1.3.0: {}
webidl-conversions@4.0.2: {}
@@ -14310,10 +15471,16 @@ snapshots:
xdg-basedir@5.1.0: {}
+ xml-but-prettier@1.0.1:
+ dependencies:
+ repeat-string: 1.6.1
+
xml-js@1.6.11:
dependencies:
sax: 1.4.1
+ xml@1.0.1: {}
+
yallist@3.1.1: {}
yaml@1.10.2: {}
@@ -14324,4 +15491,6 @@ snapshots:
yocto-queue@1.2.1: {}
+ zenscroll@4.0.2: {}
+
zwitch@2.0.4: {}
diff --git a/src/components/SwaggerUI/index.js b/src/components/SwaggerUI/index.js
new file mode 100644
index 0000000000..a4a8506a69
--- /dev/null
+++ b/src/components/SwaggerUI/index.js
@@ -0,0 +1,113 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import React, { useState, useRef, useEffect } from 'react';
+import SwaggerUI from 'swagger-ui-react';
+import 'swagger-ui-react/swagger-ui.css';
+import useBaseUrl from '@docusaurus/useBaseUrl';
+import styles from './styles.module.css';
+
+export default function SwaggerUIComponent({ spec, defaultServer }) {
+ const specUrl = useBaseUrl(spec);
+ const [serverUrl, setServerUrl] = useState(defaultServer || 'http://localhost:9888');
+ const [apiVersion, setApiVersion] = useState('v1');
+ const [appliedServerUrl, setAppliedServerUrl] = useState(defaultServer || 'http://localhost:9888');
+ const [appliedApiVersion, setAppliedApiVersion] = useState('v1');
+ const swaggerSystemRef = useRef(null);
+
+ // Update the server URL in Swagger only when applied values change
+ useEffect(() => {
+ if (swaggerSystemRef.current) {
+ const spec = swaggerSystemRef.current.getState().getIn(['spec', 'json']);
+ if (spec) {
+ // Construct full URL: {serverUrl}/api/{version}/
+ const baseUrl = appliedServerUrl.endsWith('/') ? appliedServerUrl.slice(0, -1) : appliedServerUrl;
+ const fullServerUrl = `${baseUrl}/api/${appliedApiVersion}/`;
+ swaggerSystemRef.current.specActions.updateJsonSpec({
+ ...spec.toJS(),
+ servers: [{ url: fullServerUrl, description: 'Configured Recon Server' }]
+ });
+ }
+ }
+ }, [appliedServerUrl, appliedApiVersion]);
+
+ const handleApply = () => {
+ setAppliedServerUrl(serverUrl);
+ setAppliedApiVersion(apiVersion);
+ };
+
+ return (
+
+ );
+}
diff --git a/src/components/SwaggerUI/styles.module.css b/src/components/SwaggerUI/styles.module.css
new file mode 100644
index 0000000000..2f5051cfa1
--- /dev/null
+++ b/src/components/SwaggerUI/styles.module.css
@@ -0,0 +1,533 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+.swaggerWrapper {
+ margin-top: 2rem;
+ margin-bottom: 2rem;
+}
+
+/* Server configuration input */
+.serverConfig {
+ background: var(--ifm-color-primary);
+ border: 1px solid var(--ifm-color-primary-dark);
+ border-radius: 8px;
+ padding: 20px;
+ margin-bottom: 30px;
+ display: none; /* Hidden until CORS is configured on Recon server */
+ align-items: center;
+ gap: 15px;
+ flex-wrap: wrap;
+}
+
+[data-theme='dark'] .serverConfig {
+ background: var(--ifm-color-primary-dark);
+ border-color: var(--ifm-color-primary-darker);
+}
+
+.serverLabel {
+ font-weight: 600;
+ color: #ffffff;
+ font-size: 14px;
+ margin: 0;
+}
+
+[data-theme='dark'] .serverLabel {
+ color: #ffffff;
+}
+
+.serverInput {
+ flex: 1;
+ min-width: 300px;
+ padding: 8px 12px;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ font-size: 14px;
+ font-family: var(--ifm-font-family-monospace);
+ color: var(--ifm-font-color-base);
+ background: var(--ifm-background-color);
+}
+
+[data-theme='dark'] .serverInput {
+ border-color: #444;
+}
+
+.versionInput {
+ width: 100px;
+ padding: 8px 12px;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ font-size: 14px;
+ font-family: var(--ifm-font-family-monospace);
+ color: var(--ifm-font-color-base);
+ background: var(--ifm-background-color);
+}
+
+[data-theme='dark'] .versionInput {
+ border-color: #444;
+}
+
+.applyButton {
+ padding: 8px 20px;
+ background: #ffffff;
+ color: var(--ifm-color-primary-darker);
+ border: 2px solid #ffffff;
+ border-radius: 4px;
+ font-size: 14px;
+ font-weight: 600;
+ cursor: pointer;
+ transition: all 0.2s;
+}
+
+.applyButton:hover {
+ background: transparent;
+ color: #ffffff;
+ border-color: #ffffff;
+}
+
+.applyButton:active {
+ background: rgba(255, 255, 255, 0.2);
+ color: #ffffff;
+}
+
+[data-theme='dark'] .applyButton {
+ background: #ffffff;
+ color: var(--ifm-color-primary-darker);
+ border-color: #ffffff;
+}
+
+[data-theme='dark'] .applyButton:hover {
+ background: transparent;
+ color: #ffffff;
+ border-color: #ffffff;
+}
+
+.serverInput:focus,
+.versionInput:focus {
+ outline: none;
+ border-color: var(--ifm-color-primary);
+ box-shadow: 0 0 0 2px rgba(53, 117, 0, 0.1);
+}
+
+[data-theme='dark'] .serverInput:focus,
+[data-theme='dark'] .versionInput:focus {
+ box-shadow: 0 0 0 2px rgba(150, 210, 110, 0.2);
+}
+
+.serverHint {
+ font-size: 13px;
+ color: #ffffff;
+ font-style: italic;
+ opacity: 0.9;
+}
+
+[data-theme='dark'] .serverHint {
+ color: #ffffff;
+ opacity: 0.9;
+}
+
+/* Remove white bars and extra spacing */
+.swaggerWrapper :global(.swagger-ui .information-container) {
+ margin: 0;
+ padding: 0;
+ background: transparent;
+ display: none !important;
+}
+
+.swaggerWrapper :global(.swagger-ui .scheme-container) {
+ margin: 0;
+ padding: 20px 0;
+ background: transparent;
+ box-shadow: none;
+}
+
+.swaggerWrapper :global(.swagger-ui .info) {
+ margin: 0 0 20px 0;
+ padding: 0;
+ background: transparent;
+ display: none !important;
+}
+
+.swaggerWrapper :global(.swagger-ui .wrapper) {
+ padding: 0;
+}
+
+/* Match Swagger UI with Docusaurus theme */
+.swaggerWrapper :global(.swagger-ui) {
+ font-family: var(--ifm-font-family-base);
+}
+
+/* Match heading fonts */
+.swaggerWrapper :global(.swagger-ui .info .title),
+.swaggerWrapper :global(.swagger-ui h1),
+.swaggerWrapper :global(.swagger-ui h2),
+.swaggerWrapper :global(.swagger-ui h3),
+.swaggerWrapper :global(.swagger-ui h4),
+.swaggerWrapper :global(.swagger-ui h5) {
+ font-family: var(--ifm-heading-font-family);
+ letter-spacing: -0.02em;
+}
+
+/* Make API section headings more readable - match doc heading style */
+.swaggerWrapper :global(.swagger-ui .opblock-tag) {
+ font-family: var(--ifm-heading-font-family) !important;
+ font-size: 1.75rem !important;
+ font-weight: 700 !important;
+ letter-spacing: -0.02em !important;
+ line-height: 1.2 !important;
+ margin: 2rem 0 1rem 0 !important;
+ color: var(--ifm-font-color-base) !important;
+}
+
+/* Style the tag section description text */
+.swaggerWrapper :global(.swagger-ui .opblock-tag-section) {
+ margin-bottom: 2rem;
+}
+
+/* Style the tag description - "APIs to fetch..." text */
+.swaggerWrapper :global(.swagger-ui .opblock-tag small) {
+ font-family: var(--ifm-font-family-base) !important;
+ font-size: 1rem !important;
+ font-weight: 400 !important;
+ color: var(--ifm-color-emphasis-700) !important;
+ letter-spacing: normal !important;
+}
+
+/* Make endpoint paths more readable */
+.swaggerWrapper :global(.swagger-ui .opblock-summary-path) {
+ font-family: var(--ifm-font-family-monospace) !important;
+ font-size: 1rem !important;
+ font-weight: 600 !important;
+}
+
+/* Make endpoint descriptions more readable */
+.swaggerWrapper :global(.swagger-ui .opblock-summary-description) {
+ font-family: var(--ifm-font-family-base) !important;
+ font-size: 0.9375rem !important;
+ line-height: 1.6 !important;
+ color: var(--ifm-color-emphasis-800) !important;
+}
+
+/* Make main title white */
+.swaggerWrapper :global(.swagger-ui .info .title) {
+ color: #ffffff !important;
+ background: var(--ifm-color-primary);
+ padding: 15px 20px;
+ border-radius: 4px;
+}
+
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .info .title) {
+ color: #1a1a1a !important;
+ background: var(--ifm-color-primary);
+}
+
+/* Fix OAS version text visibility */
+.swaggerWrapper :global(.swagger-ui .info .main .version),
+.swaggerWrapper :global(.swagger-ui .info hgroup.main a),
+.swaggerWrapper :global(.swagger-ui .info hgroup.main span) {
+ color: var(--ifm-font-color-base) !important;
+ background: transparent !important;
+}
+
+.swaggerWrapper :global(.swagger-ui select) {
+ color: var(--ifm-font-color-base) !important;
+ background: var(--ifm-background-color) !important;
+}
+
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .info .main .version),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .info hgroup.main a),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .info hgroup.main span) {
+ color: var(--ifm-font-color-base) !important;
+ background: transparent !important;
+}
+
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui select) {
+ color: var(--ifm-font-color-base) !important;
+ background: var(--ifm-background-color) !important;
+}
+
+/* Style the spec file URL to match Apache License (green) */
+.swaggerWrapper :global(.swagger-ui .information-container .info .url) {
+ color: var(--ifm-color-primary) !important;
+ font-size: 14px;
+ font-weight: 400;
+}
+
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .information-container .info .url) {
+ color: var(--ifm-color-primary) !important;
+}
+
+/* Style server URL section to match license */
+.swaggerWrapper :global(.swagger-ui .scheme-container) {
+ background: transparent;
+ padding: 0;
+ margin: 15px 0 20px 0;
+ box-shadow: none;
+ display: none !important;
+}
+
+.swaggerWrapper :global(.swagger-ui .scheme-container .servers-title) {
+ display: none;
+}
+
+.swaggerWrapper :global(.swagger-ui .scheme-container .servers > label) {
+ color: var(--ifm-color-primary) !important;
+ font-size: 14px;
+ font-weight: 400;
+}
+
+.swaggerWrapper :global(.swagger-ui .scheme-container .servers select) {
+ color: var(--ifm-font-color-base) !important;
+ background: var(--ifm-background-color) !important;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ padding: 5px 10px;
+ font-size: 14px;
+}
+
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .scheme-container .servers select) {
+ border-color: #444;
+}
+
+/* Match code/monospace fonts */
+.swaggerWrapper :global(.swagger-ui code),
+.swaggerWrapper :global(.swagger-ui pre) {
+ font-family: var(--ifm-font-family-monospace);
+ font-size: 14px;
+}
+
+/* Match link colors with Docusaurus theme */
+.swaggerWrapper :global(.swagger-ui a) {
+ color: var(--ifm-link-color) !important;
+}
+
+.swaggerWrapper :global(.swagger-ui a:hover) {
+ color: var(--ifm-link-hover-color) !important;
+}
+
+/* Fix link text visibility in response links column */
+.swaggerWrapper :global(.swagger-ui .response-col_links),
+.swaggerWrapper :global(.swagger-ui .response-col_links a),
+.swaggerWrapper :global(.swagger-ui .response-col_links span),
+.swaggerWrapper :global(.swagger-ui .response-col_links .response-undocumented) {
+ color: var(--ifm-font-color-base) !important;
+}
+
+.swaggerWrapper :global(.swagger-ui .response-col_links a) {
+ color: var(--ifm-link-color) !important;
+ text-decoration: underline;
+}
+
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .response-col_links),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .response-col_links a),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .response-col_links span),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .response-col_links .response-undocumented) {
+ color: var(--ifm-font-color-base) !important;
+}
+
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .response-col_links a) {
+ color: var(--ifm-link-color) !important;
+ text-decoration: underline;
+}
+
+/* Match background colors */
+.swaggerWrapper :global(.swagger-ui .wrapper) {
+ background: var(--ifm-background-color);
+}
+
+/* Improve body text readability */
+.swaggerWrapper :global(.swagger-ui p),
+.swaggerWrapper :global(.swagger-ui li),
+.swaggerWrapper :global(.swagger-ui td),
+.swaggerWrapper :global(.swagger-ui th) {
+ font-family: var(--ifm-font-family-base);
+ line-height: 1.6;
+}
+
+/* Improve visibility of ALL grey/muted text */
+.swaggerWrapper :global(.swagger-ui .opblock-description-wrapper p),
+.swaggerWrapper :global(.swagger-ui .opblock-external-docs-wrapper p),
+.swaggerWrapper :global(.swagger-ui .opblock-title_normal p),
+.swaggerWrapper :global(.swagger-ui .parameter__name),
+.swaggerWrapper :global(.swagger-ui .parameter__type),
+.swaggerWrapper :global(.swagger-ui .parameter__in),
+.swaggerWrapper :global(.swagger-ui .prop-type),
+.swaggerWrapper :global(.swagger-ui .prop-format),
+.swaggerWrapper :global(.swagger-ui .response-col_description),
+.swaggerWrapper :global(.swagger-ui .response-col_status),
+.swaggerWrapper :global(.swagger-ui .model),
+.swaggerWrapper :global(.swagger-ui .model-title),
+.swaggerWrapper :global(.swagger-ui table thead tr th),
+.swaggerWrapper :global(.swagger-ui table tbody tr td),
+.swaggerWrapper :global(.swagger-ui .tab li),
+.swaggerWrapper :global(.swagger-ui .renderedMarkdown p),
+.swaggerWrapper :global(.swagger-ui .renderedMarkdown code) {
+ color: var(--ifm-font-color-base) !important;
+}
+
+/* Dark mode text visibility */
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .opblock-description-wrapper p),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .opblock-external-docs-wrapper p),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .opblock-title_normal p),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .parameter__name),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .parameter__type),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .parameter__in),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .prop-type),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .prop-format),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .response-col_description),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .response-col_status),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .model),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .model-title),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui table thead tr th),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui table tbody tr td),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .tab li),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .renderedMarkdown p),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .renderedMarkdown code) {
+ color: var(--ifm-font-color-base) !important;
+}
+
+/* Improve description text visibility */
+.swaggerWrapper :global(.swagger-ui .opblock-summary-description),
+.swaggerWrapper :global(.swagger-ui .opblock-description),
+.swaggerWrapper :global(.swagger-ui .markdown p),
+.swaggerWrapper :global(.swagger-ui .markdown code) {
+ color: var(--ifm-font-color-base) !important;
+}
+
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .opblock-summary-description),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .opblock-description),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .markdown p),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .markdown code) {
+ color: var(--ifm-font-color-base) !important;
+}
+
+/* Fix alignment issues when API is expanded */
+.swaggerWrapper :global(.swagger-ui .opblock-body) {
+ padding: 20px;
+}
+
+.swaggerWrapper :global(.swagger-ui .opblock-section) {
+ padding: 0;
+}
+
+.swaggerWrapper :global(.swagger-ui .opblock-section-header) {
+ padding: 15px 20px;
+ margin: 0;
+}
+
+/* Fix table alignment */
+.swaggerWrapper :global(.swagger-ui table) {
+ width: 100%;
+ margin: 0;
+}
+
+.swaggerWrapper :global(.swagger-ui .table-container) {
+ padding: 0;
+ margin: 0;
+}
+
+/* Fix parameter table alignment - ALL columns */
+.swaggerWrapper :global(.swagger-ui .parameters-col_name),
+.swaggerWrapper :global(.swagger-ui .parameters-col_description),
+.swaggerWrapper :global(.swagger-ui table.parameters tbody tr td) {
+ text-align: left !important;
+ padding: 12px 20px !important;
+}
+
+.swaggerWrapper :global(.swagger-ui table.parameters thead tr th) {
+ text-align: left !important;
+ padding: 12px 20px !important;
+}
+
+/* Make Parameters and Responses headers black in both modes */
+.swaggerWrapper :global(.swagger-ui .opblock-section-header h4),
+.swaggerWrapper :global(.swagger-ui .opblock-section-header label) {
+ color: #000000 !important;
+}
+
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .opblock-section-header h4),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui .opblock-section-header label) {
+ color: #000000 !important;
+}
+
+/* Fix response section alignment - ALL columns */
+.swaggerWrapper :global(.swagger-ui .responses-wrapper) {
+ padding: 0;
+}
+
+.swaggerWrapper :global(.swagger-ui .responses-inner) {
+ padding: 20px;
+}
+
+.swaggerWrapper :global(.swagger-ui .response-col_status),
+.swaggerWrapper :global(.swagger-ui .response-col_description),
+.swaggerWrapper :global(.swagger-ui .response-col_links),
+.swaggerWrapper :global(.swagger-ui .responses-table tbody tr td) {
+ text-align: left !important;
+ padding: 12px 20px !important;
+}
+
+.swaggerWrapper :global(.swagger-ui .responses-header th) {
+ text-align: left !important;
+ padding: 12px 20px !important;
+}
+
+/* Fix ALL table cells alignment */
+.swaggerWrapper :global(.swagger-ui table tbody tr td),
+.swaggerWrapper :global(.swagger-ui table thead tr th) {
+ text-align: left !important;
+ padding: 12px 20px !important;
+ vertical-align: top;
+}
+
+/* Fix code block alignment */
+.swaggerWrapper :global(.swagger-ui .highlight-code) {
+ margin: 0;
+ text-align: left;
+}
+
+.swaggerWrapper :global(.swagger-ui .microlight) {
+ text-align: left;
+}
+
+/* Fix input field text visibility in Try it out */
+.swaggerWrapper :global(.swagger-ui input[type="text"]),
+.swaggerWrapper :global(.swagger-ui input[type="number"]),
+.swaggerWrapper :global(.swagger-ui input[type="email"]),
+.swaggerWrapper :global(.swagger-ui input[type="password"]),
+.swaggerWrapper :global(.swagger-ui input[type="search"]),
+.swaggerWrapper :global(.swagger-ui input[type="url"]),
+.swaggerWrapper :global(.swagger-ui textarea),
+.swaggerWrapper :global(.swagger-ui select) {
+ color: var(--ifm-font-color-base) !important;
+ background: var(--ifm-background-color) !important;
+ border: 1px solid #ccc !important;
+}
+
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui input[type="text"]),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui input[type="number"]),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui input[type="email"]),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui input[type="password"]),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui input[type="search"]),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui input[type="url"]),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui textarea),
+[data-theme='dark'] .swaggerWrapper :global(.swagger-ui select) {
+ color: var(--ifm-font-color-base) !important;
+ background: var(--ifm-background-color) !important;
+ border-color: #444 !important;
+}
diff --git a/static/recon-api.yaml b/static/recon-api.yaml
new file mode 100644
index 0000000000..964efb87af
--- /dev/null
+++ b/static/recon-api.yaml
@@ -0,0 +1,2163 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+openapi: 3.0.0
+info:
+ title: Ozone Recon REST API
+ license:
+ url: http://www.apache.org/licenses/LICENSE-2.0.html
+ name: Apache 2.0 License
+servers:
+ - url: /api/v1/
+tags:
+ - name: Containers
+ description: APIs to fetch information about the available containers. **Admin Only**
+ - name: Volumes
+ description: APIs to fetch information about the available volumes. **Admin Only**
+ - name: Buckets
+ description: APIs to fetch information about the available buckets. **Admin Only**
+ - name: Keys
+ description: APIs to fetch information about the available keys. **Admin Only**
+ - name: Containers and Keys
+ description: APIs to fetch information about the available containers and keys. **Admin Only**
+ - name: Blocks Metadata
+ description: APIs to fetch metadata for the blocks available. **Admin Only**
+ - name: Namespace Metadata
+ description: APIs to fetch metadata for the namespace. **Admin Only**
+ - name: Cluster State
+ description: APIs to fetch data about the cluster state
+ - name: Datanodes
+ description: APIs to fetch data about the Datanodes
+ - name: Pipelines
+ description: APIs to fetch data about the Pipelines
+ - name: Tasks
+ description: APIs to fetch data about status of Recon Tasks
+ - name: Utilization
+ description: APIs to fetch data about space utilization
+ - name: Metrics
+ description: APIs to fetch data about various metrics from Prometheus
+ externalDocs:
+ description: Prometheus API docs
+ url: https://prometheus.io/docs/prometheus/latest/querying/api/
+paths:
+ /containers:
+ get:
+ tags:
+ - Containers
+ summary: Get all Container Metadata information
+ operationId: getContainerInfo
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ContainerMetadata'
+ /containers/deleted:
+ get:
+ tags:
+ - Containers
+ summary: Return all DELETED containers in SCM
+ operationId: getSCMDeletedContainers
+ responses:
+ 200:
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/DeletedContainers'
+ /containers/missing:
+ get:
+ tags:
+ - Containers
+ summary: Get the MissingContainerMetadata for all missing containers
+ operationId: getMissingContainers
+ parameters:
+ - name: limit
+ in: query
+ description: Limit of the number of results returned
+ required: false
+ schema:
+ type: integer
+ default: 1000
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/MissingContainerMetadata'
+ /containers/{id}/replicaHistory:
+ get:
+ tags:
+ - Containers
+ summary: Get all the Replica history for a given container id
+ operationId: getReplicaHistoryForContainer
+ parameters:
+ - name: id
+ in: path
+ description: ID of the container for which we want ContainerHistory
+ required: true
+ schema:
+ type: integer
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/ReplicaHistory'
+ /containers/unhealthy:
+ get:
+ tags:
+ - Containers
+ summary: Get UnhealthyContainerMetadata for all the unhealthy containers
+ operationId: getUnhealthyContainers
+ parameters:
+ - name: batchNum
+ in: query
+ description: Size of the batch for the result. It will give us results from **(limit + 1) to (2 * limit)**
+ required: false
+ schema:
+ type: integer
+ - name: limit
+ in: query
+ description: Limit of the number of results returned
+ required: false
+ schema:
+ type: integer
+ default: 1000
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/UnhealthyContainerMetadata'
+ /containers/unhealthy/{state}:
+ get:
+ tags:
+ - Containers
+ summary: Returns UnhealthyContainerMetadata for all the unhealthy containers with the specified state
+ operationId: getUnhealthyContainersWithState
+ parameters:
+ - name: state
+ in: path
+ description: State of the container which is one of **MISSING**, **MIS_REPLICATED**, **UNDER_REPLICATED**, **OVER_REPLICATED**
+ required: true
+ schema:
+ type: string
+ example: MISSING
+ - name: batchNum
+ in: query
+ description: Size of the batch for the result. It will give us results from **(limit + 1) to (2 * limit)**
+ required: false
+ schema:
+ type: integer
+ - name: limit
+ in: query
+ description: Limit of the number of results returned
+ required: false
+ schema:
+ type: integer
+ default: 1000
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/UnhealthyContainerMetadata'
+ /containers/mismatch:
+ get:
+ tags:
+ - Containers
+ summary: Returns the list of mis-matched containers between OM and SCM
+ operationId: getContainerMisMatchInsights
+ parameters:
+ - name: prevKey
+ in: query
+ description: Stores the previous key after which to fetch the data
+ required: false
+ schema:
+ type: integer
+ default: 0
+ - name: limit
+ in: query
+ description: Stores the limit for the number of results to fetch
+ required: false
+ schema:
+ type: integer
+ default: 1000
+ - name: missingIn
+ in: query
+ description: Filters by where a given container is missing i.e. in OM or SCM
+ required: false
+ schema:
+ type: string
+ default: SCM
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/MismatchedContainers'
+ /containers/mismatch/deleted:
+ get:
+ tags:
+ - Containers
+ summary: Returns the list of DELETED containers in SCM that are present in OM
+ operationId: getOmContainersDeletedInSCM
+ parameters:
+ - name: prevKey
+ in: query
+ description: Stores the previous key after which to fetch the data
+ required: false
+ schema:
+ type: integer
+ default: 0
+ - name: limit
+ in: query
+ description: Stores the limit for the number of results to fetch
+ required: false
+ schema:
+ type: integer
+ default: 1000
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/DeletedMismatchedContainers'
+ /volumes:
+ get:
+ tags:
+ - Volumes
+ summary: Returns the set of all volumes present
+ operationId: getVolumes
+ parameters:
+ - name: prevKey
+ in: query
+ description: Stores the previous key after which to fetch the data
+ required: false
+ schema:
+ type: string
+ - name: limit
+ in: query
+ description: Stores the limit for the number of results to fetch
+ required: false
+ schema:
+ type: integer
+ default: 1000
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Volumes'
+ /buckets:
+ get:
+ tags:
+ - Buckets
+ summary: Returns the set of all buckets across all volumes
+ operationId: getBuckets
+ parameters:
+ - name: volume
+ in: query
+ description: Stores the name of the volumes whose buckets to fetch
+ required: false
+ schema:
+ type: string
+ - name: prevKey
+ in: query
+ description: Stores the previous key after which to fetch the data
+ required: false
+ schema:
+ type: string
+ - name: limit
+ in: query
+ description: Stores the limit for the number of results to fetch
+ required: false
+ schema:
+ type: integer
+ default: 1000
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Buckets'
+ /keys/open:
+ get:
+ tags:
+ - Keys
+ summary: Returns the set of keys/files which are open
+ operationId: getOpenKeyInfo
+ parameters:
+ - name: prevKey
+ in: query
+ description: Stores the previous key after which to fetch the data.
+ required: false
+ schema:
+ type: string
+ - name: limit
+ in: query
+ description: Stores the limit for the number of results to fetch
+ required: false
+ schema:
+ type: integer
+ default: 1000
+ - name: startPrefix
+ in: query
+ description: Will return keys matching this prefix
+ schema:
+ type: integer
+ - name: includeFso
+ in: query
+ description: Boolean value to determine whether to include FSO keys or not
+ required: false
+ schema:
+ type: boolean
+ default: false
+ - name: includeNonFso
+ in: query
+ description: Boolean value to determine whether to include non-FSO keys or not
+ required: false
+ schema:
+ type: boolean
+ default: false
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/OpenKeys'
+ /keys/open/summary:
+ get:
+ tags:
+ - Keys
+ summary: Returns the summary of all open keys info
+ operationId: getOpenKeySummary
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/OpenKeysSummary'
+
+ /keys/deletePending:
+ get:
+ tags:
+ - Keys
+ summary: Returns the set of keys/files which are pending for deletion
+ operationId: getDeletedKeyInfo
+ parameters:
+ - name: prevKey
+ in: query
+ description: Stores the previous key after which to fetch the data.
+ required: false
+ schema:
+ type: string
+ - name: limit
+ in: query
+ description: Stores the limit for the number of results to fetch
+ required: false
+ schema:
+ type: integer
+ default: 1000
+ - name: startPrefix
+ in: query
+ description: Will return keys matching this prefix
+ schema:
+ type: string
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/DeletePendingKeys'
+ /keys/deletePending/dirs:
+ get:
+ tags:
+ - Keys
+ summary: Returns the set of keys/files which are pending for deletion
+ operationId: getDeletedDirInfo
+ parameters:
+ - name: prevKey
+ in: query
+ description: Stores the previous key after which to fetch the data.
+ required: false
+ schema:
+ type: string
+ - name: limit
+ in: query
+ description: Stores the limit for the number of results to fetch
+ required: false
+ schema:
+ type: integer
+ default: 1000
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/DeletePendingDirs'
+ /keys/deletePending/summary:
+ get:
+ tags:
+ - Keys
+ summary: Returns the summary of all keys pending deletion info
+ operationId: getDeletedKeySummary
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/DeletePendingSummary'
+ /keys/deletePending/dirs/summary:
+ get:
+ tags:
+ - Keys
+ summary: Retrieves the summary of deleted directories.
+ operationId: getDeletedDirectorySummary
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ totalDeletedDirectories:
+ type: integer
+ /containers/{id}/keys:
+ get:
+ tags:
+ - Containers and Keys
+ summary: Get the Key metadata for all keys present in the given container ID
+ operationId: getKeysForContainer
+ parameters:
+ - name: id
+ in: path
+ description: ID of the container for which we want Key Metadata
+ required: true
+ schema:
+ type: integer
+ - name: prevKey
+ in: query
+ description: Only return keys that are present after the given key prevKey prefix
+ required: false
+ schema:
+ type: string
+ - name: limit
+ in: query
+ description: Limit of the number of results returned
+ required: false
+ schema:
+ type: integer
+ default: 1000
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/KeyMetadata'
+ /blocks/deletePending:
+ get:
+ tags:
+ - Blocks Metadata
+ summary: Fetch the list of blocks pending for deletion
+ operationId: getBlocksPendingDeletion
+ parameters:
+ - name: prevKey
+ in: query
+ description: Only returns the list of blocks pending for deletion, that are present after the given block id (prevKey).
+ example: 4
+ required: false
+ schema:
+ type: string
+ - name: limit
+ in: query
+ description: Stores the limit for the number of results to fetch
+ required: false
+ schema:
+ type: integer
+ default: 1000
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/DeletePendingBlocks'
+ /namespace/summary:
+ get:
+ tags:
+ - Namespace Metadata
+ summary: Returns a basic summary of the path, including entity type and aggregate count of objects under the path.
+ operationId: getBasicInfo
+ parameters:
+ - name: path
+ in: query
+ description: The path request in string without any protocol prefix.
+ example: /volume1/bucket1
+ required: true
+ schema:
+ type: string
+ responses:
+ '200':
+ description: |
+ Successful operation
+ #### **Note**:
+ #### status can be either **OK** if path exists else **PATH_NOT_FOUND**
+ #### If **any num parameter is -1**, the path request is not applicable to such an entity type.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/NamespaceMetadataResponse'
+ /namespace/usage:
+ get:
+ tags:
+ - Namespace Metadata
+ summary: Returns namespace usage of all sub-paths under the path.
+ operationId: getDiskUsage
+ parameters:
+ - name: path
+ in: query
+ description: The path request in string without any protocol prefix.
+ example: /volume1/bucket1
+ required: true
+ schema:
+ type: string
+ - name: files
+ in: query
+ description: This boolean has a default value of false. When set to true, it calculates the namespace usage for keys within the specified path and also provides a list of their corresponding sub-paths.
+ example: true
+ required: false
+ schema:
+ type: boolean
+ - name: replica
+ in: query
+ description: A boolean with a default value of false. If set to true, computes namespace usage with replicated size of keys.
+ example: true
+ required: false
+ schema:
+ type: boolean
+ responses:
+ '200':
+ description: |
+ Successful operation
+ #### **Note**:
+ #### The below example response is for the sample endpoint: **namespace/usage?path=/vol1/bucket1&files=true&replica=true**
+ #### status can be either **OK** if path exists else **PATH_NOT_FOUND**
+ #### If files is set to **false**, sub-path **/vol1/bucket1/key1-1 is omitted**.
+ #### If replica is set to **false**, **sizeWithReplica returns -1**.
+ #### If the path’s entity type cannot have direct keys (Root, Volume), sizeDirectKey returns -1.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/MetadataDiskUsage'
+ /namespace/quota:
+ get:
+ tags:
+ - Namespace Metadata
+ summary: Returns the quota allowed and used under the path. Only volumes and buckets have quota. Other types are not applicable to the quota request.
+ operationId: getQuotaUsage
+ parameters:
+ - name: path
+ in: query
+ description: The path request in string without any protocol prefix.
+ example: /volume1/bucket1
+ required: true
+ schema:
+ type: string
+ responses:
+ '200':
+ description: |
+ Successful operation
+ #### **Note**:
+ #### status can be either **OK** if path exists else **PATH_NOT_FOUND**, **TYPE_NOT_APPLICABLE** if path exists, but the path’s entity type is not applicable to the request.
+ #### If **quota is not set, "allowed" returns -1**
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/MetadataQuota'
+ /namespace/dist:
+ get:
+ tags:
+ - Namespace Metadata
+ summary: Returns the file size distribution of all keys under the path.
+ operationId: getFileSizeDistribution
+ parameters:
+ - name: path
+ in: query
+ description: The path request in string without any protocol prefix.
+ example: /
+ required: true
+ schema:
+ type: string
+ responses:
+ '200':
+ description: |
+ Successful operation
+ #### **Note**:
+ #### status can be either **OK** if path exists else **PATH_NOT_FOUND**, **TYPE_NOT_APPLICABLE** if path exists, but the path is a key, which does not have a file size distribution.
+ #### Recon keeps track of all keys with size from **1 KB to 1 PB**.
+ #### For keys **smaller than 1 KB, map to the first bin (index)**, for **keys larger than 1 PB, map to the last bin (index)**.
+ #### Each **index of dist** is mapped to a file size range (e.g. **1 MB - 2 MB**).
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/MetadataSpaceDist'
+ /clusterState:
+ get:
+ tags:
+ - Cluster State
+ summary: Returns the summary of the current state of the Ozone cluster.
+ operationId: getClusterState
+ responses:
+ '200':
+ description: Successful Operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ClusterState'
+ /datanodes:
+ get:
+ tags:
+ - Datanodes
+ summary: Returns all the datanodes in the cluster.
+ operationId: getDatanodes
+ responses:
+ '200':
+ description: Successful Operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/DatanodesSummary'
+ /datanodes/decommission/info:
+ get:
+ tags:
+ - Datanodes
+ summary: Returns all the datanodes in the decommissioning state
+ operationId: getDecommissioningDatanodes
+ responses:
+ '200':
+ description: Successful Operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/DatanodesDecommissionInfo'
+ /datanodes/decommission/info/datanode:
+ get:
+ tags:
+ - Datanodes
+ summary: Returns info of a specific datanode for which decommissioning is initiated
+ operationId: getDecommissionInfoForDatanode
+ parameters:
+ - name: uuid
+ in: query
+ description: The uuid of the datanode being decommissioned.
+ required: false
+ schema:
+ type: string
+ - name: ipAddress
+ in: query
+ description: The ipAddress of the datanode being decommissioned.
+ required: false
+ schema:
+ type: string
+ responses:
+ '200':
+ description: Successful Operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/DatanodesDecommissionInfo'
+ /datanodes/remove:
+ put:
+ tags:
+ - Datanodes
+ summary: Removes datanodes from Recon's memory and nodes table in Recon DB.
+ operationId: removeDatanodes
+ requestBody:
+ description: List of datanodes to be removed
+ required: true
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ type: string
+ responses:
+ '200':
+ description: Successful Operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/RemovedDatanodesResponse'
+
+ /pipelines:
+ get:
+ tags:
+ - Pipelines
+ summary: Returns all the pipelines in the cluster.
+ operationId: getPipelines
+ responses:
+ '200':
+ description: |
+ Successful Operation
+ #### **Note**: The following sample response shows only one pipeline in the array
+ #### but since the pipeline totalCount is 5, there are 4 more pipelines expected in the array
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/PipelinesSummary'
+ /task/status:
+ get:
+ tags:
+ - Tasks
+ summary: Returns the status of all the Recon tasks.
+ operationId: getTaskTimes
+ responses:
+ '200':
+ description: Successful Operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/TasksStatus'
+ /utilization/fileCount:
+ get:
+ tags:
+ - Utilization
+ summary: Returns the file counts within different file ranges with fileSize in the response object being the upper cap for file size range.
+ operationId: getFileCounts
+ parameters:
+ - name: volume
+ in: query
+ description: Filters the results based on the given volume name.
+ example: sampleVol
+ required: false
+ schema:
+ type: string
+ - name: bucket
+ in: query
+ description: Filters the results based on the given bucket name.
+ example: sampleBucket
+ required: false
+ schema:
+ type: string
+ - name: fileSize
+ in: query
+ description: |
+ Filters the results based on the given file size.
+ The smallest file size being tracked for count is 1 KB i.e. 1024 bytes.
+ example: 1024
+ required: false
+ schema:
+ type: number
+ responses:
+ '200':
+ description: Successful Operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FileSizeUtilization'
+ /utilization/containerCount:
+ get:
+ tags:
+ - Utilization
+ summary: Returns the container counts within the given container size.
+ operationId: getContainerCounts
+ parameters:
+ - name: containerSize
+ in: query
+ description: |
+ Filters the results based on the given containerSize.
+ The smallest container size being tracked for count is 512 MB i.e. 512000000 bytes.
+ example: 512000000
+ required: false
+ schema:
+ type: number
+ responses:
+ '200':
+ description: Successful Operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ContainerUtilization'
+ /metrics/query:
+ get:
+ tags:
+ - Metrics
+ summary: This is a proxy endpoint for Prometheus, and helps to fetch different metrics for Ozone
+ operationId: getMetricsResponse
+ parameters:
+ - name: query
+ in: query
+ description: The query in a Prometheus query format for which to fetch results
+ example: ratis_leader_election_electionCount
+ required: true
+ schema:
+ type: string
+ allowReserved: true
+ responses:
+ '200':
+ description: Successful Operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/MetricsQuery'
+components:
+ schemas:
+ Volumes:
+ type: object
+ properties:
+ totalCount:
+ type: integer
+ volumes:
+ type: array
+ items:
+ type: object
+ properties:
+ metadata:
+ type: object
+ name:
+ type: string
+ quotaInBytes:
+ type: integer
+ quotaInNamespace:
+ type: integer
+ usedNamespace:
+ type: integer
+ creationTime:
+ type: integer
+ modificationTime:
+ type: integer
+ acls:
+ $ref: "#/components/schemas/ACL"
+ admin:
+ type: string
+ owner:
+ type: string
+ volume:
+ type: string
+ Buckets:
+ type: object
+ properties:
+ totalCount:
+ type: integer
+ buckets:
+ type: array
+ items:
+ type: object
+ properties:
+ versioningEnabled:
+ type: boolean
+ metadata:
+ type: object
+ name:
+ type: string
+ quotaInBytes:
+ type: integer
+ quotaInNamespace:
+ type: integer
+ usedNamespace:
+ type: integer
+ creationTime:
+ type: integer
+ modificationTime:
+ type: integer
+ acls:
+ $ref: "#/components/schemas/ACL"
+ volumeName:
+ type: string
+ storageType:
+ type: string
+ versioning:
+ type: boolean
+ usedBytes:
+ type: integer
+ encryptionInfo:
+ type: object
+ properties:
+ version:
+ type: string
+ suite:
+ type: string
+ keyName:
+ type: string
+ replicationConfigInfo:
+ type: object
+ nullable: true
+ sourceVolume:
+ type: string
+ nullable: true
+ sourceBucket:
+ type: string
+ nullable: true
+ bucketLayout:
+ type: string
+ owner:
+ type: string
+ ContainerMetadata:
+ type: object
+ properties:
+ data:
+ type: object
+ properties:
+ totalCount:
+ type: integer
+ example: 3
+ prevKey:
+ type: integer
+ example: 3019
+ containers:
+ type: array
+ items:
+ type: object
+ properties:
+ ContainerID:
+ type: integer
+ example: 1
+ NumberOfKeys:
+ type: integer
+ example: 834
+ pipelines:
+ type: string
+ nullable: true
+ xml:
+ name: containerMetadata
+ example:
+ - ContainerID: 1
+ NumberOfKeys: 834
+ pipelines: null
+ - ContainerID: 2
+ NumberOfKeys: 833
+ pipelines: null
+ - ContainerID: 3
+ NumberOfKeys: 833
+ pipelines: null
+ xml:
+ name: containerMetadataResponse
+ DeletedContainers:
+ type: array
+ items:
+ type: object
+ properties:
+ containerId:
+ type: integer
+ pipelineId:
+ type: object
+ properties:
+ id:
+ type: string
+ containerState:
+ type: string
+ stateEnterTime:
+ type: integer
+ lastUsed:
+ type: integer
+ replicationConfig:
+ type: object
+ properties:
+ replicationType:
+ type: string
+ replicationFactor:
+ type: string
+ replicationNodes:
+ type: integer
+ replicationFactor:
+ type: string
+ KeyMetadata:
+ type: object
+ properties:
+ totalCount:
+ type: integer
+ example: 7
+ lastKey:
+ type: string
+ example: /vol1/buck1/file1
+ keys:
+ type: array
+ items:
+ type: object
+ properties:
+ Volume:
+ type: string
+ example: vol-1-73141
+ Bucket:
+ type: string
+ example: bucket-3-35816
+ Key:
+ type: string
+ example: key-0-43637
+ CompletePath:
+ type: string
+ example: /vol1/buck1/dir1/dir2/file1
+ DataSize:
+ type: integer
+ example: 1000
+ Versions:
+ type: array
+ items:
+ type: integer
+ example: [0]
+ Blocks:
+ type: object
+ properties:
+ 0:
+ type: array
+ items:
+ type: object
+ properties:
+ containerID:
+ type: integer
+ localID:
+ type: number
+ example:
+ - containerID: 1
+ localID: 105232659753992201
+ CreationTime:
+ type: string
+ format: date-time
+ example: 2020-11-18T18:09:17.722Z
+ ModificationTime:
+ type: string
+ format: date-time
+ example: 2020-11-18T18:09:30.405Z
+ ReplicaHistory:
+ type: object
+ properties:
+ containerID:
+ type: integer
+ example: 1
+ datanodeUuid:
+ type: string
+ example: 841be80f-0454-47df-b676
+ datanodeHost:
+ type: string
+ example: localhost-1
+ firstSeenTime:
+ type: number
+ example: 1605724047057
+ lastSeenTime:
+ type: number
+ example: 1605731201301
+ lastBcsId:
+ type: integer
+ example: 123
+ state:
+ type: string
+ example: OPEN
+ MissingContainerMetadata:
+ type: object
+ properties:
+ totalCount:
+ type: integer
+ example: 26
+ containers:
+ type: array
+ items:
+ type: object
+ properties:
+ containerID:
+ type: integer
+ example: 1
+ missingSince:
+ type: number
+ example: 1605731029145
+ keys:
+ type: integer
+ example: 7
+ pipelineID:
+ type: string
+ example: 88646d32-a1aa-4e1a
+ replicas:
+ type: array
+ items:
+ $ref: "#/components/schemas/ReplicaHistory"
+ UnhealthyContainerMetadata:
+ type: object
+ properties:
+ missingCount:
+ type: integer
+ example: 2
+ underReplicatedCount:
+ type: integer
+ example: 0
+ overReplicatedCount:
+ type: integer
+ example: 0
+ misReplicatedCount:
+ type: integer
+ example: 0
+ containers:
+ type: array
+ items:
+ type: object
+ properties:
+ containerID:
+ type: integer
+ example: 1
+ containerState:
+ type: string
+ example: MISSING
+ unhealthySince:
+ type: number
+ example: 1605731029145
+ expectedReplicaCount:
+ type: integer
+ example: 3
+ actualReplicaCount:
+ type: integer
+ example: 0
+ replicaDeltaCount:
+ type: integer
+ example: 3
+ reason:
+ type: string
+ example: null
+ keys:
+ type: integer
+ example: 7
+ pipelineID:
+ type: string
+ example: 88646d32-a1aa-4e1a
+ replicas:
+ type: array
+ items:
+ $ref: "#/components/schemas/ReplicaHistory"
+ MismatchedContainers:
+ type: object
+ properties:
+ lastKey:
+ type: integer
+ example: 21
+ containerDiscrepancyInfo:
+ type: array
+ items:
+ type: object
+ properties:
+ containerId:
+ type: integer
+ example: 11
+ numberOfKeys:
+ type: integer
+ example: 1
+ pipelines:
+ type: array
+ items:
+ type: object
+ properties:
+ id:
+ type: object
+ properties:
+ id:
+ type: string
+ example: 1202e6bb-b7c1-4a85-8067-61374b069adb
+ replicationConfig:
+ type: object
+ properties:
+ replicationFactor:
+ type: string
+ example: THREE
+ requiredNodes:
+ type: integer
+ example: 3
+ replicationType:
+ type: string
+ example: RATIS
+ healthy:
+ type: boolean
+ example: true
+ existsAt:
+ type: string
+ example: OM
+ example:
+ - containerId: 2
+ numberOfKeys: 2
+ pipelines:
+ - id:
+ id: 1202e6bb-b7c1-4a85-8067-61374b069adb
+ replicationConfig:
+ replicationFactor: ONE
+ requiredNodes: 1
+ replicationType: RATIS
+ healthy: true
+ existsAt: OM
+ - containerId: 11
+ numberOfKeys: 2
+ pipelines:
+ - id:
+ id: 1202e6bb-b7c1-4a85-8067-61374b069adb
+ replicationConfig:
+ replicationFactor: TWO
+ requiredNodes: 2
+ replicationType: RATIS
+ healthy: true
+ - id:
+ id: 1202e6bb-b7c1-4a85-8067-613724nn
+ replicationConfig:
+ replicationFactor: ONE
+ requiredNodes: 1
+ replicationType: RATIS
+ healthy: true
+ existsAt: SCM
+ DeletedMismatchedContainers:
+ type: object
+ properties:
+ lastKey:
+ type: integer
+ example: 21
+ containerDiscrepancyInfo:
+ type: array
+ items:
+ type: object
+ properties:
+ containerId:
+ type: integer
+ example: 11
+ numberOfKeys:
+ type: integer
+ example: 1
+ pipelines:
+ type: array
+ items:
+ type: object
+ properties:
+ id:
+ type: object
+ properties:
+ id:
+ type: string
+ example: 1202e6bb-b7c1-4a85-8067-61374b069adb
+ replicationConfig:
+ type: object
+ properties:
+ replicationFactor:
+ type: string
+ example: THREE
+ requiredNodes:
+ type: integer
+ example: 3
+ replicationType:
+ type: string
+ example: RATIS
+ healthy:
+ type: boolean
+ example: true
+ existsAt:
+ type: string
+ example: OM
+ example:
+ - containerId: 2
+ numberOfKeys: 2
+ pipelines:
+ - id:
+ id: 1202e6bb-b7c1-4a85-8067-61374b069adb
+ replicationConfig:
+ replicationFactor: ONE
+ requiredNodes: 1
+ replicationType: RATIS
+ healthy: true
+ - containerId: 11
+ numberOfKeys: 2
+ pipelines:
+ - id:
+ id: 1202e6bb-b7c1-4a85-8067-61374b069adb
+ replicationConfig:
+ replicationFactor: TWO
+ requiredNodes: 2
+ replicationType: RATIS
+ healthy: true
+ - id:
+ id: 1202e6bb-b7c1-4a85-8067-613724nn
+ replicationConfig:
+ replicationFactor: ONE
+ requiredNodes: 1
+ replicationType: RATIS
+ healthy: true
+ OpenKeysSummary:
+ type: object
+ properties:
+ totalUnreplicatedDataSize:
+ type: integer
+ totalReplicatedDataSize:
+ type: integer
+ totalOpenKeys:
+ type: integer
+ OpenKeys:
+ type: object
+ required: ['lastKey', 'replicatedDataSize', 'unreplicatedDataSize', 'status']
+ properties:
+ lastKey:
+ type: string
+ example: /vol1/fso-bucket/dir1/dir2/file2
+ replicatedDataSize:
+ type: integer
+ example: 13824
+ unreplicatedDataSize:
+ type: integer
+ example: 4608
+ status:
+ type: string
+ fso:
+ type: array
+ items:
+ type: object
+ properties:
+ path:
+ type: string
+ key:
+ type: string
+ inStateSince:
+ type: number
+ size:
+ type: integer
+ replicatedSize:
+ type: integer
+ replicationInfo:
+ type: object
+ properties:
+ replicationFactor:
+ type: string
+ example: THREE
+ requiredNodes:
+ type: integer
+ example: 3
+ replicationType:
+ type: string
+ example: RATIS
+ creationTime:
+ type: integer
+ modificationTime:
+ type: integer
+ isKey:
+ type: boolean
+ nonFSO:
+ type: array
+ items:
+ type: object
+ properties:
+ path:
+ type: string
+ key:
+ type: string
+ inStateSince:
+ type: number
+ size:
+ type: integer
+ replicatedSize:
+ type: integer
+ replicationInfo:
+ type: object
+ properties:
+ replicationFactor:
+ type: string
+ example: THREE
+ requiredNodes:
+ type: integer
+ example: 3
+ replicationType:
+ type: string
+ example: RATIS
+ creationTime:
+ type: integer
+ modificationTime:
+ type: integer
+ isKey:
+ type: boolean
+ OMKeyInfoList:
+ type: array
+ items:
+ type: object
+ properties:
+ metadata:
+ type: object
+ objectID:
+ type: number
+ updateID:
+ type: number
+ parentObjectID:
+ type: number
+ volumeName:
+ type: string
+ bucketName:
+ type: string
+ keyName:
+ type: string
+ dataSize:
+ type: number
+ keyLocationVersions:
+ type: array
+ items:
+ $ref: "#/components/schemas/VersionLocation"
+ creationTime:
+ type: number
+ modificationTime:
+ type: number
+ replicationConfig:
+ type: object
+ properties:
+ replicationFactor:
+ type: string
+ requiredNodes:
+ type: integer
+ replicationType:
+ type: string
+ fileChecksum:
+ type: number
+ nullable: true
+ fileName:
+ type: string
+ ownerName:
+ type: string
+ acls:
+ $ref: "#/components/schemas/ACL"
+ tags:
+ type: object
+ expectedDataGeneration:
+ type: string
+ nullable: true
+ file:
+ type: boolean
+ path:
+ type: string
+ generation:
+ type: integer
+ replicatedSize:
+ type: number
+ fileEncryptionInfo:
+ type: string
+ nullable: true
+ objectInfo:
+ type: string
+ latestVersionLocations:
+ $ref: "#/components/schemas/VersionLocation"
+ hsync:
+ type: boolean
+ VersionLocation:
+ type: object
+ properties:
+ version:
+ type: integer
+ locationVersionMap:
+ type: object
+ properties:
+ 0:
+ $ref: "#/components/schemas/LocationList"
+ multipartKey:
+ type: boolean
+ blocksLatestVersionOnly:
+ $ref: "#/components/schemas/LocationList"
+ locationListCount:
+ type: integer
+ locationLists:
+ type: array
+ items:
+ $ref: "#/components/schemas/LocationList"
+ locationList:
+ $ref: "#/components/schemas/LocationList"
+ LocationList:
+ type: array
+ items:
+ type: object
+ properties:
+ blockID:
+ type: object
+ properties:
+ containerBlockID:
+ type: object
+ properties:
+ containerID:
+ type: integer
+ localID:
+ type: integer
+ blockCommitSequenceID:
+ type: integer
+ replicaIndex:
+ type: integer
+ nullable: true
+ containerID:
+ type: integer
+ localID:
+ type: integer
+ length:
+ type: integer
+ offset:
+ type: integer
+ token:
+ type: string
+ nullable: true
+ createVersion:
+ type: integer
+ pipeline:
+ type: string
+ nullable: true
+ partNumber:
+ type: integer
+ underConstruction:
+ type: boolean
+ blockCommitSequenceId:
+ type: integer
+ containerID:
+ type: integer
+ localID:
+ type: integer
+ DeletePendingKeys:
+ type: object
+ properties:
+ lastKey:
+ type: string
+ example: sampleVol/bucketOne/key_one
+ replicatedDataSize:
+ type: number
+ example: 300000000
+ unreplicatedDataSize:
+ type: number
+ example: 100000000
+ deletedKeyInfo:
+ type: array
+ items:
+ type: object
+ properties:
+ omKeyInfoList:
+ $ref: "#/components/schemas/OMKeyInfoList"
+ totalSize:
+ type: object
+ properties:
+ 63:
+ type: integer
+ example: 189
+ status:
+ type: string
+ example: OK
+ DeletePendingSummary:
+ type: object
+ properties:
+ totalUnreplicatedDataSize:
+ type: integer
+ totalReplicatedDataSize:
+ type: integer
+ totalDeletedKeys:
+ type: integer
+ ACL:
+ type: object
+ properties:
+ type:
+ type: string
+ name:
+ type: string
+ aclScope:
+ type: string
+ aclList:
+ type: array
+ items:
+ type: string
+ DeletePendingDirs:
+ type: object
+ properties:
+ lastKey:
+ type: string
+ example: vol1/bucket1/bucket1/dir1
+ replicatedDataSize:
+ type: integer
+ example: 13824
+ unreplicatedDataSize:
+ type: integer
+ example: 4608
+ deletedDirInfo:
+ type: array
+ items:
+ type: object
+ properties:
+ path:
+ type: string
+ key:
+ type: string
+ inStateSince:
+ type: number
+ size:
+ type: integer
+ replicatedSize:
+ type: integer
+ replicationInfo:
+ type: object
+ properties:
+ replicationFactor:
+ type: string
+ example: THREE
+ requiredNodes:
+ type: integer
+ example: 3
+ replicationType:
+ type: string
+ example: RATIS
+ creationTime:
+ type: integer
+ modificationTime:
+ type: integer
+ isKey:
+ type: boolean
+ status:
+ type: string
+ example: OK
+ DeletePendingBlocks:
+ type: object
+ properties:
+ OPEN:
+ type: array
+ items:
+ type: object
+ properties:
+ containerId:
+ type: number
+ example: 100
+ localIDList:
+ type: array
+ items:
+ type: integer
+ example:
+ - 1
+ - 2
+ - 3
+ - 4
+ localIDCount:
+ type: integer
+ example: 4
+ txID:
+ type: number
+ example: 1
+ NamespaceMetadataResponse:
+ type: object
+ properties:
+ status:
+ type: string
+ example: OK
+ type:
+ type: string
+ example: BUCKET
+ numVolume:
+ type: number
+ example: -1
+ numBucket:
+ type: integer
+ example: 100
+ numDir:
+ type: number
+ example: 50
+ numKey:
+ type: number
+ example: 400
+ MetadataDiskUsage:
+ type: object
+ properties:
+ status:
+ type: string
+ example: OK
+ path:
+ type: string
+ example: /vol1/bucket1
+ size:
+ type: number
+ example: 150000
+ sizeWithReplica:
+ type: number
+ example: 450000
+ subPathCount:
+ type: number
+ example: 4
+ subPaths:
+ type: array
+ items:
+ type: object
+ properties:
+ key:
+ type: boolean
+ path:
+ type: string
+ size:
+ type: number
+ sizeWithReplica:
+ type: number
+ isKey:
+ type: boolean
+ example:
+ - key: false
+ path: /vol1/bucket1/dir1-1
+ size: 30000
+ sizeWithReplica: 90000
+ isKey: false
+ - key: false
+ path: /vol1/bucket1/dir1-2
+ size: 30000
+ sizeWithReplica: 90000
+ isKey": false
+ - key: false
+ path: /vol1/bucket1/dir1-3
+ size: 30000
+ sizeWithReplica: 90000
+ isKey": false
+ - key: true
+ path: /vol1/bucket1/key1-1
+ size: 30000
+ sizeWithReplica: 90000
+ isKey": true
+ sizeDirectKey:
+ type: number
+ example: 10000
+ MetadataQuota:
+ type: object
+ properties:
+ status:
+ type: string
+ example: OK
+ allowed:
+ type: number
+ example: 200000
+ used:
+ type: number
+ example: 160000
+ MetadataSpaceDist:
+ type: object
+ properties:
+ status:
+ type: string
+ example: OK
+ dist:
+ type: array
+ items:
+ type: integer
+ example:
+ - 0
+ - 0
+ - 10
+ - 20
+ - 0
+ - 30
+ - 0
+ - 100
+ - 40
+ StorageReport:
+ type: object
+ properties:
+ capacity:
+ type: number
+ example: 270429917184
+ used:
+ type: number
+ example: 358805504
+ remaining:
+ type: number
+ example: 270071111680
+ committed:
+ type: number
+ example: 27007111
+ ClusterState:
+ type: object
+ properties:
+ deletedDirs:
+ type: integer
+ missingContainers:
+ type: integer
+ openContainers:
+ type: integer
+ deletedContainers:
+ type: integer
+ keysPendingDeletion:
+ type: integer
+ scmServiceId:
+ type: string
+ omServiceId:
+ type: string
+ pipelines:
+ type: integer
+ example: 5
+ totalDatanodes:
+ type: integer
+ example: 4
+ healthyDatanodes:
+ type: integer
+ example: 4
+ storageReport:
+ $ref: "#/components/schemas/StorageReport"
+ containers:
+ type: integer
+ example: 26
+ volumes:
+ type: integer
+ example: 6
+ buckets:
+ type: integer
+ example: 26
+ keys:
+ type: integer
+ example: 25
+ DatanodesSummary:
+ type: object
+ properties:
+ totalCount:
+ type: integer
+ example: 4
+ datanodes:
+ type: array
+ items:
+ type: object
+ properties:
+ buildDate:
+ type: string
+ layoutVersion:
+ type: integer
+ networkLocation:
+ type: string
+ opState:
+ type: string
+ revision:
+ type: string
+ setupTime:
+ type: integer
+ version:
+ type: string
+ uuid:
+ type: string
+ example: f8f8cb45-3ab2-4123
+ hostname:
+ type: string
+ example: localhost-1
+ state:
+ type: string
+ example: HEALTHY
+ lastHeartbeat:
+ type: number
+ example: 1605738400544
+ storageReport:
+ $ref: "#/components/schemas/StorageReport"
+ pipelines:
+ type: array
+ items:
+ type: object
+ properties:
+ pipelineID:
+ type: string
+ replicationType:
+ type: string
+ replicationFactor:
+ type: integer
+ leaderNode:
+ type: string
+ example:
+ - pipelineID: b9415b20-b9bd-4225
+ replicationType: RATIS
+ replicationFactor: 3
+ leaderNode: localhost-2
+ - pipelineID: 3bf4a9e9-69cc-4d20
+ replicationType: RATIS
+ replicationFactor: 1
+ leaderNode: localhost-1
+ containers:
+ type: integer
+ example: 17
+ leaderCount:
+ type: integer
+ example: 1
+ RemovedDatanodesResponse:
+ type: object
+ properties:
+ datanodesResponseMap:
+ type: object
+ properties:
+ removedDatanodes:
+ type: object
+ properties:
+ totalCount:
+ type: integer
+ datanodes:
+ type: array
+ items:
+ type: object
+ properties:
+ uuid:
+ type: string
+ hostname:
+ type: string
+ state:
+ type: string
+ pipelines:
+ type: string
+ nullable: true
+ DatanodesDecommissionInfo:
+ type: object
+ properties:
+ DatanodesDecommissionInfo:
+ type: array
+ items:
+ type: object
+ properties:
+ containers:
+ type: object
+ metrics:
+ type: object
+ properties:
+ decommissionStartTime:
+ type: string
+ numOfUnclosedContainers:
+ type: integer
+ numOfUnclosedPipelines:
+ type: integer
+ numOfUnderReplicatedContainers:
+ type: integer
+ nullable: true
+ datanodeDetails:
+ $ref: "#/components/schemas/DatanodeDetails"
+ ByteString:
+ type: object
+ properties:
+ string:
+ type: string
+ bytes:
+ type: object
+ properties:
+ validUtf8:
+ type: boolean
+ empty:
+ type: boolean
+ DatanodeDetails:
+ type: object
+ properties:
+ level:
+ type: integer
+ parent:
+ type: string
+ nullable: true
+ cost:
+ type: integer
+ uuid:
+ type: string
+ uuidString:
+ type: string
+ ipAddress:
+ type: string
+ hostName:
+ type: string
+ ports:
+ type: array
+ items:
+ type: object
+ properties:
+ name:
+ type: string
+ value:
+ type: integer
+ certSerialId:
+ type: integer
+ version:
+ type: string
+ nullable: true
+ setupTime:
+ type: string
+ revision:
+ type: string
+ nullable: true
+ buildDate:
+ type: string
+ nullable: true
+ persistedOpState:
+ type: string
+ persistedOpStateExpiryEpochSec:
+ type: integer
+ initialVersion:
+ type: integer
+ currentVersion:
+ type: integer
+ decommissioned:
+ type: boolean
+ maintenance:
+ type: boolean
+ ipAddressAsByteString:
+ $ref: '#/components/schemas/ByteString'
+ hostNameAsByteString:
+ $ref: '#/components/schemas/ByteString'
+ networkName:
+ type: string
+ networkLocation:
+ type: string
+ networkFullPath:
+ type: string
+ numOfLeaves:
+ type: integer
+ networkNameAsByteString:
+ $ref: '#/components/schemas/ByteString'
+ networkLocationAsByteString:
+ $ref: '#/components/schemas/ByteString'
+ PipelinesSummary:
+ type: object
+ properties:
+ totalCount:
+ type: integer
+ example: 5
+ pipelines:
+ type: array
+ items:
+ type: object
+ properties:
+ pipelineId:
+ type: string
+ example: b9415b20-b9bd-4225
+ status:
+ type: string
+ example: OPEN
+ leaderNode:
+ type: string
+ example: localhost-1
+ datanodes:
+ type: array
+ items:
+ $ref: '#/components/schemas/DatanodeDetails'
+ lastLeaderElection:
+ type: integer
+ example: 0
+ duration:
+ type: number
+ example: 23166128
+ leaderElections:
+ type: integer
+ example: 0
+ replicationType:
+ type: string
+ example: RATIS
+ replicationFactor:
+ type: integer
+ example: 3
+ containers:
+ type: integer
+ example: 3
+ TasksStatus:
+ type: array
+ items:
+ type: object
+ properties:
+ taskName:
+ type: string
+ lastUpdatedTimestamp:
+ type: number
+ lastUpdatedSeqNumber:
+ type: number
+ example:
+ - taskName: OmDeltaRequest
+ lastUpdatedTimestamp: 1605724099147
+ lastUpdatedSeqNumber: 186
+ - taskName: OmDeltaRequest
+ lastUpdatedTimestamp: 1605724103892
+ lastUpdatedSeqNumber: 188
+ FileSizeUtilization:
+ type: array
+ items:
+ type: object
+ properties:
+ volume:
+ type: string
+ bucket:
+ type: string
+ fileSize:
+ type: number
+ count:
+ type: integer
+ example:
+ - volume: vol-2-04168
+ bucket: bucket-0-11685
+ fileSize: 1024
+ count: 1
+ - volume: vol-2-04168
+ bucket: bucket-1-41795
+ fileSize: 1024
+ count: 1
+ - volume: vol-2-04168
+ bucket: bucket-2-93377
+ fileSize: 1024
+ count: 1
+ - volume: vol-2-04168
+ bucket: bucket-3-50336
+ fileSize: 1024
+ count: 2
+ ContainerUtilization:
+ type: array
+ items:
+ type: object
+ properties:
+ containerSize:
+ type: number
+ count:
+ type: number
+ example:
+ - containerSize: 2147483648
+ count: 9
+ - containerSize: 1073741824
+ count: 3
+ MetricsQuery:
+ type: object
+ properties:
+ status:
+ type: string
+ example: success
+ data:
+ type: object
+ properties:
+ resultType:
+ type: string
+ example: vector
+ result:
+ type: array
+ items:
+ type: object
+ properties:
+ metric:
+ type: object
+ properties:
+ __name__:
+ type: string
+ example: ratis_leader_election_electionCount
+ exported_instance:
+ type: string
+ example: 33a5ac1d-8c65-4c74-a0b8-9314dfcccb42
+ group:
+ type: string
+ example: group-03CA9397D54B
+ instance:
+ type: string
+ example: ozone_datanode_1:9882
+ job:
+ type: string
+ example: ozone
+ value:
+ oneOf:
+ - type: string
+ - type: number
+ example:
+ - 1599159384.455
+ - "5"